nRF ic在帶有OTA (Over The Air)的功能時Flash的配置方式
上電後 MBR (Master Boot Record)會把PC (Program Counter)帶到Bootloader的位置
Bootloader會判斷Bootloader settings裡的Application的 size和 CRC-32是否正確再決定PC是要跳到
Application還是DFU程序
各個型號IC的記憶體配置
在SDK \nRF5_SDK_17.1.0_ddde560\examples\dfu 路徑下可以看到bootloader有分 open 及 secure
secure的bootloader會包含 Private Keys袐鑰,其用來刷新韌體的檔案也必須是包Key的Zip檔
接下來要用SDK裡提供的image來實際操作secure DFU透過UART的方式來更新FW
使用環境
SDK : \nRF5_SDK_17.1.0_ddde560\examples\dfu\secure_dfu_test_images\uart\nrf52840
Board : pca10056 (nRF52840-DK)
Software Tool : nRF Connect for Desktop
操作步驟
1. 用Programmer把 mbr.hex 和 bootloader_secure_uart_debug_without_bonds_mbr.hex 寫入nRF52840
Reset後LED1,LED4恆亮 表示進入Bootloader
2. 使用 nrfutil指令透過pca10056上的USB-CDC連接nRF52840的UART (RxD P0.08,TxD P0.06)
把 blinky_mbr.zip寫入Flash
(注意! Secure DFU寫入的檔案是含袐鑰的 Zip檔;Zip檔的袐鑰跟bootloader不對或使用hex檔皆不可寫
入Flash)
nrfutil dfu serial -pkg blinky_mbr.zip -p COM10
完成後的Memory Map如下
🔔blinky_mbr.hex的動作,從LED1到LED4依序點亮然後依序熄滅一直重覆
🔔進入bootloader_secure_uart_debug_without_bonds_mbr.hex時LED1,LED4亮
🔔按著BUTTON 4再按Reset,系統既可強制進入bootloader
❗如果直接用Programmer把 blinky_mbr.hex寫進Flash,因為沒有DFU產生的MBR parameter
和Bootloader Setting,Bootloader會認為Application是無效的而不執行
再試著刷新的FW (softdevice及ble HRS)
1. 按著BUTTON 4再按Reset,強制系統進入bootloader
2. 執行指令分別寫入 softdevice_s140.hex 和 hrs_application_s140.hex (記得要使用Zip檔)
nrfutil dfu serial -pkg softdevice_s140.zip -p COM10
nrfutil dfu serial -pkg hrs_application_s140.zip -p COM10
🔔hrs_application_s140.hex的動作,LED1閃爍,Ble scan到裝置 Nordic_HRM