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快,为什么快呢?
高级微控制器总线架构(AMBA)总线协议是ARM的一组互连规范,它对各种IP之间的芯片通信机制进行标准化,以构建高性能SOC设计。这些设计通常有一个或多个微控制器或微处理器,以及其他几个组件——内部存储器或外部存储器桥、DSP、DMA、加速器和其他各种外围设备,如USB、UART、PCIE、I2C等——所有这些都集成在单个芯片上。
AMBA协议的主要动机是拥有一种标准和高效的方式,来互连这些模块。
学习AMBA协议的第一步是了解这些不同的协议到底在哪里使用,这些协议是如何演变的,以及它们如何融入SOC设计。以下图表(参考AMBA 2.0规范)说明了基于AMBA的传统SOC设计,该设计使用AHB(高级高性能)或ASB(高级系统总线)协议进行高带宽互连,使用APB(高级外围总线)协议进行低带宽外围互连。
ARM有七种模式,我们这里只讨论SVC、IRQ和FIQ模式。
我们可以假设ARM核心有两根中断引脚(实际上是看不见的),一根叫 irq pin, 一根叫fiq pin。在ARM的cpsr中,有一个I位和一个F位,分别用来禁止IRQ和FIQ。
今天我们看一看内核对长期处于睡眠状态的进程的一种监测机制:hung task。
用 crash tool 解析出的结果如下:
© 2025 VxWorks Club