寒风飘飘 发表于 2016-9-18 21:49:55

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

bootloader的起始地址是0x80000000
app的地址是0x8000c000
我现在也升级成功了,中断向量表我也设置了,那我复位为何是在app中呢。
复位后一直在app中运行,那我怎么再进入bootloader呢??

00-405686 发表于 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中地址入口地址开始执行
跟踪下看那出问题了吧

寒风飘飘 发表于 2016-9-19 15:37:56

非常感谢大家,我之前是bootloader是带FreeRTOS的,现在不用RTOS是正常的,复位后立即进入bootloader里面。有RTOS的有异常,今天晚上我仔细看看。感谢大家的帮忙!!:lol

zero99 发表于 2016-9-20 10:47:26

问题解决了啊?

寒风飘飘 发表于 2016-9-20 11:57:20

寒风飘飘 发表于 2016-9-19 15:37
非常感谢大家,我之前是bootloader是带FreeRTOS的,现在不用RTOS是正常的,复位后立即进入bootloader里面。 ...

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

现在是在main函数第一条语句中写入
SCB->VTOR = FLASH_BASE | 0x10000;
这个两个有区别吗?我记得只有这处不一样了。

aabobo 发表于 2017-2-22 15:02:55

能把源程序压缩贴上来吗,,我USB IAP,一直不行,不知道哪里出问题了,3ks啊

寒风飘飘 发表于 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做好了吗?我现在也正在做这一块,可否交流指点下?谢谢!
页: [1]
查看完整版本: stm32 用bootloader升级后(iap)复位后为何不是进入bootloader中?