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升级,需要注意哪些地方呢? 谢谢
加了串口打印,没加看门狗,错误的话感觉不会有,现在发现的问题是,生成的bin文件的问题,在keil那里设置偏移 10000 和偏移 21000,生成的bin文件不同,特别是 复位地址那里不同,个人感觉是这个地址错误的问题
一周热门 更多>