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

STM32F103RE 只有挂调试器IAP程序才能正常跳转?

[复制链接]
TurbulanceFlow 提问时间:2017-3-25 00:22 /
题主最近在开发一款基于STM32F103RET6的产品,要求支持固件升级,目前是基于USART1的IAP,Toolchain是IAR。
IAP的程序是参考官方的例程做的,大体没变,只是BSP方面改了一下,Flash中前12KB作为IAP的程序。

目前的情况很诡异,就是把IAP程序和应用程序都按要求烧录进去后,第1次上电是可以正常运行的,IAP跳转很顺利,但断电后再重新上电就无法跳转了???

但是题主试了很多次,发现只要是挂上调试器,无论是在IAR的Debug环境下Run还是在JFlash中选择Start Application,IAP程序每次都能跳转得很顺利。
在IAR的Debug环境下题主详细地查看过Flash中的内容,发现程序设置无误,IAR的Linker设置,JFlash中的Start Address都无误。

初步怀疑是复位部分的问题(因为个人感觉IDE下的Run和真实环境下的上电差别就在于前者是软复位的,而后者是外部复位),但是若将应用程序直接烧录到0x08000000并且不设置中断向量表偏移,应用程序可以正常运行,掉电后再上电也可以,因此初步排除是硬件部分的复位问题。

这下就尴尬了,到底能是哪里没配置好呢,官方的文档例程,网上能收集到的资料题主都看过了,而且我的IAP还是可以运行一次的。。。?
还是硬件上某个地方有问题?

这让我百思不得其解,恳请高人指点,谢谢!
收藏 2 评论8 发布时间:2017-3-25 00:22

举报

8个回答
flu 回答时间:2017-10-18 15:21:07
请问下,楼主的问题有解决吗??
flu 回答时间:2017-10-18 22:46:21
flu 发表于 2017-10-18 15:21
请问下,楼主的问题有解决吗??

测出来了,原来IAP 没问题,出现这个现象的原因是进入iap的条件初始化未成功,导致正常运行的跳转不了
随风飘扬 回答时间:2018-8-7 09:21:54
堆栈和中断向量表部分有没有设置?另外就是跳转部分的代码看一下

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

x5y4z3 回答时间:2018-8-7 10:13:20
直觉这就是中断向量表配置上的问题。
在 IAP 每次转跳前都要配置好各向量表,不然转跳后会一直跑回 IAP 内的!

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

freeelectron 回答时间:2018-8-7 11:31:24
破总啊破总,人家都解决了,看板凳(3楼)

@zero99

点评

额。。  发表于 2018-8-10 15:42
x5y4z3 回答时间:2018-8-8 11:09:34
昨早 8/7 回覆时咋没看见 板凳 的那帖?这真是玩穿越了!呵呵~

fusunbing 回答时间:2018-9-28 10:53:29
我之前也碰到了类似的问题,IAP初始化我用的是开发板示例代码,这个也出问题了
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版