IAP在线升级的思路

2019-07-21 07:13发布

公司最近在STM32在线升级的方案,技术汇总了一下在线升级的设计思路,也想请大家一起来批评指导。
如下图所示,设计一个BOOT程序,BOOT程序的功能是引导程序跳转执行APP1或者APP2程序。
当最开始的时候,先烧录BOOT程序,后烧录APP1程序。在利用串口或者网络的方式将需要升级的APP2程序HEX文件放置到到0X02开始的位置,然后改变BOOT引导到重启到APP2的位置。
到APP2升级APP1的时候亦是如此,
这样设计对存储空间要求比较大。请问还有更优的设计方案吗。?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
aozima
1楼-- · 2019-07-22 06:35
本帖最后由 aozima 于 2018-12-3 10:20 编辑
每次启动的时候,首先从外部SPI FLASH  COPY一份代码到APP1中

去掉每次,后面每次启动只检查版本,相同就跳过。

不然太慢,也很快就烧坏了。
biglu
2楼-- · 2019-07-22 10:59
andychen 发表于 2018-12-3 09:56
我觉得BOOT 里面只需要最简单的程序就行。就是COPY 和 程序跳转就行。

是的啊,如果在APP里进行远程升级的话,那是需要分APP1+APP2的,在APP1里接收APP2成功并校验通过,就可以复位到Bootloader里了,然后将APP2代码移到APP1里,跳转就可以了。
但如果不需要远程升级,就是个串口升级,只需要1个APP1,因为升级过程中可能接收失败或写flash失败,所以如果失败了boolodaer重启继续等升级,如果成功就跳转。
andychen
3楼-- · 2019-07-22 14:37
aozima 发表于 2018-12-3 10:17
去掉每次,后面每次启动只检查版本,相同就跳过。

不然太慢,也很快就烧坏了。

请问您SPI FLASH是使用的那款?

一周热门 更多>