天天看點

FDS操作時掉電導緻固件變磚分析FDS操作時掉電導緻固件變磚分析一、分析

FDS操作時掉電導緻固件變磚分析

​ 産品使用nRF52840, nRF5 17.02 SDK。 通過FDS來存儲MAC位址,每次開機會讀取FDS中的MAC位址,每次開機主要MCU都會發MAC位址給藍牙闆,如果和本地存儲的MAC不一緻,就會寫入新MAC。 開機會判斷髒資料,進行GC操作。産品在産線上會更換主要闆和藍牙闆,并且會随時拔插電池(斷電)。

​ 出現了幾個藍牙版通過産線測試後,無法正常啟動的現象。懷疑是操作Flash是導緻的問題。

一、分析

1 FDS格式

FDS操作時掉電導緻固件變磚分析FDS操作時掉電導緻固件變磚分析一、分析

2 藍牙闆Flash分區

FDS操作時掉電導緻固件變磚分析FDS操作時掉電導緻固件變磚分析一、分析

3 異常闆存MAC位址内容

藍牙闆1

$ nrfjprog -f nrf52 --memrd  0xf4000 --w 8 --n 64 
0x000F4000: DE C0 AD DE FE 01 1E F1 11 11 02 00 02 00 00 00   |................|
0x000F4010: 13 00 00 00 01 00 00 00 FE C5 00 00 FF FF FF FF   |................|
0x000F4020: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF   |................|
0x000F4030: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF   |................|
$ nrfjprog -f nrf52 --memrd  0xf5000 --w 8 --n 64
0x000F5000: DE C0 AD DE FE 01 1E F1 FF FF FF FF FF FF FF FF   |................|
0x000F5010: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF   |................|
0x000F5020: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF   |................|
0x000F5030: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF   |................|
           

藍牙闆2

$ nrfjprog -f nrf52 --memrd  0xf4000 --w 8 --n 64                 
0x000F4000: DE C0 AD DE FE 01 1E F1 FF FF FF FF FF FF FF FF   |................|
0x000F4010: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF   |................|
0x000F4020: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF   |................|
0x000F4030: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF   |................|
$ nrfjprog -f nrf52 --memrd  0xf5000 --w 8 --n 64
0x000F5000: DE C0 AD DE FE 01 1E F1 11 11 02 00 02 00 00 00   |................|
0x000F5010: 0D 00 00 00 01 00 00 00 FE C5 00 00 FF FF FF FF   |................|
0x000F5020: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF   |................|
0x000F5030: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF   |................|
           

理論上要麼F4000和F5000上,必然有一個是0xF11E01FE一個是0xF11E01FF。現在兩個都是0xF11E01FE。導緻程式判斷異常,在BootLoader就當機了。

擦除F4000頁内容後,兩個固件都可以正常工作。

4 結論

隻有才GC(垃圾回收的時候)才會擦寫兩個分區頭部。鎖定是在GC操作的過程中,出現異常斷電情況導緻的。

BLE