在学习嵌入式的时候中断是我们必须要了解的东西。
首先我们要知道什么是中断,中断的概念(可看可不看,重要的是理解)是指半中间发生阻隔、停顿或故障而断开。其实中断也是异常的一种,只是是一种人为可控的异常。
IRQ与FIQ是ARM处理器的两种不同类型的中断模式:
IRQ(Interrupt Request):指中断模式。
FIQ(Fast Interrupt Request):指快速中断模式。
两种中断模式的区别:
1、在速度方面:FIQ大于IRQ(FIQ所使用的寄存器数量大于IRQ)
2、优先级方面:FIQ大于IRQ(FIQ模式可以打断IRQ模式,反过来IRQ模式不能打断FIQ模式)
3、IRQ和FIQ的响应延迟有区别
4、FIQ的中断向量地址在0x0000001C,而IRQ的在0x00000018
注意:FIQ虽然速度快,优先级高,实时性好,但是必须进快处理中断请求,并离开这个模式。大部分情况下系统只有一个 FIQ 中断,这样当FIQ 中断到达 CPU 之后,CPU 可直接跳转到对应的 FIQ 中断服务程序去执行服务程序,效率高。如果系统中不止有一个 FIQ 中断,则当 FIQ 中断到达 CPU 之后,CPU 首先要做的就是读取VICFIQSTATUS寄存器,判断是哪一个FIQ中断源发出的中断申请,然后再进入相应的中断服务程序,这样会大大降低 FIQ 中断的效率,因此通常在系统中只有一个 FIQ 中断。