硬汉嵌入式论坛

 找回密码
 立即注册
楼主: eric2013
收起左侧

[BOOT/IAP] 实战技能分享,一劳永逸的解决BOOT跳转APP失败问题,含MDK AC5,AC6和IAR,同时制作了一个视频操作说明

  [复制链接]

3

主题

38

回帖

47

积分

新手上路

积分
47
发表于 2023-3-21 16:45:16 | 显示全部楼层
请问这个操作SES能用吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2023-3-21 16:54:49 | 显示全部楼层
wklhwkl 发表于 2023-3-21 16:45
请问这个操作SES能用吗?

没问题,SES有个ld文件,操作方法和IAR的icf文件一样。
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2023-3-23 07:36:26 | 显示全部楼层
有cubeide的配置教程吗,关于上电不初始化RAM空间的
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2023-3-23 09:52:01 | 显示全部楼层
linchangqing 发表于 2023-3-23 07:36
有cubeide的配置教程吗,关于上电不初始化RAM空间的

https://community.nxp.com/t5/i-M ... 8877/highlight/true
回复

使用道具 举报

10

主题

34

回帖

64

积分

初级会员

积分
64
发表于 2023-5-12 18:12:50 | 显示全部楼层
硬汉哥,请教一下就是我已经正常移植BOOT和APP了,但是当我板子断电以后重新上电,就还是跳转到BOOT程序里,按照你的教程里面定义g_JumpInit的值,就是重新上电,值又变了,无法进入APP程序
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2023-5-13 01:50:33 | 显示全部楼层
frankff 发表于 2023-5-12 18:12
硬汉哥,请教一下就是我已经正常移植BOOT和APP了,但是当我板子断电以后重新上电,就还是跳转到BOOT程序里 ...

你的分散加载是不是没有设置。
回复

使用道具 举报

10

主题

34

回帖

64

积分

初级会员

积分
64
发表于 2023-5-13 10:14:03 | 显示全部楼层
eric2013 发表于 2023-5-13 01:50
你的分散加载是不是没有设置。

用的AC5编译器,没有设置分散加载,直接这样定义的uint32_t g_JumpInit __attribute__((at(0x20000000), zero_init));
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2023-5-13 10:38:16 | 显示全部楼层
frankff 发表于 2023-5-12 18:12
硬汉哥,请教一下就是我已经正常移植BOOT和APP了,但是当我板子断电以后重新上电,就还是跳转到BOOT程序里 ...

细看了下你的回复,断电后RAM数据就丢失了,就是这样的,要先进入一次boot,然后跳转的。


回复

使用道具 举报

10

主题

34

回帖

64

积分

初级会员

积分
64
发表于 2023-5-13 11:25:50 | 显示全部楼层
eric2013 发表于 2023-5-13 10:38
细看了下你的回复,断电后RAM数据就丢失了,就是这样的,要先进入一次boot,然后跳转的。

好的,明白了,感谢硬汉哥!
回复

使用道具 举报

1

主题

2

回帖

5

积分

新手上路

积分
5
发表于 2023-7-28 05:27:29 | 显示全部楼层
eric2013 发表于 2021-11-19 12:45
如果是外部QSPI Flash的话,得初始化QSPI Flash再跳转。

硬汉大佬,更具这个方式设置了BOOT跳转,然后也在跳转前初始化了QSPI FLASH, 请问一下为什么debug APP程序的时候,地址并不是0x9000000, 而是还在0x8xxxxx.
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2023-7-28 09:08:19 | 显示全部楼层
x.zheng@lboro 发表于 2023-7-28 05:27
硬汉大佬,更具这个方式设置了BOOT跳转,然后也在跳转前初始化了QSPI FLASH, 请问一下为什么debug APP程 ...

那说明没有正常运行到0x9000000地址空间。
回复

使用道具 举报

1

主题

2

回帖

5

积分

新手上路

积分
5
发表于 2023-8-14 11:32:15 | 显示全部楼层
STM32F407VE出现一下报错,MDK AC5环境,标准库开发;system_stm32f4xx.o(.data) type RW incompatible with boot.o(.ARM.__AT_0x20000000) type ZI in er RW_IRAM1. Not enough information to list image symbols. Not enough information to list load addresses in the image map.
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2023-8-15 14:18:35 | 显示全部楼层
Alex_ 发表于 2023-8-14 11:32
STM32F407VE出现一下报错,MDK AC5环境,标准库开发;system_stm32f4xx.o(.data) type RW incompatible wit ...

在MDK Option的RAM配置里面把对应的地址空间腾出来,否则冲突了。
回复

使用道具 举报

76

主题

208

回帖

436

积分

高级会员

