nRF52832开发记录----DFU

本文详细介绍Nordic设备固件升级(DFU)流程,包括dualbank与singlebank的区别、bootloader生成步骤、设置生成、升级包制作及使用nRFConnect进行升级的方法。

DFU : Device Firmware Update 即固件升级

DFU可分为两种:
dual bank : 先接收后升级. 优点:升级失败可回滚 缺点:需要额外空间
single bank : 边接收边升级. 优点: 节约空间 缺点:如果出错不能回滚版本

最新SDK(v15.3.0)会根据当前代码空间,自动选择使用dual banksingle bank
Nordic 支持三种升级方式: UART, USB, BLE

Nordic要实现DFU需要两个独立的代码:bootloaderapp
下面为使用流程:

1. Bootloader

Nordic有两种bootloader: 开放式和安全式
开放式不做安全校验
安全式要做安全校验,只有校验通过的才生效

1.1 生成micro-ecc算法库

加密bootloader会使用到micro-ecc算法,这需要我们手动编译并生成micro-ecc算法库
确保本机装有git和GCC
进入文件夹SDK根目录\external\micro-ecc运行build_all脚本即可自动生成micro-ecc算法库

1.2 生成公钥及私钥

例程位置: SDK根目录\examples\dfu\secure_bootloader
安全式bootloader需要Key
私钥生成命令:nrfutil keys generate priv.pem
公钥生成命令:nrfutil keys display --key pk --format code priv.pem --out_file dfu_public_key.c

priv.pem 就是私钥, 名字可改,生成升级包时需要使用此私钥,必需妥善保管,否则将永远不能升级
dfu_public_key.c 就是公钥

1.3 生成bootloader hex

将生成的公钥dfu_public_key.c覆盖SDK根目录\examples\dfu下的同名文件,并生成bootloader.hex

2. App

生成自己的应用程序,假如取名为: app.hex

3. settings

生成setting

nrfutil settings generate --family NRF52 --application app.hex --application-version 1 --bootloader-version 1 --bl-settings-version 1 settings.hex

4. 生成最终烧录Hex

合并hex: setting, bootloader, softdevice, app

mergehex --merge bootloader.hex settings.hex --output bl_temp.hex 
mergehex --merge bl_temp.hex app.hex s132_nrf52_7.0.1_softdevice.hex --output whole.hex

5. 生成升级zip包

nrfutil pkg generate --application app_new.hex --application-version 2 --hw-version 52 --sd-req 0xCB --key-file priv.pem APP_DFU_PACKET.zip

--application表示新固件hex文件
--key-file 表示签名用的私钥文件
--sd-req表示协议栈softdevice版本 可以通过命令nrfutil pkg generate --help获得列表

6. 使用nRFConnect DFU

nRFConnect支持DFU功能,直接选择待升级的升级zip包APP_DFU_PACKET.zip即可完成升级.
具体流程见 强大的辅助软件nRFConnect

7. 手机端DFU

官方提供Android 及 iOS平台的DFU库:

官方还提供一个开源app nRF Toolbox,内集成多个功能,包含DFU:

参考

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值