中断: 指处理机处理程序运行中出现的紧急事件的整个过程.程序运行过程中,系统外部、系统内部或者现行程序本身若出现紧急事件,处理机立即中止现行程序的运行,自动转入相应的处理程序(中断服务程序),待处理完后,再返回原来的程序运行,这整个过程称为程序中断。
中断向量表即中断向量的列表。
GIC中断控制器即(Generic Interrupt Controller)
GIC用于管理 Cortex-A 的中断。GIC 提供了开关中断,设置中断优先级。
左侧的 Software0_IRQn~PMU_IRQ2_IRQ 这些都是 I.MX6U 的中断,他们都属于 IRQ 中断。当图 17.1.2.1 左侧这些中断中任意一个发生的时候 IRQ 中断都会被触发,所以,我们需要在 IRQ 中断服务函数中判断究竟是左侧的哪个中断发生了,然后再做出具体的处理。
(1) SPI中断(Shared Peripheral Interrupt),即共享中断。
顾名思义,所有 Core 共享的中断,这个是最常见的,那些外部中断都属于 SPI 中断(注意!不是 SPI 总线那个中断) 。比如按键中断、串口 中断等等,这些中断所有的 Core 都可以处理,不限定特定 Core。
(2) PPI(Private Peripheral Interrupt),私有中断。
我们说了 GIC 是支持多核的,每个核肯定有自己独有的中断。这些独有的中断肯定是要指定的核心处理,因此这些中断就叫做私有中断。
(3) SGI(Software-generated Interrupt),软件中断。
由软件触发引起的中断,通过向寄存器 GICD_SGIR 写入数据来触发,系统会使用 SGI 中断来完成多核之间的通信。
IMX6ULL 支持 128 个中断。为了区分不同的中断,引入了中断号。
ID0~ID15 是给 SGI,
ID16~ID31 是给 PPI,
剩下的 ID32~1019 给 SPI(Shared Peripheral Interrupt),也就是按键中断、串口中断等等。