stm32用bootloader升级后复位后为什么是在app中?

2019-07-14 14:28发布

bootloader的起始地址是0x80000000
app的地址是0x8000c000
我现在也升级成功了,中断向量表我也设置了,那我复位为何是在app中呢。
复位后一直在app中运行,那我怎么再进入bootloader呢??
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
tyewybvwe
1楼-- · 2019-07-14 22:15
你的bootloader直接跳转到APP了吧。
是不是已经已执行了,但是你没有感觉出来呢。
楼上说的对,复位从0x08000000执行。
再看看代码吧。
cmstock
2楼-- · 2019-07-15 00:48
复位后CPU将0x8000000 的值放入SP中,然后从0x8000004中地址入口地址开始执行
跟踪下看那出问题了吧
0896086
3楼-- · 2019-07-15 03:06
 精彩回答 2  元偷偷看……
formlikon
4楼-- · 2019-07-15 07:21
问题解决了啊?
0896086
5楼-- · 2019-07-15 07:49
0896086 发表于 2019-1-21 08:53
非常感谢大家,我之前是bootloader是带FreeRTOS的,现在不用RTOS是正常的,复位后立即进入bootloader里面。有RTOS的有异常,今天晚上我仔细看看。感谢大家的帮忙!!

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

现在是在main函数第一条语句中写入
SCB->VTOR = FLASH_BASE | 0x10000;
这个两个有区别吗?我记得只有这处不一样了。
uwyywefwd
6楼-- · 2019-07-15 13:30
能把源程序压缩贴上来吗,,我USB IAP,一直不行,不知道哪里出问题了,3ks啊

一周热门 更多>