公司最近在STM32在线升级的方案,技术汇总了一下在线升级的设计思路,也想请大家一起来批评指导。
如下图所示,设计一个BOOT程序,BOOT程序的功能是引导程序跳转执行APP1或者APP2程序。
当最开始的时候,先烧录BOOT程序,后烧录APP1程序。在利用串口或者网络的方式将需要升级的APP2程序HEX文件放置到到0X02开始的位置,然后改变BOOT引导到重启到APP2的位置。
到APP2升级APP1的时候亦是如此,
这样设计对存储空间要求比较大。请问还有更优的设计方案吗。?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
建议在BOOT中做COPY,把 TMP COPY 到 APP1中即可。
这样 APP1 与 TMP(APP2)需要对半分,比较浪费空间,可以对TMP进行压缩处理,这样空间利用率更高些。
另外,因为是COPY到APP1上面运行的,所以不要求TMP也是内部FLASH,用外部SPI FLASH也一样,这样便宜量足。
至于有人担心的变砖问题,说两个APP会好些。
事实上如果新的APP有问题,也得需要人工按键切换才行。
至于boot中自动判断新的APP是否能跑起来,这简直了,都不能跑起来的APP是如何通过测试和预演流程的?
我觉得BOOT 里面只需要最简单的程序就行。就是COPY 和 程序跳转就行。
一周热门 更多>