问题:
因为客人使用NRF52810比较熟悉,想用这颗芯片来做MCU主控功能,不需要使用协议栈的相关功能,并且可以实现串口升级;而我们默认的程序启动方式是在协议栈固件中的MBR程序启动,所以没有协议栈,我们的程序无法正常启动;
解决方案:
方案总体概述:
Cpu 启动后从flash 0地址读取命令,我们将MBR 固件从协议栈固件分离出来,单独将MBR固件放在flash 0地址位置;将MBR程序启动后检测是否有BootLoader,有BootLoader跳转到BootLoader程序中运行,如果BootLoader不升级,跳转到application地址运行,如果升级,进行对应用程序的升级;
第一步:生成您自己的私钥。输入以下命令行:
nrfutil keys generate private.pem
第二步:根据您的私钥生成您的公钥。
nrfutil keys display --key pk --format code private.pem --out_file dfu_public_key.c
第三步:编译应用程序examples\peripheral\blinky\pca10040e\mbr。使用SES IDE编译出的HEX文件。不要使用预编译的“blinky_pca10040e_mbr”HEX”在’blinky/hex’文件夹,因为它已经与MBR合并了。
第四步:生成setting文件
nrfutil settings generate --family NRF52810 --application blinky_pca10040e_mbr.hex --application-version 1 --bootloader-version 2 --bl-settings-version 2 settings.hex
第五步:合并固件
【1】mergehex.exe --merge secure_bootloader_uart_mbr_pca10040e.hex settings.hex --output bl_temp.hex
【2】mergehex.exe --merge bl_tem