我的项目流程是:IAP程序和APP程序合并成一个HEX文件,然后烧写进STM32,可以正常运行,也就是先运行IAP程序然后跳转到APP运行。
然后我发送一个命令,我APP程序会从服务器获取bin文件,烧写进去外部flash(SPI通信的),然后重启,进入IAP,它会从外部flash读取数据烧写进APP中。
成功后,判断栈地址成功,可是跳转不进去APP。
现象:一开始的硬件,可以完美的更新一段时间,之后就出现上面的问题,可是栈地址是对的。
然后更换了另外一个硬件,试了两三次,放了几天让它运行,之后给升级命令,也出现上面情况。
虽然感觉我描述的不太清楚,也没有很具体的说明现象,我也找不出什么细节出现错误,从服务器烧写进外部flash和读 的数据应该正确的。
所以我来论坛碰碰运气,大伙说说可能的原因,谢谢了!
对了,论坛新手,抱歉没那么多金币给大家。
解决:由于之前喂狗时间短,所以每次外部flash只擦除4K,现在加大喂狗时间,改成64K擦除,可行。
应该是擦除连续擦除4K,后面的没擦除成功的原因。
不过也要过段时间看可用否。
不是,意思是说升级的程序跟原来的改动一点点,意思是说栈头地址肯定相同的。请问有什么方法可以比较是否烧写进去的程序是没错的呢?
这倒没有,长时间运行没问题,也成功升级好几次。我先目前判断外部FLASH读或者写问题。
我烧录的可以运行的,然后给命令升级,重启到iap区进行更新APP区代码,然后打印出的栈地址合理的,然后就没东西了。
怎么读取程序?
一周热门 更多>