打印

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

[复制链接]
105|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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 | 只看该作者
通过触发中断并观察处理器的响应来测试中断处理是否正确。

使用特权

评论回复
5
jcky001| | 2025-2-28 12:00 | 只看该作者
在APP程序中更新中断向量表

使用特权

评论回复
6
cr315| | 2025-2-28 13:00 | 只看该作者
在设置Keil等开发环境时,要保证Bootloader和APP程序被分配到正确的内存区域。

使用特权

评论回复
7
WoodData| | 2025-2-28 13:41 | 只看该作者
因为跳转后的APP默认了原来的中断向量。要在app中修改中断向量

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