STM32F1的IAP程序,APP1和APP2两个应用程序交替更新程序不停重启

2019-07-14 15:27发布

1、MCU:STM32f103vct6
2、升级所用端口: 串口
3、FLASH分配
bootloader                                0x8000000 开始

#define APP1_START_ADDR     0x8010000
#define APP1_END_ADDR         0x8020000     //APP1 64k

#define APP2_START_ADDR     0x8021000
#define APP2_END_ADDR         0x8031000     //APP2 64k

APP程序中偏移地址设置,是根据APP的位置设定的:
       如果运行APP1位置的程序,偏移地址就是  0x8010000,
       如果运行APP2位置的程序,便宜地址就是  0x8021000


现象:
1、通过串口更新固件,都往APP1位置更新,测试多次,完全正常


2、更新固件,目前运行APP1程序,更新新固件到APP2位置;如果目前运行APP2位置程序,更新新固件到APP1位置
      用同一个固件,交替升级到APP1 和 APP2 的位置,是没问题的


     问题来了:用两个不同的固件,交替升级到APP1 和 APP2的位置,一次升级成功后,下一次升级完成,程序不停重启
                      在此情况下重复三次都是相同现象,在第四次就可以进入到APP程序中运行了

请问各位IAP过程中,使用两个APP升级,需要注意哪些地方呢? 谢谢
   
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
jsuuwerw
1楼-- · 2019-07-16 00:34
 精彩回答 2  元偷偷看……
60user108
2楼-- · 2019-07-16 01:47
用HEX文件啊,里面带起始地址,该放哪里就放置到哪里
jsuuwerw
3楼-- · 2019-07-16 01:49
zjjcn 发表于 1970-1-1 08:00

好吧,谢谢,我也战略放弃了,现在就是APP2做一个定死的出厂固件,APP1一直升级,这样算是妥协点吧
ljfdllwq
4楼-- · 2019-07-16 01:53
为什么我通过设置IROM1为不同地址,编译出来的bin文件都是一模一样的呢?
我使用的时STM32F0

一周热门 更多>