一、对FIQ你必须进快处理中断请求,并离开这个模式。编译
二、IRQ能够被FIQ所中断,但FIQ不能被IRQ所中断,在处理FIQ时必需要关闭中断。请求
三、FIQ的优先级比IRQ高。程序
四、FIQ模式下,比IRQ模式多了几个独立的寄存器。时间
不要小看这几个寄存器,ARM在编译的时候,若是你FIQ中断处理程序足够用这几个独立的寄存器来运做,它就不会进行通用寄存器的压栈,这样也省了一些时间。系统
五、FIQ的中断向量地址在0x0000001C,而IRQ的在0x00000018。(也有的在FFFF001C以及FFFF0018)
写过完整汇编系统的都比较明白这点的差异,18只能放一条指令,为了避免与1C处的FIQ冲突,这个地方只能跳转,而FIQ不同,1C之后没有任何中断向量表了,这样能够直接在1C处放FIQ的中断处理程序,因为跳转的范围限制,至少少了一条跳转指令。
六、IRQ和FIQ的响应延迟有区别
IRQ的响应并不及时,从Verilog仿真来看,IRQ会延迟几个指令周期才跳转到中断向量处,看起来像是在等预取的指令执行完。FIQ的响应不清楚,也许比IRQ快。