FIQ
和
IRQ
区别
FIQ
和
IRQ
是两种不同类型的中断,
ARM
为了支持这两种不同
的中断,提供了对应的叫做
FIQ
和
IRQ
处理器模式(
ARM
有
7
种处
理模式)
。一般的中断控制器里我们可以配置与控制器相连的某个中
断输入是
FIQ
还是
IRQ,
所以一个中断是可以指定为
FIQ
或者
IRQ
的,
为了合理,
要求系统更快响应,
自身处理所耗时间也很短的中断设置
为
FIQ
,否则就设置了
IRQ
。
如果该中断设置为了
IRQ
,那么当该中断产生的时候,中断处理
器通过
IRQ
请求线告诉
ARM
,
ARM
就知道有个
IRQ
中断来了,然
后
ARM
切换到
IRQ
模式运行。
类似的如果该中断设置为
FIQ
,
那么
当该中断产生的时候,
中断处理器通过
FIQ
请求线告诉
ARM
,
ARM
就知道有个
FIQ
中断来了,然后切换到
FIQ
模式运行。
简单的对比的话就是
FIQ
比
IRQ
快,为什么快呢?
ARM
的
FIQ
模式提供了更多的
banked
寄存器,
r8
到
r14
还有
SPSR
,而
IRQ
模式就没有那么多,
R8,R9,R10,R11,R12
对应的
banked
的寄存器就没有,这就意味着在
ARM
的
IRQ
模式下,中断
处理程序自己要保存
R8
到
R12
这几个寄存器,然后退出中断处理时
程序要恢复这几个寄存器,而
FIQ
模式由于这几个寄存器都有
banked
寄存器,模式切换时
CPU
自动保存这些值到
banked
寄存