Secure DFU via UART

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.08TxD 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.hexhrs_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