IAP在线升级的思路

2019-07-21 07:13发布

公司最近在STM32在线升级的方案,技术汇总了一下在线升级的设计思路,也想请大家一起来批评指导。
如下图所示,设计一个BOOT程序,BOOT程序的功能是引导程序跳转执行APP1或者APP2程序。
当最开始的时候,先烧录BOOT程序,后烧录APP1程序。在利用串口或者网络的方式将需要升级的APP2程序HEX文件放置到到0X02开始的位置,然后改变BOOT引导到重启到APP2的位置。
到APP2升级APP1的时候亦是如此,
这样设计对存储空间要求比较大。请问还有更优的设计方案吗。?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
aozima
2019-07-21 10:47
不支持映射地址的,两个APP要单独编译链接,加大了开发难度。
建议在BOOT中做COPY,把 TMP COPY 到 APP1中即可。

这样 APP1 与 TMP(APP2)需要对半分,比较浪费空间,可以对TMP进行压缩处理,这样空间利用率更高些。

另外,因为是COPY到APP1上面运行的,所以不要求TMP也是内部FLASH,用外部SPI FLASH也一样,这样便宜量足。

至于有人担心的变砖问题,说两个APP会好些。
事实上如果新的APP有问题,也得需要人工按键切换才行。
至于boot中自动判断新的APP是否能跑起来,这简直了,都不能跑起来的APP是如何通过测试和预演流程的?

一周热门 更多>