问题硬件:GD32VF103CBT6 IDE :NucleiStudio IDE Version:2021-02 Build id:20210202 问题代码: 为例避免干扰,已经最大限度减少无关代码;已省略中断处理函数内容。 void USART2_IRQHandler() {}int main(void){ printf("func=%x\r\n",USART2_IRQHandler); // 打印中断函数的时间地址// ECLIC_Register_IRQ(USART2_IRQn, ECLIC_NON_VECTOR_INTERRUPT,ECLIC_LEVEL_TRIGGER, 1, 0, (void *)USART2_IRQHandler); ECLIC_SetVector(USART2_IRQn, (rv_csr_t)USART2_IRQHandler); int vector_usart2 = ECLIC_GetVector(USART2_IRQn); // 获取中断向量表中中断函数的地址 printf("vector=%x\r\n",vector_usart2); return 0;}
问题现象1: 操作步骤: 新建工程:File -> New -> C/C++ Project -> C++ Managed Build -> Nuclei SDK Project For GD32VF103 SoC -> gd32vf103c_longan_nano -> baremetal_helloworld 替换源码文件内容为以上内容。 当源码名为main.c时,可以正常输出: func=800168a
vector=800168a 当源码名为main.cpp时,输出: func=800168a
vector=0 通过GDB单步调试,以及肉眼disaeembly比对,均未发现任何有意义的线索
问题现象2: 使用rv_start新建工程在QEMU中正常
|