这两天用JTAG调试时发现奇怪的问题:每次发生中断时就跑飞,在网上搜了一下,原来是发生中断时没有找到中断向量表。我用反汇编单步调试,中断发生时,PC并没有跳到0x30000000处的中断向量表处(我已经在ADS把RO Base设置成0x30000000,也在IRQ中断设置了断点)就直接跑飞了。于是我把程序下载到NAND Flash(程序正常运行,中断没问题),在这情况下我再次使用JTAG在线调试,这下子中断不再跑飞了。于是我可以确定,JTAG在线调试发生中断时PC是跳到0x0开始的中断向量表。
问题是,既然已经设置了RO Base为0x30000000,为什么0x0没有映射到RO Base呢?在线调试都是会这样吗?如果这样的话,是不是在线调试前都要确保NAND Flash 0x0处要写进中断向量表呢?
RO Base为0x30000000只是说你的程序下载到了0x30000000地址,而发生中断时PC跳到0起始的位置这是固定的,你也不需要怀疑。
所以在线调试时这样简单的操作你没办法调试中断,可以参考下边的文章调试中断。
如何在ADS调试中使用中断