ARM7 TDMI有两种类型的中断模式:FIQ和IRQ。IRQ和FIQ之间的区别是:对于FIQ必须尽快处理事件并离开这个模式;IRQ可以被FIQ中断,但IRQ不能中断FIQ;为了使FIQ更快,FIQ模式具有更多的私有寄存器。 CPSR指ARM7 TDMI处理器的程序状态寄存器。如果CPSR的F位被设置为1,处理器将不接受来自中断控制器的FIQ;如果CPSR的I位被设置为1,处理器将不接受来自中断控制器的IRQ。因此,为了使能相应中断机制,CPSR的F位或I位必须被清零,同时中断屏蔽寄存器INTMSK的相应位也必须被清零。 中断请求寄存器INTPND的各位指示了某个中断请求是否还未被处理。在INTPND中将要或已被置位的中断位称为Pending位。若某个Pending位被置位,当CPSR的I标志位或F标志位被清零或者为0状态时,中断服务程序就会被启动执行。Pending寄存器是一个只读寄存器,所以在中断服务程序中要想清除Pending位时,需要采用在中断服务寄存器I_ISPC或F_ISPC的相应位写入1的方式来实现。 在30个中断源中有26个中断源提供给中断控制器,4个外部中断(EINT4/5/6/7)请求是通过“或”的形式合成为1个中断源送至中断控制器,2个UART错误中断(UERROR0/1)也是如此。 有关中断源的详细信息如表所示。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3C44B0X中断优先级的决定有两种方式:一是通过软件查询决定中断优先级,该方式在跳到相应服务程序之前需要一个较长的延迟时间;另一种是通过硬件决定中断优先级——矢量中断模式。在多个中断源同时请求中断时,硬件优先级逻辑可以决定哪一个中断应该得到响应,然后这个硬件逻辑产生一条跳转指令跳到矢量表中对应的中断矢量地址处,在这个地址上事先已经放置了跳转到与该中断相应的中断服务程序的跳转指令。与前一种软件方式相比,这种方式将大大减少中断延迟。 |
电工学习网 ( )
GMT+8, 2021-12-6 20:44