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

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