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

STM32F0 IAP APP1 APP2 升级

[复制链接]
fengxiaode 提问时间:2017-1-20 16:55 /
最近做stm32f0远程升级,
升级方案是IAP(8000000-8004000) + APP1(4000-9000) + APP2(9000-E000)+预留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地址上吗?

有大神给指点下吗,纠结了好久,附上keill配置图片
1 iap配置图片
1.jpg
2 app1配置图片
2.jpg
3 app2配置图片,和app1是同一工程,只是配置不一样
3.jpg



收藏 3 评论21 发布时间:2017-1-20 16:55

举报

21个回答
海迹天涯 回答时间:2017-1-20 17:48:31
最近刚做完STM32F051的在线升级,给你一个经验文档,祝你成功

关于STM32IAP总结.rar

下载

80.99 KB, 下载次数: 493, 下载积分: ST金币 -1

IAP

评分

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

查看全部评分

zoomdy 回答时间:2017-1-21 10:23:26
bin文件是纯二进制文件,keill设置的rom地址生成的bin必须烧录到flash对应的真实地址上吗?

bin文件是不包含起始地址信息的,下载的时候需要正确指定起始地址。
bin文件是纯二进制文件,keill设置的rom地址生成的bin必须烧录到flash对应的真实地址上吗?

可以编译成位置无关代码。在C/C++选项卡内。

评分

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

查看全部评分

fengxiaode 回答时间:2017-2-7 11:29:44
zoomdy 发表于 2017-2-6 21:41
Read-Only Position Independent:指令编译成位置无关
Read-Write Position Independent:数据编译成位置 ...

我把这两项都勾选了,编译出错 1.jpg 什么情况这是
fengxiaode 回答时间:2017-1-20 18:00:17
海迹天涯 发表于 2017-1-20 17:48
最近刚做完STM32F051的在线升级,给你一个经验文档,祝你成功

多谢了 我看下
moyanming2013 回答时间:2017-1-20 20:22:42
你用的F0应该是基于Cortex-M0/M0+内核的,需要自己配置好中断向量的偏移(不同于Cortex-M3/4/7的可以通过寄存器很方便的配置),否则至少在这种情况下程序一定会跑飞的。

评分

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

查看全部评分

zoomdy 回答时间:2017-1-21 10:24:14
比如keill设置的是app1的rom地址,就一定要烧录到flash 4000地址上吗?


可以编译成位置无关代码。在C/C++选项卡内。
队长shiwo 回答时间:2017-1-21 10:56:03
来学习学习M0的IAP
fengxiaode 回答时间:2017-1-23 09:26:04
zoomdy 发表于 2017-1-21 10:23
bin文件是不包含起始地址信息的,下载的时候需要正确指定起始地址。

可以编译成位置无关代码。在C/C++选 ...

在哪里能配置成无相关代码
zoomdy 回答时间:2017-1-23 12:29:47
fengxiaode 发表于 2017-1-23 09:26
在哪里能配置成无相关代码

在C/C++选项卡内
fengxiaode 回答时间:2017-2-6 14:07:44

QQ截图20170206140433.jpg 请问这里怎么设置呢?
zoomdy 回答时间:2017-2-6 21:41:38
fengxiaode 发表于 2017-2-6 14:07
请问这里怎么设置呢?

Read-Only Position Independent:指令编译成位置无关
Read-Write Position Independent:数据编译成位置无关
zbber 回答时间:2017-2-7 09:21:01
来学习学习M0的IAP
zoomdy 回答时间:2017-2-7 11:58:07
fengxiaode 发表于 2017-2-7 11:29
我把这两项都勾选了,编译出错 什么情况这是

你用__at关键字强制定位PDTTable,这个就没法按位置无关编译了。
zoomdy 回答时间:2017-2-7 11:58:36
fengxiaode 发表于 2017-2-7 11:29
我把这两项都勾选了,编译出错 什么情况这是

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