stormwind123 发表于 2025-7-23 21:50

在GD32A503的Bootloader跳转到APP时,堆栈冲突。

在GD32A503的Bootloader跳转到APP时,堆栈冲突,

xiaoqizi 发表于 2025-8-5 20:49

若跳转前未将主堆栈指针更新为APP的初始堆栈地址,则CPU仍会使用Bootloader的堆栈空间,导致两者数据混杂甚至覆盖关键变量

木木guainv 发表于 2025-8-5 22:32

当从APP返回Bootloader并再次跳转时,之前APP使用的局部变量、中断现场等信息仍保留在RAM中

Jiangxiaopi 发表于 2025-8-6 07:58

当从APP返回Bootloader并再次跳转时,之前APP使用的局部变量、中断现场等信息仍保留在RAM中

荣陶陶 发表于 2025-8-6 09:42

必须在跳转前通过__set_MSP()函数显式设置APP的堆栈顶地址

Zhiniaocun 发表于 2025-8-6 11:31

利用IDE的调试功能观察跳转前后的寄存器状态,确认堆栈指针是否切换成功

Zuocidian 发表于 2025-8-6 13:34

利用IDE的调试功能观察跳转前后的寄存器状态,确认堆栈指针是否切换成功

Puchou 发表于 2025-8-6 15:27

在Bootloader中禁用看门狗定时器,防止因未及时喂狗导致意外复位影响调试。

Xiashiqi 发表于 2025-8-6 17:10

直接调用函数指针跳转会不清理堆栈导致二次跳转失败

小海师 发表于 2025-8-6 18:53

APP的向量表第一个字是初始堆栈地址,第二个字是复位中断处理函数入口。务必确保这两个值已由编译器正确生成并烧录到对应Flash位置

Haizangwang 发表于 2025-8-6 20:46

RTC与深度休眠是否可以协同工作呢

豌豆爹 发表于 2025-8-13 15:55

可能是堆栈指针未正确初始化。

duo点 发表于 2025-8-13 15:55

Bootloader和APP的代码、数据或堆栈区域在内存中重叠,导致运行时冲突。

七毛钱 发表于 2025-8-13 15:56

中断向量表未重映射?

内政奇才 发表于 2025-8-13 15:56

可能是链接脚本配置错误导致的。

麻花油条 发表于 2025-8-13 15:57

重映射中断向量表。

l63t89 发表于 2025-8-31 23:46

GD32A503 的 RAM 空间是共享的
页: [1]
查看完整版本: 在GD32A503的Bootloader跳转到APP时,堆栈冲突。