你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F1的IAP程序,APP1和APP2两个应用程序交替更新的问题

[复制链接]
ren0zhe 提问时间:2017-5-5 17:03 /
阅读主题, 点击返回1楼
收藏 2 评论28 发布时间:2017-5-5 17:03
28个回答
ren0zhe 回答时间:2017-5-8 15:34:30
yklstudent-1794 发表于 2017-5-8 15:30
用HEX文件啊,里面带起始地址,该放哪里就放置到哪里

额,首先IAP,应该没人用hex吧,j-flash下载用hex方便;其次,每次编译都重新写地址,太麻烦,还得记录地址,现在想实现的是,固件更新到一个目前程序不用的地址上面,不管特意根据位置再生成bin文件
zbber 回答时间:2017-5-8 21:19:32
两个APP交叉升级和升级单个APP的区别不大
chifen 回答时间:2017-5-8 22:37:54
IAP做下载 第一个是偏移地址,就是从哪运行,第二是中断向量就是 中断入口同时要改,  如果你是两个 相同的IAP ,那偏移和中断向量地址你是怎么处理的 ,
还有一个 第一次运行的入口地址你想怎么实现跳转你想进的IAP地址呢

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

ren0zhe 回答时间:2017-5-9 09:31:59
zbber 发表于 2017-5-8 21:19
两个APP交叉升级和升级单个APP的区别不大

那请问下两个APP交叉升级时。升级用的bin文件的向量表偏移地址 和 keil设置的IROM1那里的地址 是如何处理的?
ren0zhe 回答时间:2017-5-9 09:33:48
chifen 发表于 2017-5-8 22:37
IAP做下载 第一个是偏移地址,就是从哪运行,第二是中断向量就是 中断入口同时要改,  如果你是两个 相同的IAP ...

目前这也是我遇到的情况,keil设置IROM1那里不区分APP1和APP2时,交叉升级就会有问题,如果区分生成bin文件,感觉体验特别不好啊
waiman-156411 回答时间:2017-5-9 09:51:50
你这个问题,我之前已经遇到过,不单单是固件复位地址的问题,还有中断向量表的位置也要改,所以同一个BIN文件,想不改地址,直接放在两个不同Flash地址执行是不可能的。

但你可以尝试这样操作,开发只生成一个BIN文件,然后自己写一个小软件,每次更新不同区域的APP,直接修改BIN文件里的复位地址和中断向量表偏移地址就行了。

评分

参与人数 1ST金币 +5 收起 理由
zero99 + 5

查看全部评分

ren0zhe 回答时间:2017-5-9 10:41:58
waiman-156411 发表于 2017-5-9 09:51
你这个问题,我之前已经遇到过,不单单是固件复位地址的问题,还有中断向量表的位置也要改,所以同一个BIN ...

你这个问题,我之前已经遇到过,不单单是固件复位地址的问题,还有中断向量表的位置也要改,所以同一个BIN文件,想不改地址,直接放在两个不同Flash地址执行是不可能的。

但你可以尝试这样操作,开发只生成一个BIN文件,然后自己写一个小软件,每次更新不同区域的APP,直接修改BIN文件里的复位地址和中断向量表偏移地址就行了。


“直接修改BIN文件里的复位地址和中断向量表偏移地址”  ,请问这个具体是修改哪里呢?


我对比了下,用keil修改IROM1那里的起始地址后生成的两个bin文件如下:
QQ截图20170509103341.png
地址不同的很多啊,我试着把  APP1位置的bin文件里的地址按照APP2位置的bin的地址修改,还是不能用的
waiman-156411 回答时间:2017-5-9 14:00:36
这堆地址就是中断向量表,其实,你可以用另一种方法,就是IAP更新代码的时候,跳过不更新这一段区域。或者刷除这段区域之后,写入固定的地址值也行。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

chifen 回答时间:2017-5-9 23:36:23
如果你用keil 里选择 用IAP1或IAP2区域 运行,只能做测试,还了一个引导功能,  只能用keil写入或 用其它软件写入指定存放地址, 实际运行还是要从00地址开始的 这段引导如果你跳过,那 IAP2和IAP1只是存放地址不同,对他们来说对方程序只是一个写入地址在哪

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

hjl2832 回答时间:2017-5-10 09:12:33
keil编译时,总是只能默认一个地址启动,要做不同的地址启动,要将不同的复位地址对应不同的中断向量表,这个只能是生成2个BIN文件来单独加载,没办法同时识别2个启动地址的。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版