OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2912|回复: 4

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

[复制链接]

2

主题

6

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2015-6-26
在线时间
1 小时
发表于 2017-5-4 20:06:40 | 显示全部楼层 |阅读模式
5金钱
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程序正常情况下应该顺序执行,没有循环执行,求大神指教问题原因~~

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-5-4 22:14:26 | 显示全部楼层
更新失败应该不能运行代码吧
回复

使用道具 举报

2

主题

6

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2015-6-26
在线时间
1 小时
 楼主| 发表于 2017-5-8 09:37:45 | 显示全部楼层
正点原子 发表于 2017-5-4 22:14
更新失败应该不能运行代码吧

无线更新失败时,退出更新流程,由于程序中增加了看门狗复位,一定时间没有喂狗,看门狗复位,顺序执行,执行到jump_to_application();的时候跳转不到应用程序,就会出现我说的异常现象(程序不断在boot里循环执行,此时看门狗没有复位),有点类似于跑飞的现象
回复

使用道具 举报

7

主题

162

帖子

0

精华

高级会员

Rank: 4

积分
541
金钱
541
注册时间
2017-4-6
在线时间
67 小时
发表于 2017-5-8 21:26:25 | 显示全部楼层
应用程序修改了boot的地址吗
回复

使用道具 举报

2

主题

6

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2015-6-26
在线时间
1 小时
 楼主| 发表于 2017-5-12 09:22:06 | 显示全部楼层
JUSTNIUB 发表于 2017-5-8 21:26
应用程序修改了boot的地址吗

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-21 10:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表