DFU : Device Firmware Update 即固件升级
DFU可分为两种:
最新SDK(v15.3.0)会根据当前代码空间,自动选择使用
Nordic 支持三种升级方式: UART, USB, BLE
Nordic要实现DFU需要两个独立的代码:
下面为使用流程:
1. Bootloader
Nordic有两种bootloader: 开放式和安全式
开放式不做安全校验
安全式要做安全校验,只有校验通过的才生效
1.1 生成micro-ecc算法库
加密bootloader会使用到
确保本机装有git和GCC
进入文件夹
1.2 生成公钥及私钥
例程位置:
安全式bootloader需要Key
私钥生成命令:
公钥生成命令:
1.3 生成bootloader hex
将生成的公钥
2. App
生成自己的应用程序,假如取名为:
3. settings
生成setting
1 | 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
1 2 | 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包
1 | nrfutil pkg generate --application app_new.hex --application-version 2 --hw-version 52 --sd-req 0xCB --key-file priv.pem APP_DFU_PACKET.zip |
6. 使用nRFConnect DFU
nRFConnect支持DFU功能,直接选择待升级的升级zip包
具体流程见 强大的辅助软件nRFConnect
7. 手机端DFU
官方提供Android 及 iOS平台的DFU库:
- Android版DFU库:https://github.com/NordicSemiconductor/Android-DFU-Library
- iOS版DFU库:https://github.com/NordicSemiconductor/IOS-Pods-DFU-Library
官方还提供一个开源app
- Android版本 https://github.com/NordicSemiconductor/Android-nRF-Toolbox
- iOS版本: https://github.com/NordicSemiconductor/IOS-nRF-Toolbox
参考
- 详解蓝牙空中升级(BLE OTA)原理与步骤 (非常详细,推荐)
- Bootloader and DFU modules