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

stm32 用bootloader升级后(iap)复位后为何不是进入bootloader中?

[复制链接]
need_a_smile 提问时间:2016-9-18 21:49 /
bootloader的起始地址是0x80000000
app的地址是0x8000c000
我现在也升级成功了,中断向量表我也设置了,那我复位为何是在app中呢。
复位后一直在app中运行,那我怎么再进入bootloader呢??

1 收藏 1 评论9 发布时间:2016-9-18 21:49

举报

9个回答
294479435@qq.co 回答时间:2016-9-19 09:16:22
复位后要进bootloader,复位从0x08000000执行,这个我调试过的
高二毛 回答时间:2016-9-19 11:10:28
你的bootloader直接跳转到APP了吧。
是不是已经已执行了,但是你没有感觉出来呢。
楼上说的对,复位从0x08000000执行。
再看看代码吧。
cloudcn 回答时间:2016-9-19 13:11:49
复位后CPU将0x8000000 的值放入SP中,然后从0x8000004中地址入口地址开始执行
跟踪下看那出问题了吧
need_a_smile 回答时间:2016-9-19 15:37:56
非常感谢大家,我之前是bootloader是带FreeRTOS的,现在不用RTOS是正常的,复位后立即进入bootloader里面。有RTOS的有异常,今天晚上我仔细看看。感谢大家的帮忙!!
zero99 回答时间:2016-9-20 10:47:26
问题解决了啊?
need_a_smile 回答时间:2016-9-20 11:57:20
寒风飘飘 发表于 2016-9-19 15:37
非常感谢大家,我之前是bootloader是带FreeRTOS的,现在不用RTOS是正常的,复位后立即进入bootloader里面。 ...

我把之前的工程给删了,重新新建了project,用RTOS,现在又正常了。好像只有一处不一样。
我之前是改这个宏的
#define VECT_TAB_OFFSET  0x10000 /*!< Vector Table base offset field.

现在是在main函数第一条语句中写入
SCB->VTOR = FLASH_BASE | 0x10000;
这个两个有区别吗?我记得只有这处不一样了。
aabobo 回答时间:2017-2-22 15:02:55
能把源程序压缩贴上来吗,,我USB IAP,一直不行,不知道哪里出问题了,3ks啊
need_a_smile 回答时间:2017-4-5 11:16:14
aabobo 发表于 2017-2-22 15:02
能把源程序压缩贴上来吗,,我USB IAP,一直不行,不知道哪里出问题了,3ks啊 ...

公司的代码都是加密的,源码贴了你也打不开。。。不好意思。。
alisa123 回答时间:2017-10-13 16:46:58
aabobo 发表于 2017-2-22 15:02
能把源程序压缩贴上来吗,,我USB IAP,一直不行,不知道哪里出问题了,3ks啊 ...

你好,你的USB IAP做好了吗?我现在也正在做这一块,可否交流指点下?谢谢!

所属标签

相似问题

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