STM32/STM8技术论坛
直播中

王茜

7年用户 177经验值
私信 关注
[问答]

STM32 IAP远程升级后STM32必须重启

我现在使用IAP升级,升级方式是一个IAP程序+2个APP程序+标志位,开始使用JLINK下载IAP程序,IAP下载APP1,然后每次启动根据标志启动APP1或者APP2;和面APP1和APP2都可以升级对方,只有一个APP在运行都可以升级另外一个APP程序,现在的问提是APP1(或者APP2)升级完APP2(或者APP1)后STM32必须重启一下,不然运行一点时间当前的APP后死掉,不知道哪位遇见过这样的情况,当前APP不升级另外一个APP就好好的运行,只有当前APP升级另一个APP后,过一段时间就会死掉,也不知道死在那个地方,APP都升级成功了。。。。。

回帖(8)

刘建伟

2019-3-7 07:58:27
你这个升级思路不对,所有应用程序必须由iap程序升进去。
如当前运行app1,要升级app2,并运行,应该在app1中,改写标志,然后复位跳转到iap程序中,通过iap升级app2 ,升级成功后,改写标志,映射app2 的中断向量到sram,然后跳转app2 执行。反之也一样。我们目前产品就是这么做,一直很稳定!
1 举报

袁富存

2019-3-7 08:06:37
没有远程升级过,但是升级的步骤如果不对的话,肯定不会成功
举报

蔡彦壁

2019-3-7 08:18:02
只能靠iap升级app,app自身直接升来升去的,程序运行指针搞乱套了的都,还有一些变量在升级完也不是初始状态,中断向量跳来跳去跳乱套。
举报

李雨坤

2019-3-7 08:26:11
mark
备用学习
举报

孙婷婷

2019-3-7 08:40:12
主要是一些向量不能冲突,2个APP生成的BIN文件不要在同一个区域。要用实际的FLASH地址区分开。
APP BOOTLAODER 先运行,然后判断标志位是要执行哪个区域的代码。再JAMP到指定的入口地址。
举报

王桂花

2019-3-7 08:59:03
我之前是采用的也是整体升级,进入升级模式后,加载代码至RAM,开始覆盖升级。
举报

冯媛媛

2019-3-7 09:15:31
不错
举报

jinyi7016

2019-3-7 15:33:23
是的,这样升级后要重启的,重新设置启动地址
举报

更多回帖

发帖
×
20
完善资料,
赚取积分