嵌入式系统技术应用与开发
上QQ阅读APP看书,第一时间看更新

2.3.2 ARM的异常中断

(1)异常中断向量

异常中断的向量地址如表2-5所示。

表2-5 异常中断的向量地址

(2)异常中断优先级

当多个异常中断同时发生时,处理器根据一个固定的优先级系统来决定处理它们的顺序。异常中断优先级如表2-6所示。

表2-6 异常中断优先级

注意,并非所有的异常中断都会同时发生:未定义指令和软件中断是相互排斥的,因为它们都对应于当前指令的唯一的(非重叠的)解码结果。如果一个数据中止和FIQ中断同时发生了,并且此时的FIQ中断是使能的,则ARM920T先进入到数据中止处理程序,然后立即进入FIQ向量。

从FIQ正常返回后,数据中止的处理程序才恢复执行。将数据中止设计为比FIQ拥有更高的优先级,可以确保传输错误不能逃避检测。在这种情况下进入FIQ异常处理的时间延长了,因为这一时间必须考虑FIQ中断最长反应时间。

(3)中断反应时间

最坏的情况下FIQ中断的反应时间:假设它是使能的,包括通过同步器最长请求时间(如果是异步则是Tsyncmax),加上最长的指令执行时间(Tldm,LDM指令用于载入所有的寄存器,因此需要最长的执行时间),加上数据中止进入时间(Texc),加上进入FIQ处理所需要的时间(Tfiq)。

最后,ARM920T会执行位于0x1C的指令。Tsyncmax是3个处理周期,Tldm是20个处理周期,Texc是3个处理周期,TfiQ是2个处理周期总计28个处理周期。在一个20 MHz的处理时钟系统中,它使用的时间超过1.4μs。最长的IRQ反应时间的计算方法类似,但是必须考虑到更高级的FIQ中断可以推迟任意长时间进入IRQ中断处理。最小的FIQ或IRQ的反应时间包括通过同步器的时间Tsyncmax加上Tfiq,是4个处理周期。

(4)复位

当nRESET信号为低,ARM920T放弃任何指令的执行,并从增加的字地址处取指令。

当nRESET信号变高时,ARM920T进行如下操作:

1)将当前的PC值和CPSR值写入R14_svc和SPSR_svc。已保存的PC和SPSR的值是未知的。

2)强制M[4:0]为10011(超级用户模式),将CPSR中的“I”和“F”位设为1,并将T位清零。

3)强制PC从0x00地址取得下一条指令。

4)恢复为ARM状态开始执行。