NRF52840 DFU升级(二):Hex文件打包

参考文献: Nordic官方博客 《Getting started with Nordic's Secure DFU bootloader, a step by step guide》

相关文章:《NRF52840 DFU升级(一): 按键升级》

                  《NRF52840 DFU升级(三) : Buttonless 升级》

                  《NRF52840 DFU升级(四):GPREGRET标志位升级》

 

前言

NRF52840中有一个特殊的BOOTLOADER_SETTING分区,存放的信息为:

Bootloader DFU Settings:
* File:                 bootloader_setting.hex
* Family:               NRF52840
* Start Address:        0x000FF000
* CRC:                  0xF2CFB3EB
* Settings Version:     0x00000001 (1)
* App Version:          0x00000001 (1)
* Bootloader Version:   0x00000000 (0)
* Bank Layout:          0x00000000
* Current Bank:         0x00000000
* Application Size:     0x000005E4 (1508 bytes)
* Application CRC:      0x4456F1BC
* Bank0 Bank Code:      0x00000001

有关ROM分区的详细信息可以参考《初识Nordic 52840》中的内存布局一节。该分区在首次进行OTA升级时,被写入。

Bootloader启动时会首先读取这部分信息,如果缺少这部分信息,则认为APP INVALID,不会去引导系统启动。因此在用于量产的版本中,这部分文件必须合入到整体版本当中。否则通过OTA去升级一遍,写入BOOTLOADER_SETTING,显然太繁琐了。

生成HEX及打包烧写流程

(1)生成BOOTLOAD_SETTING

nrfutil settings generate --family NRF52840 --application NRF52840_xxaa.hex --application-version 1 --bootloader-version 0 --bl-settings-version 1 bootloader_setting.hex

(2)将应用程序的HEX文件: nrf52840_xxaa.hex ,Bootloader的HEX文件:nrf52840_xxaa_s140.hex,协议栈的HEX文件:s140_nrf52_6.1.0_softdevice.hex以及上一步生成的bootloader_setting.hex 放到相同目录下,执行以下指令(可以做成bat批处理文件)

mergehex -m bootloader_setting.hex nrf52840_xxaa.hex -o merge.hex
mergehex -m merge.hex nrf52840_xxaa_s140.hex -o merge.hex
mergehex -m merge.hex s140_nrf52_6.1.0_softdevice.hex -o merge.hex

最终合并为一个merge.hex

(3)执行烧写

nrfjprog --family NRF52 --eraseall
nrfjprog --family NRF52 --program merge.hex
nrfjprog --family NRF52 --verify merge.hex
nrfjprog --family NRF52 --reset

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(BLE)