Secure DFU packet (ZIP) build 建立含袐鑰的Zip檔

Secure DFU刷新FW所使用的Zip檔把hex檔及 Private Key袐鑰用 nrfutil 打包的

要進行打包前先確認電腦環境是否已經安裝相關軟體,參考 nRF Util安裝


大致流程

1. 產生Private / Public Keys

2. 以歩驟1產生的Keys來建立Bootloader

3. 把Application的hex檔及Keys打包成Zip

4. 驗証


操作環境

SDK:..\SDK\nRF5_SDK_17.1.0_ddde560\examples\dfu\

Board : pca10056 (nRF52840-DK)

Software Tool : nRF Connect for Desktop

Tool : pca10059 (nRF52840 Dongle)


產生Private / Public Keys


1. 開啟CMD視窗,輸入指令產生 private.pemdfu_public_key.c 的公/袐鑰

nrfutil keys generate private.pem

nrfutil keys display --key pk --format code private.pem --out_file dfu_public_key.c


2. 開啟Bootloader project,

..\SDK\nRF5_SDK_17.1.0_ddde560\examples\dfu\secure_bootloader\pca10056_s140_ble\ses

直接Build或許會得到錯誤訊息如圖




把步驟1產生的 dfu_public_key.c 複制到SDK下,

..\SDK\nRF5_SDK_17.1.0_ddde560\examples\dfu

覆蓋原有檔案,然後再 rebuild 就成功產生hex secure_bootloader_ble_s140_pca10056.hex


3. Application這裡使用 ble_app_blinky,

..\SDK\nRF5_SDK_17.1.0_ddde560\examples\ble_peripheral\ble_app_blinky\pca10056\s140

把build後產生的ble_app_blinky_pca10056_s140.hex複製到步驟1 private.pem相同路徑下


輸入指令打包Zip檔,(其中0xCAFE是 softdevice_s140.hex 的ID)

nrfutil pkg generate --application ble_app_blinky_pca10056_s140.hex --application-version 2 --hw-version 52 --sd-req 0xCAFE --key-file private.pem blinky.zip


4. 驗証

把 softdevice_s140.hex 

..\SDK\nRF5_SDK_17.1.0_ddde560\examples\dfu\secure_dfu_test_images\ble\nrf52840

及步驟2的 secure_bootloader_ble_s140_pca10056.hex 

用Programmer 寫入IC (寫入前記得先 Erase All)




Ble出現裝置 DfuTarg,用 nRF Connect for Desktop > Bluetooth Low Energy 連接

選擇 驟步3 產生的 blinky.zip

成功刷新後就可認到裝置 Nordic_Blinky




❓查詢 Softdevice 的ID

    開啟 nRF Connect for Desktop > Programmer,匯入softdevice_s140.hex

    在Msg框就可以看到ID




參考    Generating DFU packages