OpenEdv-开源电子网

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

STM32F4 IAP bootloader跳转失败

[复制链接]

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2019-7-10
在线时间
18 小时
发表于 2019-11-5 16:39:53 | 显示全部楼层 |阅读模式
这个是跳转函数
void loading_program(uint32_t LoadAddress)
{
    if (((*(__IO uint32_t*)LoadAddress) & 0x2FFE0000 ) == 0x20000000)/*检查栈顶地址是否合法*/
    {
                U2_Printf("\r\nM2 Ready to go to the APP!\r\n");
                osDelay(50);
                /*Debug*/
                U2_Printf("Jump Address:0x%08X\r\n", ((*(uint32_t*)LoadAddress) & 0x2FFE0000 ));
                osDelay(100);
               
                Disable();
               
        JumpToAddress = (pFunction)*(uint32_t*) (LoadAddress + 4);
        MSR_MSP(*(__IO uint32_t*) LoadAddress);
        JumpToAddress();        /*跳转app*/
    }
        else
        {
                U2_Printf("\r\nM2 Loading APP ERROR!\r\n");
                osDelay(50);
                U2_Printf("Load Address:0x%08X\r\n", LoadAddress);
                osDelay(50);
                /*Debug*/
                U2_Printf("Jump Address:0x%08X\r\n", ((*(__IO uint32_t*)LoadAddress)&0x2FFE0000));
                osDelay(1000);
        }
}

跳转打印是这个
M2 Loading APP ERROR!
Load Address:0x08020000
Jump Address:0x28160000

一直无解为什么是这样

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

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10567
金钱
10567
注册时间
2017-2-18
在线时间
1913 小时
发表于 2019-11-6 12:15:55 | 显示全部楼层
回复 支持 反对

使用道具 举报

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2019-7-10
在线时间
18 小时
 楼主| 发表于 2019-11-6 20:43:17 | 显示全部楼层
现在是能跳转过去了,是因为烧入到APP程序里面的bin文件是大小端的问题,所以跳转的时候一直出现0x28160000。但是现在有个问题是,我跳转到APP程序里面的时候,程序一直卡在DMA中断里面,程序一直跳不出来。
回复 支持 反对

使用道具 举报

3

主题

1155

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7464
金钱
7464
注册时间
2015-1-15
在线时间
1368 小时
发表于 2019-11-7 19:25:22 | 显示全部楼层
你IAP内用到DMA了?
一分耕耘一分收获。
回复 支持 反对

使用道具 举报

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2019-7-10
在线时间
18 小时
 楼主| 发表于 2019-11-9 11:11:03 | 显示全部楼层
成功解决了,我的IAP用到了DMA、RTOS定时器、中断什么的。
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2019-11-19
在线时间
23 小时
发表于 2019-11-29 11:39:35 | 显示全部楼层
你好,我在做IAP升级时也碰到了你类似的问题,无法跳转到APP,你说的是BIN文件大小端的问题,这是什么意思?方便解释一下吗?谢谢
回复 支持 反对

使用道具 举报

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2019-7-10
在线时间
18 小时
 楼主| 发表于 2019-12-7 10:40:04 | 显示全部楼层
wcjynn 发表于 2019-11-29 11:39
你好,我在做IAP升级时也碰到了你类似的问题,无法跳转到APP,你说的是BIN文件大小端的问题,这是什么意思 ...

比如说程序本来应该烧入的顺序是0x1234567890但是你烧入的是0x9078563412
回复 支持 反对

使用道具 举报

18

主题

148

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1528
金钱
1528
注册时间
2018-11-15
在线时间
292 小时
发表于 2019-12-12 15:51:42 | 显示全部楼层
dsfsd 发表于 2019-12-7 10:40
比如说程序本来应该烧入的顺序是0x1234567890但是你烧入的是0x9078563412

大小端的顺序反了怎么解决
回复 支持 反对

使用道具 举报

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2019-7-10
在线时间
18 小时
 楼主| 发表于 2019-12-12 21:03:36 | 显示全部楼层
yklstudent 发表于 2019-11-7 19:25
你IAP内用到DMA了?

串口加DMA
回复 支持 反对

使用道具 举报

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2019-7-10
在线时间
18 小时
 楼主| 发表于 2019-12-12 21:04:39 | 显示全部楼层
渡渡 发表于 2019-12-12 15:51
大小端的顺序反了怎么解决

与运算把大小端换过来啊
回复 支持 反对

使用道具 举报

2

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2019-7-10
在线时间
18 小时
 楼主| 发表于 2019-12-12 21:09:22 | 显示全部楼层
提醒一下大家,在Bootloader里面用到的所有外设在跳转到App程序的时候最好全部复位再从新初始话一遍,不然程序可能运行不起来或者卡死。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-14 21:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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