1.在eic_ivr中高16bit存放的是一条指令0xE59F,这跳指令放在该寄存器是作什么用的?它怎么会得到执行?
2.对于eic的中断机制本来觉得挺清楚,有一篇文档是《the insider's guide to the ARM STR71x》,里面叙述的比较详细:在0x18的地方放一条 LDR PC,[PC,#-0x808],如果发生了irq中断,跳到0x18,然后从eic_ivr中取出中断向量表地址放到PC中即完成跳转。但是如上面所述,eic_ivr高16bit放的是命令,并不是地址,那么PC会跳到哪里?PC是不是自动忽略掉高16bit?
3.keil提供的启动代码问题,在计算中断向量地址的时候,首地址(&T0TIMI_Addr)加上了0x7E0,这里为何还要加上这个值?这个值是eic_ivr到0地址的距离值,代码中说这个地方是为了LDR PC,[PC,#ofs]来完成跳转的,发生irq的时候,PC应该是首先跳转0x18这个地址的,然后再跳到eic_ivr取偏移地址,那现在如果加上了这个偏移地址怎么能够跳到正确的地址呢?难道是PC要跳到eic_ivr这个地址来取指令?
以上不甚其解,还望指点,谢谢! |