中断控制器对每个SPI/PPI/SGI中断源维护了一个状态机。状态机包含以下四种状态:
(1)Inactive:中断源当前没有触发;
(2)Pending:中断源被触发,但还未被PE应答;
(3)Active:中断源被触发,且被PE应答;
(4)Active and Pending: 中断被PE应答,但中断源另一实例进入Pending状态;
NOTE: LPI没有active或active and pending状态。
下图显示了状态机的结构以及可能的转换。
中断的生命周期依赖于是否配置为电平中断或边沿中断。
1. 电平中断
Inactive to Pending
当触发中断源时,中断转换从Inactive到Pending。
在这个时候GIC发中断信号到PE(如果中断使能且存在足够的优先级)。
Pending to Active&Pending
当PE通过读取CPU接口的IAR寄存器来应答中断,中断转换从Pending到Active&Pending。
在中断异常产生时对寄存器的读取为中断处理路径的一部分。但软件也可以轮询IAR寄存器。
在此时GIC取消发往PE的中断源。
Active and Pending to Active
当外设de-assert中断信号时,中断转换从Active and Pending到Active。
这通常为了响应处理中断,执行在PE上在外设写状态寄存器。
Active to Inactive
当PE写CPU接口的EOIR寄存器时,中断转换从active到Inactive。
这表明PE完成了中断的处理。
2. 边沿中断
Inactive to Pending
当中断源被触发时,中断转换从Inactive到Pending。
在这个时候GIC发中断信号到PE(如果中断使能且存在足够的优先级)。
Pending to Active
当PE通过读取CPU接口的IAR寄存器来应答中断,中断转换从Pending到Active。在中断异常产生时对寄存器的读取为中断处理路径的一部分。但软件也可以轮询IAR寄存器。
在此时GIC取消发往PE的中断源。
Active to Acitve and Pending
当外设再次触发中断信号时,中断转换从active到active and pending。
Active and Pending to Active
当PE写CPU接口的EIOR寄存器时,中断从active到active and pending。
这表明PE完成中断的第一个实例的处理。在这个时候GIC又重新触发中断信号。