分享开发过程中发现的一个bug,最近在做一个GD32+rtthread+lwip的项目,公司为了省钱,用了免费的gcc编译器。由于GD官方的SDK没有对gcc的支持,刚好看到rtthread的bsp中有,所以就直接拿过来改改用了,问题是这样的,我在使用uart6的时候,没有打开中断收发都正常,但是一旦打开某个中断,比如接收中断,发送中断或者空闲中断,系统就会挂掉,经过一些曲折,最终发现问题出在这里,如下图:
bsp/gd32450z-eval/......目录下gcc的启动脚本中,中断向量表少了两个,导致一旦uart6触发中断的时候系统异常直接挂掉,我的理解是没有找到中断处理函数,程序直接跑飞了,不知道这么理解对不对?
还有一个问题,是不是由于缺少了82,在uart6产生中断的时候,直接去寻找UART7_IRQHandler(地址偏移4个字节?),由于没有提供UART7_IRQHandler,程序直接跑飞;如果提供了UART7_IRQHandler,那么程序会进入UART7_IRQHandler正常执行,当然这个时候uart6的中断会不断的响应?
希望早点修复这个小问题,祝rtthread越来越好...