参考网友文章《stm32 IAP + APP ==>双剑合一》在STM32F103C8T6上验证通过。
有之前IAP方式的不足(出厂前必须先烧录IAP引导代码,再通过串口方式升级代码至我们出厂时需要的功能,很麻烦!),
我们采用双剑合一的方式,最终出厂前只需将一个HEX文件烧录到MCU即可。
(即实现:上电后默认执行APP代码,有触发时更新APP)
IAP和APP两个工程文件的hex文件合成1个hex文件的方法:
1、
前文说过两个工程文件的KEIL配置:
对于A工程(IAP):
设置KEIL中魔术棒中的target中勾选IROM1,并配置其后的数据为 0x08000000,即程序定位在FLASH的最开始处(IAP程序)。
对于B工程(APP):
设置KEIL中魔术棒中的target中勾选IROM1,并配置其后的数据为 0x08004000,即程序定位在IAP区域的后面。
编译通过后,得到两个HEX文件。
2、
用UltraEdit打开IAP和APP的.hex文件
把IAP的.hex 最后一句去掉(即:删除:00000001FF)。
把APP的.hex 全部内容拷贝复制到刚才删掉结束语句的IAP的.hex后面。
保存。
3、通过ST官方下载的flash loader软件以ISP的方式烧录到MCU(参看《ST官方flash loader软件串口方式下载HEX》)。
4、上电后,可看到执行APP代码。
若需要升级,则先按着升级触发按键,再按下复位键,进行升级。升级成功后,执行新APP代码。
完结。