STM32 boot跳转指令失败后跳转到boot程序main函数

2019-08-19 17:58发布

if (((*(__IO uint32_t*)APPLICATION_ADDRESS) & 0x2FFE0000 ) == 0x20000000)
    {
        JumpAddress = *(__IO uint32_t*) (APPLICATION_ADDRESS + 4);
        Jump_To_Application = (pFunction) JumpAddress;

        //初始化用户程序的堆栈指针
        __set_MSP(*(__IO uint32_t*) APPLICATION_ADDRESS);
        Jump_To_Application();
    }
用boot进行无线更新程序,发现当无线更新失败, 此时falsh中已经有一部分应用程序, Jump_To_Application()会跳转到boot程序的main函数,并且一直在循环操作,但是boot程序正常情况下应该顺序执行,没有循环执行,求大神指教问题原因~~

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
正点原子
1楼-- · 2019-08-19 21:00
更新失败应该不能运行代码吧
倚梦无霜
2楼-- · 2019-08-19 22:39
正点原子 发表于 2017-5-4 22:14
更新失败应该不能运行代码吧

无线更新失败时,退出更新流程,由于程序中增加了看门狗复位,一定时间没有喂狗,看门狗复位,顺序执行,执行到jump_to_application();的时候跳转不到应用程序,就会出现我说的异常现象(程序不断在boot里循环执行,此时看门狗没有复位),有点类似于跑飞的现象
JUSTNIUB
3楼-- · 2019-08-19 23:01
应用程序修改了boot的地址吗
倚梦无霜
4楼-- · 2019-08-20 00:44
JUSTNIUB 发表于 2017-5-8 21:26
应用程序修改了boot的地址吗

没有,偏移地址没有修改。

一周热门 更多>