GD32 Bootloader(IAP)APP程序中断问题,下载后中断向量表仍然是BOOT的中断,而不是APP的

[复制链接]
1878|7
 楼主| watch361 发表于 2025-2-28 10:27 | 显示全部楼层 |阅读模式
本帖最后由 watch361 于 2025-2-28 10:28 编辑

芯片GD32e103  跳转代码如下,但是触发的中断一直是Bootloader的中断,我的问题是,为何改变中断向量表地址无效,仍然选择0x8000000的向量表。导致APP中断不触发void jumpToApplication(){
    uint32_t applicationAddress = 0x08004000; // ????????
    // 关闭所有中断
    __set_PRIMASK(1);
    // 设置应用程序的堆栈指针
    __set_MSP(*(volatile uint32_t *)applicationAddress); // ???????
    // 设置中断向量表地址
    //nvic_vector_table_set(NVIC_VECTTAB_FLASH, applicationAddress);
     SCB->VTOR = applicationAddress;
    // nvic_vector_table_set(NVIC_VECTTAB_FLASH, applicationAddress);
    typedef void (*pFunction)(void);
    pFunction application = (pFunction)(*((volatile uint32_t *)(applicationAddress + 4)));

    application(); // ???????
}



两只袜子 发表于 2025-2-28 10:49 | 显示全部楼层
在APP程序的起始部分,添加代码来更新中断向量表。
elephant00 发表于 2025-2-28 10:50 | 显示全部楼层
在下载APP程序后,使用调试工具检查中断向量表是否已正确更新。
elephant00 发表于 2025-2-28 10:50 | 显示全部楼层
通过触发中断并观察处理器的响应来测试中断处理是否正确。
jcky001 发表于 2025-2-28 12:00 | 显示全部楼层
在APP程序中更新中断向量表
cr315 发表于 2025-2-28 13:00 | 显示全部楼层
在设置Keil等开发环境时,要保证Bootloader和APP程序被分配到正确的内存区域。
WoodData 发表于 2025-2-28 13:41 | 显示全部楼层
因为跳转后的APP默认了原来的中断向量。要在app中修改中断向量
zchong 发表于 2025-3-1 18:26 | 显示全部楼层
APP中又改回去了吧,顺藤摸瓜,研究一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

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