硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1781|回复: 5
收起左侧

[技术讨论] IAP加载问题

[复制链接]

19

主题

76

回帖

133

积分

初级会员

积分
133
发表于 2021-9-30 16:00:00 | 显示全部楼层 |阅读模式
问题很像

升级方案是IAP(8000000-8004000) + APP1(0x8004000) + APP2( 0x8008000)+预留flag区域,

1 IAP 负责通过flash的flag去判断启动app1 还是app2
2 app1和app2 中通过串口收数据去互相更新,比如,当前运行的是app1上就去更新app2,并且设置相应flag,最后软件重启跳到IAP判断flag启动哪一个的app

问题,
              bin文件是一个rom配置下生成的,在app1中更新app2是成功,app2中用ymode下载bin的时候,程序异常跑飞(使用同一个bin文件升级,用ymode模式下载),但是分别编译不同rom设置的bin文件,根据实际地址下载的话,不会有异常,

疑问,
              bin文件是纯二进制文件,keill设置的rom地址生成的bin必须烧录到flash对应的真实地址上吗?
比如keill设置的是app1的rom地址,就一定要烧录到flash 4000地址上吗?








回复

使用道具 举报

5

主题

140

回帖

155

积分

初级会员

积分
155
发表于 2021-9-30 16:23:00 | 显示全部楼层
APP1和APP2不能一样,因为中断向量表位置不一样,程序开头需要设置 SCB->VTOR,你说的两个APP1和APP2都下载进去,让APP2运行,APP2中断时其实时调用的还是APP1的中断向量表。可以将升级文件写到APP2区域,写完后,flag区域写一个待更新标志位,然后boot检测到待更新标志位,将APP1擦除,APP2搬运至APP1区域
回复

使用道具 举报

19

主题

76

回帖

133

积分

初级会员

积分
133
 楼主| 发表于 2021-9-30 17:10:56 | 显示全部楼层
无关风月 发表于 2021-9-30 16:23
APP1和APP2不能一样,因为中断向量表位置不一样,程序开头需要设置 SCB->VTOR,你说的两个APP1和APP2都下载 ...

因为想要共用同一份代码
所以在APP处有根据flag设置 SCB->VTOR
但APP1和APP2 BIN檔有包含位置資料
回复

使用道具 举报

5

主题

140

回帖

155

积分

初级会员

积分
155
发表于 2021-9-30 17:47:31 | 显示全部楼层
blueice1108 发表于 2021-9-30 17:10
因为想要共用同一份代码
所以在APP处有根据flag设置 SCB->VTOR
但APP1和APP2 BIN檔有包含位置資料

工程中没有用MDK语法糖或者特殊配置的话,bin文件应该是一致的,你可以对比bin文件看看,或者找个点灯工程,改rom试试
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
111540
QQ
发表于 2021-10-1 08:25:19 | 显示全部楼层
blueice1108 发表于 2021-9-30 17:10
因为想要共用同一份代码
所以在APP处有根据flag设置 SCB->VTOR
但APP1和APP2 BIN檔有包含位置資料

估计你的程序跳转前处理有点问题,你可以考虑调用SystemReset函数,也就是系统软件复位。

这样从boot里面往其它APP里面切换
回复

使用道具 举报

19

主题

76

回帖

133

积分

初级会员

积分
133
 楼主| 发表于 2021-10-1 09:04:13 | 显示全部楼层
无关风月 发表于 2021-9-30 17:47
工程中没有用MDK语法糖或者特殊配置的话,bin文件应该是一致的,你可以对比bin文件看看,或者找个点灯工 ...

有办法把BIN 改成无位置资讯吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-11-1 06:53 , Processed in 0.235445 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表