参考文献:
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标志位升级》
下载地址:http://developer.nordicsemi.com/nRF5_SDK/
选择自己平台的SDK版本,此处选择NRF52840对应的 nRF5_SDK_15.2.0_9412b96.zip
查看需要安装的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选择对应的版本
下载页面:https://osdn.net/projects/mingw/releases/ 选择C与C++相关的编译器
将WinGW/bin添加到环境变量,然后执行
mingw-get install gcc g++ mingw32-make
然后将mingw32-make.exe 改名为make.exe
micro-ecc 下载地址:
https://github.com/kmackay/micro-ecc
下 载 ecc 的 zip 源 码 复 制 到 \external\micro-ecc 目 录 下 ,
micro-ecc-master 改名为 micro-ecc, 并解压文件。
然后到nrf52hf_armgcc 以及 nrf52nf_armgcc 路径下执行make编译
下载地址: https://github.com/NordicSemiconductor/pc-nrfutil/releases,并将nrfutil 所在的路径添加到环境变量,方便使用
nrfutil keys generate private.key
private key用于APP部分打包为OTA固件
在prvate key的基础上生成public key.c , 并改名为 dfu_public_key.c 添加到Bootloader工程中
nrfutil keys display --key pk --format code private.key --out_file public_key.c
上述工作都做完以后,就可以直接编译Bootloader,并烧写到目标板中,(需要首先确认SoftDevice已写入),首先通过nrfgo烧写softdevice, 然后通过Keil烧写bootloader
将应用程序的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
下载地址: https://github.com/NordicSemiconductor/Android-nRF-Connect/releases,使用最新版本,注意旧版本可能无法进行升级。
已经写入Bootloader的情况下,默认按下BTN4 复位设备会进入Bootloader, 然后使用nrf Connect 进行升级。