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

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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版