首页 > 代码库 > 异常中断向量表的地址问题

异常中断向量表的地址问题

    目前有个疑问,就是书上说异常中断向量表是从地址0x0000_0000开始的,那么在s5pv210中,好像0x0000_0000地址对应的好像是iROM,而iROM是Samsung公司预置好了的代码,难道说异常中断向量表是存放在iROM中的?而且根据iROM_application手册中提供的图,在0xD003_7400处有一个异常向量表,难道 s5pv210 改变了异常中断向量的地址???
 
这个问题经过长时间的存放,今天终于在一本书上找到了答案,解决如下:
    其实 s5pv210 的中断向量表的位置并没有改变,还是存在于 0 地址处,但是只支持irq中断和复位,其他的几种异常并不支持。当发生中断的时候,cpu仍然会跳转到0x18处执行,然后跳转到iROM中的一个固定的地址处去执行,接着再将 0xD003_7400 处的内容加载到 pc 中。所以说 0xD003_7400 地址处应该存放的中断处理程序的首地址。
    由于这些处理都是iROM中的代码所完成的功能,而且Samsung公司并不公开iROM的源代码,在iROM手册中又没有具体详细的介绍,让我们很难受。该书中使用了一种方法来验证了上面的说法:
就是利用串口来输出iROM中的代码,然后将内容保存为.bin文件,接着使用arm-linux-objdump命令来反汇编bin文件,即可看到对应的汇编代码。回头等学到了串口的时候,用这个方法来验证一下。

 

异常中断向量表的地址问题