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.pem 及 dfu_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