XUF216-512-TQ128 boot failed
Posted: Wed Aug 26, 2020 10:52 am
Hello everyone,
Our board used XUF216-512-TQ128 and it combined flash IS25LQ016B inside, after working some days, very few board boot failed. XTAG dumpstate show below:
xrun: Program received signal ET_ECALL, Application exception.
0xfff005ce in ?? ()
***** Active Cores *****
2 tile[1] core[0] 0xfff00518 in ?? ()
* 1 tile[0] core[0] 0xfff005ce in ?? ()
Thread 2 (tile[1] core[0]):
***** Call Stack *****
#0 0xfff00518 in ?? ()
***** Disassembly *****
0xfff00518: in (2r) r1, res[r6] *
0xfff0051a: setd (r2r) res[r6], r1
0xfff0051c: in (2r) r2, res[r6] *
0xfff0051e: ldw (ru6) r4, dp[0x0]
0xfff00520: mkmsk (rus) r5, 0x20
***** Registers *****
r0 0x0 0
r1 0x0 0
r2 0x0 0
r3 0x40000 262144
r4 0x200100 2097408
r5 0x100200 1049088
r6 0x10002 65538
r7 0x80a 2058
r8 0x0 0
r9 0x10023 65571
r10 0x3 3
r11 0x40b 1035
cp 0x0 0
dp 0xfff01eb0 -1040720
sp 0x7ff7c 524156
lr 0xfff00342 -1047742
pc 0xfff00518 -1047272
sr 0x40 64
spc 0x0 0
ssr 0x0 0
et 0x0 0
ed 0x0 0
sed 0x0 0
kep 0xfff00400 -1047552
ksp 0xfff00518 -1047272
Thread 1 (tile[0] core[0]):
***** Call Stack *****
#0 0xfff005ce in ?? ()
***** Disassembly *****
0xfff005ce: ecallt (1r) r7
0xfff005d0: ldc (ru6) r11, 0x1
0xfff005d2: out (r2r) res[r1], r11 *
0xfff005d4: syncr (1r) res[r1] *
0xfff005d6: setc (ru6) res[r0], 0x0 *
***** Registers *****
r0 0x10100 65792
r1 0x10000 65536
r2 0x40100 262400
r3 0x106 262
r4 0x40000 262144
r5 0xd15ab1e 219523870
r6 0xedb88320 -306674912
r7 0x6522df69 1696784233
r8 0x0 0
r9 0x23 35
r10 0x6 6
r11 0x0 0
cp 0x0 0
dp 0xfff01eb0 -1040720
sp 0x7ff7c 524156
lr 0xfff00342 -1047742
pc 0xfff005ce -1047090
sr 0x51 81
spc 0xfff005ce -1047090
ssr 0x0 0
et 0x8 8
ed 0x0 0
sed 0x0 0
kep 0xfff00400 -1047552
ksp 0xfff00402 -1047550
ksp 0xfff00402 -1047550
This is CRC error, but actually image in flash is correct, we dumped all flash and compared it. After flash dumped, the board can work well again, the board was repaired. We guest that QE bit was wrong in flash, we know flash in XUF216 should be in qual bit mode. We write some code to read the QE bit via QSPI port(not quadflashlib), and used xTime IDE run it on other bad board, found the QE equal zero. Then we write another codes fixed QE bit, the bad board was repaired.
My questions are:
1. Why the QE bit has been cleared ? Our code just called quadflashlib.
2. Under the case, how xcore can fix the QE error, I know ROM is unchangable, how about fix QE error in AES loader, that can be burned into OTP.
Thanks!
Our board used XUF216-512-TQ128 and it combined flash IS25LQ016B inside, after working some days, very few board boot failed. XTAG dumpstate show below:
xrun: Program received signal ET_ECALL, Application exception.
0xfff005ce in ?? ()
***** Active Cores *****
2 tile[1] core[0] 0xfff00518 in ?? ()
* 1 tile[0] core[0] 0xfff005ce in ?? ()
Thread 2 (tile[1] core[0]):
***** Call Stack *****
#0 0xfff00518 in ?? ()
***** Disassembly *****
0xfff00518: in (2r) r1, res[r6] *
0xfff0051a: setd (r2r) res[r6], r1
0xfff0051c: in (2r) r2, res[r6] *
0xfff0051e: ldw (ru6) r4, dp[0x0]
0xfff00520: mkmsk (rus) r5, 0x20
***** Registers *****
r0 0x0 0
r1 0x0 0
r2 0x0 0
r3 0x40000 262144
r4 0x200100 2097408
r5 0x100200 1049088
r6 0x10002 65538
r7 0x80a 2058
r8 0x0 0
r9 0x10023 65571
r10 0x3 3
r11 0x40b 1035
cp 0x0 0
dp 0xfff01eb0 -1040720
sp 0x7ff7c 524156
lr 0xfff00342 -1047742
pc 0xfff00518 -1047272
sr 0x40 64
spc 0x0 0
ssr 0x0 0
et 0x0 0
ed 0x0 0
sed 0x0 0
kep 0xfff00400 -1047552
ksp 0xfff00518 -1047272
Thread 1 (tile[0] core[0]):
***** Call Stack *****
#0 0xfff005ce in ?? ()
***** Disassembly *****
0xfff005ce: ecallt (1r) r7
0xfff005d0: ldc (ru6) r11, 0x1
0xfff005d2: out (r2r) res[r1], r11 *
0xfff005d4: syncr (1r) res[r1] *
0xfff005d6: setc (ru6) res[r0], 0x0 *
***** Registers *****
r0 0x10100 65792
r1 0x10000 65536
r2 0x40100 262400
r3 0x106 262
r4 0x40000 262144
r5 0xd15ab1e 219523870
r6 0xedb88320 -306674912
r7 0x6522df69 1696784233
r8 0x0 0
r9 0x23 35
r10 0x6 6
r11 0x0 0
cp 0x0 0
dp 0xfff01eb0 -1040720
sp 0x7ff7c 524156
lr 0xfff00342 -1047742
pc 0xfff005ce -1047090
sr 0x51 81
spc 0xfff005ce -1047090
ssr 0x0 0
et 0x8 8
ed 0x0 0
sed 0x0 0
kep 0xfff00400 -1047552
ksp 0xfff00402 -1047550
ksp 0xfff00402 -1047550
This is CRC error, but actually image in flash is correct, we dumped all flash and compared it. After flash dumped, the board can work well again, the board was repaired. We guest that QE bit was wrong in flash, we know flash in XUF216 should be in qual bit mode. We write some code to read the QE bit via QSPI port(not quadflashlib), and used xTime IDE run it on other bad board, found the QE equal zero. Then we write another codes fixed QE bit, the bad board was repaired.
My questions are:
1. Why the QE bit has been cleared ? Our code just called quadflashlib.
2. Under the case, how xcore can fix the QE error, I know ROM is unchangable, how about fix QE error in AES loader, that can be burned into OTP.
Thanks!