积分
436
发表于 2023-10-17 14:33:56 | 显示全部楼层
请教硬汉兄,MDK AC6怎么指定函数的加载地址?是跟数据一样? APP里面的代码是否可以调用boot里的函数代码呢?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2023-10-18 15:49:46 | 显示全部楼层
薪火相传 发表于 2023-10-17 14:33
请教硬汉兄,MDK AC6怎么指定函数的加载地址?是跟数据一样? APP里面的代码是否可以调用boot里的函数代码 ...

这个得用ThreadX动态内存管理才行。

第4期ThreadX视频教程:单片机动态APP加载玩法,像手机电脑一样加载卸载多个应用软件(2022-05-01)
https://www.armbbs.cn/forum.php?mod=viewthread&tid=112203

第5期ThreadX视频教程:单片机动态APP加载MPU玩法,隔离应用和系统,APP死机了系统也不会挂(2022-05-15)
https://www.armbbs.cn/forum.php?mod=viewthread&tid=112368
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2023-11-3 15:07:39 | 显示全部楼层
,详细,全面,完美解决遇到的问题
回复

使用道具 举报

2

主题

10

回帖

16

积分

新手上路

积分
16
发表于 2023-11-9 16:41:54 | 显示全部楼层
mark,正需要啊
回复

使用道具 举报

0

主题

7

回帖

7

积分

新手上路

积分
7
发表于 2023-12-7 17:30:36 | 显示全部楼层
楼主您好!IAR中,在设置栈顶地址的时候,提示未定义_ASM。如何正确使用呢?
栈顶地址.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2023-12-8 09:49:16 | 显示全部楼层
qqqsj 发表于 2023-12-7 17:30
楼主您好!IAR中,在设置栈顶地址的时候,提示未定义_ASM。如何正确使用呢?

这两个函数删掉,不要自己做,实用CMSIS软件包提供的。
回复

使用道具 举报

0

主题

7

回帖

7

积分

新手上路

积分
7
发表于 2023-12-11 09:58:30 | 显示全部楼层
eric2013 发表于 2023-12-8 09:49
这两个函数删掉,不要自己做,实用CMSIS软件包提供的。

我测试一下,可以确定是跳转地址不成功,就是设置栈顶地址没成功,楼主说的CMSIS是有相关的设置栈顶地址的函数吗?找了一下,没找到,还请赐教。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2023-12-12 08:17:20 | 显示全部楼层
qqqsj 发表于 2023-12-11 09:58
我测试一下,可以确定是跳转地址不成功,就是设置栈顶地址没成功,楼主说的CMSIS是有相关的设置栈顶 ...

__set_CONTROL
__set_PSP
__set_MSP
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2023-12-19 16:44:00 | 显示全部楼层
eric2013 发表于 2023-8-15 14:18
在MDK Option的RAM配置里面把对应的地址空间腾出来,否则冲突了。

硬汉哥,您说的腾出这个位置,下图这种方式更改就可以吗?其他不需要更改了吗
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2023-12-19 18:31:16 | 显示全部楼层
C:\Users\Luna\Desktop\1.png硬汉老师,0x2000 0000的地址是这样分出来的吗?我bootloader程序主函数这样写后,还是进不去app程序
1.png
2.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2023-12-20 09:04:30 | 显示全部楼层
逍遥李根 发表于 2023-12-19 18:31
硬汉老师,0x2000 0000的地址是这样分出来的吗?我bootloader程序主函数这样写后,还是进不去app程序

楼主位有提供例子,把我的例子下载下来对比下。
回复

使用道具 举报

0

主题

3

回帖

3

积分

新手上路

积分
3
发表于 2023-12-20 10:16:30 | 显示全部楼层
逍遥李根 发表于 2023-12-19 18:31
硬汉老师,0x2000 0000的地址是这样分出来的吗?我bootloader程序主函数这样写后,还是进不去app程序

我理解错啦,我一直以为是掉电复位后ram数据还能保存,软复位后就好啦
回复

使用道具 举报

3

主题

24

回帖

33

积分

新手上路

积分
33
发表于 2024-1-31 10:25:54 | 显示全部楼层
eric2013 发表于 2022-6-14 16:45
问题已经解决,程序没有正确放到非初始化空间。

硬汉大佬,我的理解是这个AA553344除非写到flash中,怎么保证程序都复位了,这个值还没有被初始化呢?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
 楼主| 发表于 2024-1-31 10:53:57 | 显示全部楼层
仰望星期五 发表于 2024-1-31 10:25
硬汉大佬,我的理解是这个AA553344除非写到flash中,怎么保证程序都复位了,这个值还没有被初始化呢?

这个问题专门做过一个总结。

STM32H7软件复位NVIC_SystemReset后,各个RAM继续保持原有数据的问题总结(2019-10-03)
https://www.armbbs.cn/forum.php?mod=viewthread&tid=95217
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-29 03:53 , Processed in 0.249023 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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