硬汉嵌入式论坛

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

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

  [复制链接]

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2025-2-9 07:35:46 | 显示全部楼层
凯瑞 发表于 2025-2-8 17:23
看到大家BOOT与APP之间跳转的方法,我总结一下和进行一些拓展,如果不对,还得请大家指正。
1、声明变量, ...

谢谢分享。
回复

使用道具 举报

0

主题

13

回帖

13

积分

新手上路

积分
13
发表于 2025-2-11 11:41:02 | 显示全部楼层
还是有点问题,如果APP程序有bug,跑飞了,就不能从APP跳转到BOOT去刷程序了。就算重新上电,BOOT也是直接跳转到APP,死循环,所以BOOT上电后还是得留后门,可以强制刷写APP
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2025-2-12 07:12:18 | 显示全部楼层
xmcxsta 发表于 2025-2-11 11:41
还是有点问题,如果APP程序有bug,跑飞了,就不能从APP跳转到BOOT去刷程序了。就算重新上电,BOOT也是直接 ...

是的,这种的可以APP双备份。
回复

使用道具 举报

32

主题

115

回帖

211

积分

高级会员

积分
211
发表于 2025-7-7 23:06:41 | 显示全部楼层
请问升级一次之后,g_JumpInit已经是0xAA553344,如果想再次升级应该怎么办呢?怎么把g_JumpInit的值变成一开始的值呢?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2025-7-8 09:12:05 | 显示全部楼层
伊森亨特 发表于 2025-7-7 23:06
请问升级一次之后,g_JumpInit已经是0xAA553344,如果想再次升级应该怎么办呢?怎么把g_JumpInit的值变成一 ...

APP里面可以修改。
回复

使用道具 举报

32

主题

115

回帖

211

积分

高级会员

积分
211
发表于 2025-7-10 16:16:08 | 显示全部楼层
xy201207 发表于 2021-11-17 10:34
我们也是这么做的,补充一下。

一开始上电走最下面,移植官方例子,弹出一个菜单可以吗?
Init等于AA553344之后,复位,执行第一个分支,跳转。
如果在app中想升级,就把Init设置成5AA51234,然后再调用复位函数nvicsystemreset?
此时走中间分支,还是移植官方例子,弹一个菜单,接收固件,升级。
第二个和第三个分支能否合成一个呢
回复

使用道具 举报

2

主题

10

回帖

16

积分

新手上路

积分
16
发表于 2025-7-26 19:02:23 | 显示全部楼层
F407系列分散加载文件怎么写?只用SRAM,有没有大佬弄过。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2025-7-27 11:15:03 | 显示全部楼层
violet872 发表于 2025-7-26 19:02
F407系列分散加载文件怎么写?只用SRAM,有没有大佬弄过。

MDK创建工程后,本身带了一个SCT文件,你在这个基础上修改就行
回复

使用道具 举报

2

主题

9

回帖

15

积分

新手上路

积分
15
发表于 2025-7-30 23:01:14 | 显示全部楼层
硬汉哥,请教一个问题,我发现BOOT程序跳转APP程序,有出现跳转失败,概率较小。BOOT程序会初始化一大堆外设程序,包括LWIP,USB驱动程序,再根据条件跳转到APP, APP跳转不成功和外设初始化程序有关系吗?
回复

使用道具 举报

2

主题

9

回帖

15

积分

新手上路

积分
15
发表于 2025-7-30 23:04:42 | 显示全部楼层
硬汉哥,BOOT程序跳转到APP,BOOT程序会初始化一大堆设程序,包括LWIP,USB驱动程序,然后再根据情况跳转到APP,测试中发现会跳转失败,概率较小,我想问一下,跳转APP失败和初始化外设驱动程序有关系吗?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 2025-7-31 08:55:39 | 显示全部楼层
弯弯的月亮 发表于 2025-7-30 23:01
硬汉哥,请教一个问题,我发现BOOT程序跳转APP程序,有出现跳转失败,概率较小。BOOT程序会初始化一大堆外 ...

可以试试BOOT里面什么都不做,上电直接跳转过去试试,如果正常,说明和BOOT确实有关系
回复

使用道具 举报

1

主题

21

回帖

24

积分

新手上路

积分
24
发表于 6 天前 | 显示全部楼层
eric2013 发表于 2024-10-23 09:55
如果是内置Flash做备份区,不太方便,比如楼主位使用的是STM32H743/H750系列,这个系列一个扇区是128KB, ...

硬汉哥,即使没有纽扣电池,在单片机上电的情况下,备份区也是可以存储数据的,把标志位存储在备份区是否是一个更好的选择呢?这样会简单很多。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 5 天前 | 显示全部楼层
LeslieChia 发表于 2025-8-5 17:04
硬汉哥,即使没有纽扣电池,在单片机上电的情况下,备份区也是可以存储数据的,把标志位存储在备份区是否 ...

可以的。
回复

使用道具 举报

3

主题

38

回帖

47

积分

新手上路

积分
47
发表于 5 天前 来自手机 | 显示全部楼层
请教一下硬汉大佬,最近遇到一个问题,在从boot跳转到app以后,有时候我想在app中去调用boot内的函数,应该怎么做?还有如果在app中调用boot内的函数的时候,如果boot内该函数涉及到一下打开和关闭中断的操作,那么这个时候的中断是调用app的中断表还是boot内的中断表?如果不管调用的是哪个表,不管它可以吗?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
 楼主| 发表于 5 天前 | 显示全部楼层
spi-sd 发表于 2025-8-6 10:14
请教一下硬汉大佬,最近遇到一个问题,在从boot跳转到app以后,有时候我想在app中去调用boot内的函数,应该 ...

动态APP加载可以实现这个功能。

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

或者你使用坛友的这个方案,还方便些:
论坛首发,STM32实现动态加载模组(似于Windows的dll),使用MDK编译动态库类
https://forum.anfulai.cn/forum.php?mod=viewthread&tid=109952

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-11 20:54 , Processed in 0.049200 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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