Nordic DFU 制作好的安装包升级时始终无法进入升级状态
笔者在公司项目中遇到过制作好的升级包在升级时始终无法开始升级过程, 等待一段时间后, 设备退出了DFU状态。
查了很久, 这个流程过去的好多项目都是这样做的, 流程应该没问题。 后来注意到, 原来是我更换了新的softdevic 协议栈包。但是在制作安装包时, 并没有设定相应的softdevice的ID值。
在制作DFU升级包时用到如下命令:
nrfutil pkg generate --hw-version 52 --application-version 1 --application nrf52832_xxaa.hex --sd-req 0xcb --key-file private.pem DFU_pack.zip
该命令中 --sd-req (softdevice ID)后需要给出你的项目说用的softdevice 的ID值。 如果给定的ID和使用的softdevice的ID不符合的话, DFU过程就会被中断。
那么如何查询softdevice 的ID值呢。 也很简单。
1) 使用nordic 的NRFConnect (PC版), 打开Programmer
2) 然后加载你所用的softdeice 包。
3) 在log栏里就可以看到softdevice的ID值
下面列出一些常用的softdevice的ID值, 供大家参考。
s112_nrf52_6.0.0|0xA7|
s112_nrf52_6.1.0|0xB0|
s112_nrf52_6.1.1|0xB8|
s130_nrf51_1.0.0|0x67|
s130_nrf51_2.0.0|0x80|
s130_nrf51_2.0.1|0x87|
s132_nrf52_2.0.0|0x81|
s132_nrf52_2.0.1|0x88|
s132_nrf52_3.0.0|0x8C|
s132_nrf52_3.1.0|0x91|
s132_nrf52_4.0.0|0x95|
s132_nrf52_4.0.2|0x98|
s132_nrf52_4.0.3|0x99|
s132_nrf52_4.0.4|0x9E|
s132_nrf52_4.0.5|0x9F|
s132_nrf52_5.0.0|0x9D|
s132_nrf52_5.1.0|0xA5|
s132_nrf52_6.0.0|0xA8|
s132_nrf52_6.1.0|0xAF|
s132_nrf52_6.1.1|0xB7|
s132_nrf52_7.0.1 0xCB
s140_nrf52_6.0.0|0xA9|
s140_nrf52_6.1.0|0xAE|
s140_nrf52_6.1.1|0xB6|
ANT_s332_nrf52_5.0.0.hex|0x9B|