watch361 发表于 2025-2-28 10:27

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

本帖最后由 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]
查看完整版本: GD32 Bootloader(IAP)APP程序中断问题,下载后中断向量表仍然是BOOT的中断,而不是APP的