求指点:GD32A503RDT3程序从bootloader跳转APP,无法进入中断程序

[复制链接]
694|81
rwanglf 发表于 2026-4-24 19:33 | 显示全部楼层 |阅读模式

求大神指点:
  MCU :GD32A503RDT3
  BOOTLAODER 起始地址0x08000000
  APP起始地址0x08040000
  跳转前已经设置:
__set_MSP(stack_pointer); // 设置主堆栈指针
SCB->VTOR = app_address;
程序可以跳转,但是跳转之后,systick或者其他timer的中断无法调用,导致程序卡死,无法通信。


这是APP startup文件的问题吗?或者reset_handler缺了什么?
该怎么解决?


补充:如果将APP起始地址设为0x08000000,程序可以正常运行,通信正常。APP程序本身没有问题。
flycamelaaa 发表于 2026-4-27 13:11 | 显示全部楼层
中断向量表没偏移。跳转后APP的中断发生时,CPU还在0x08000000(BootLoader区)找中断函数入口,自然找不到,导致卡死
classroom 发表于 2026-4-27 15:42 | 显示全部楼层
只改VTOR还不够。单纯设置SCB->VTOR = app_address有时不可靠,建议用厂家库函数
cr315 发表于 2026-4-27 17:32 | 显示全部楼层
在APP的main函数第一句调用nvic_vector_table_set(NVIC_VECTTAB_FLASH, 0x40000),参数1固定为FLASH基址,参数2就是偏移量。
elephant00 发表于 2026-4-27 13:13 | 显示全部楼层
为什么烧在0x08000000能跑?因为跳转前BootLoader配置的VTOR指向0x08000000,刚好对上APP的中断向量表,所以一切正常。
flycamelaaa 发表于 2026-4-27 19:13 | 显示全部楼层
SysTick没反应可以确定是中断向量问题,如果点灯能跑但SysTick和Timer不进中断,说明主循环在执行,但中断响应通路断了
jcky001 发表于 2026-4-27 21:14 | 显示全部楼层
建议在__set_MSP之前先__disable_irq(),跳转完成后再在APP的main开头开中断,避免跳转过程中残留中断触发
onlycook 发表于 2026-4-27 22:15 | 显示全部楼层
有没有可能是启动文件里没重设VTOR
powerantone 发表于 2026-4-27 14:46 | 显示全部楼层
这种"跳转正常但中断不进"在GD32的IAP实现里是老生常谈的问题,九成九就是向量表偏移没做对
dffzh 发表于 2026-4-27 15:58 | 显示全部楼层
在app程序MCU底层初始化之前设置偏移地址SCB->VTOR = app_address;再试试,boot里面的设备屏蔽掉。
sanfuzi 发表于 2026-5-9 17:43 | 显示全部楼层
检查 APP 端的向量表偏移              
lihuami 发表于 2026-5-10 20:00 | 显示全部楼层
APP 未重映射中断向量表              
janewood 发表于 2026-5-10 20:05 | 显示全部楼层
APP的向量表地址是否对齐?              
alvpeg 发表于 2026-5-10 20:58 | 显示全部楼层
中断向量表偏移未正确设置,导致中断发生时,单片机 依然去 Bootloader 的地址寻找中断服务函数,从而跑飞或死机。
 楼主| rwanglf 发表于 2026-5-11 09:08 | 显示全部楼层
cr315 发表于 2026-4-27 17:32
在APP的main函数第一句调用nvic_vector_table_set(NVIC_VECTTAB_FLASH, 0x40000),参数1固定为FLASH基址, ...

谢谢!的确是这个问题。

虽然跳转前已经设置偏移地址,但是进入APP之后,重新进入Startup,这段清空了所有数据,并且重新调用SystemInit(),在这个函数里面调用nvic_vector_table_set(NVIC_VECTTAB_FLASH, VECT_TAB_OFFSET);相当与把跳转函数的设置又改回去了。

只要把VECT_TAB_OFFSET宏定义改了就可以了。

感谢各位帮助
chenci2013 发表于 2026-5-13 12:47 | 显示全部楼层
跳转前是否关闭了所有外设中断?              
albertaabbot 发表于 2026-5-13 14:17 | 显示全部楼层
是否在APP中重新设置了VTOR?
pmp 发表于 2026-5-13 17:05 | 显示全部楼层
编译器优化对中断跳转的具体影响有哪些?
wangdezhi 发表于 2026-5-14 20:44 | 显示全部楼层
GD32A503的Bootloader和APP如何实现通信?
uptown 发表于 2026-5-14 21:04 | 显示全部楼层
如何验证APP区中断向量表已正确生成?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

5

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部
0