參考文獻:
Nordic官方博客 《Getting started with Nordic's Secure DFU bootloader, a step by step guide》
小潘大神 《SDK12.0 nrf52832 空中升級詳細步驟》
本文簡要梳理總體的按鍵升級流程,更多細節請參考上述兩個文獻。
相關文章:《NRF52840 DFU升級(二):Hex文件打包》
《NRF52840 DFU升級(三) : Buttonless 升級》
《NRF52840 DFU升級(四):GPREGRET標誌位升級》
1. 下載Nordic SDK
下載地址:http://developer.nordicsemi.com/nRF5_SDK/
選擇自己平臺的SDK版本,此處選擇NRF52840對應的 nRF5_SDK_15.2.0_9412b96.zip
2. 安裝GCC compiler toolchain for ARM
查看需要安裝的GCC版本
在SDK的components/toolchain/gcc/Makefile.windows中定義了GCC的版本和安裝路徑
GNU_INSTALL_ROOT := C:/Program Files (x86)/GNU Tools ARM Embedded/6 2017-q2-update/bin/
GNU_VERSION := 6.3.1
GNU_PREFIX := arm-none-eabi
直接到下載GNU頁面https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads選擇對應的版本
3. 安裝WinGW
下載頁面:https://osdn.net/projects/mingw/releases/ 選擇C與C++相關的編譯器
將WinGW/bin添加到環境變量,然後執行
mingw-get install gcc g++ mingw32-make
然後將mingw32-make.exe 改名爲make.exe
4. 編譯micro-ecc
micro-ecc 下載地址:
https://github.com/kmackay/micro-ecc
下 載 ecc 的 zip 源 碼 復 制 到 \external\micro-ecc 目 錄 下 ,
micro-ecc-master 改名爲 micro-ecc, 並解壓文件。
然後到nrf52hf_armgcc 以及 nrf52nf_armgcc 路徑下執行make編譯
5. 生成KEY
5.1 下載nrfutil
下載地址: https://github.com/NordicSemiconductor/pc-nrfutil/releases,並將nrfutil 所在的路徑添加到環境變量,方便使用
5.2 生成Private Key
nrfutil keys generate private.key
private key用於APP部分打包爲OTA固件
5.3 生成Public Key
在prvate key的基礎上生成public key.c , 並改名爲 dfu_public_key.c 添加到Bootloader工程中
nrfutil keys display --key pk --format code private.key --out_file public_key.c
6. 編譯bootloader
上述工作都做完以後,就可以直接編譯Bootloader,並燒寫到目標板中,(需要首先確認SoftDevice已寫入),首先通過nrfgo燒寫softdevice, 然後通過Keil燒寫bootloader
7. 生成OTA升級包
將應用程序的hex文件與private key放在相同目錄下,執行
nrfutil pkg generate --hw-version 52 --application-version 1 --application nrf52840_xxaa.hex --sd-req 0xae --key-file private.key app_dfu_package.zip
8. 安裝nrf Connect
下載地址: https://github.com/NordicSemiconductor/Android-nRF-Connect/releases,使用最新版本,注意舊版本可能無法進行升級。
已經寫入Bootloader的情況下,默認按下BTN4 復位設備會進入Bootloader, 然後使用nrf Connect 進行升級。