stm32 IAP问题,从HTTPs 更新了APP,重启之后跳转不进新的APP

2019-08-18 20:40发布

我的项目流程是:IAP程序和APP程序合并成一个HEX文件,然后烧写进STM32,可以正常运行,也就是先运行IAP程序然后跳转到APP运行。

然后我发送一个命令,我APP程序会从服务器获取bin文件,烧写进去外部flash(SPI通信的),然后重启,进入IAP,它会从外部flash读取数据烧写进APP中。

成功后,判断栈地址成功,可是跳转不进去APP。

现象:一开始的硬件,可以完美的更新一段时间,之后就出现上面的问题,可是栈地址是对的。
      然后更换了另外一个硬件,试了两三次,放了几天让它运行,之后给升级命令,也出现上面情况。

虽然感觉我描述的不太清楚,也没有很具体的说明现象,我也找不出什么细节出现错误,从服务器烧写进外部flash和读 的数据应该正确的。

所以我来论坛碰碰运气,大伙说说可能的原因,谢谢了!

对了,论坛新手,抱歉没那么多金币给大家。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
vijay_ye
1楼-- · 2019-08-19 02:05
本帖最后由 vijay_ye 于 2017-5-11 16:03 编辑

解决:由于之前喂狗时间短,所以每次外部flash只擦除4K,现在加大喂狗时间,改成64K擦除,可行。
应该是擦除连续擦除4K,后面的没擦除成功的原因。

不过也要过段时间看可用否。
vijay_ye
2楼-- · 2019-08-19 02:16
读外部flash 会可能错误么?可是我打印出来栈地址是一样的,升级的Bin文件跟原来程序差不多的。
vijay_ye
3楼-- · 2019-08-19 02:56
yklstudent 发表于 2017-5-11 07:45
别差不多,查一个字节都不行

不是,意思是说升级的程序跟原来的改动一点点,意思是说栈头地址肯定相同的。请问有什么方法可以比较是否烧写进去的程序是没错的呢?
XUZJWWSZ
4楼-- · 2019-08-19 04:06
 精彩回答 2  元偷偷看……
vijay_ye
5楼-- · 2019-08-19 05:43
XUZJWWSZ 发表于 2017-5-11 10:52
你的APP程序有没有BUG,比如数组越界之类的BUG,我建议你先试验简单的APP程序,比如只闪灯的APP程序。如果 ...

这倒没有,长时间运行没问题,也成功升级好几次。我先目前判断外部FLASH读或者写问题。
vijay_ye
6楼-- · 2019-08-19 09:17
yklstudent 发表于 2017-5-11 11:16
你把烧录后的程序读出来比较下就可以了

我烧录的可以运行的,然后给命令升级,重启到iap区进行更新APP区代码,然后打印出的栈地址合理的,然后就没东西了。
怎么读取程序?

一周热门 更多>