GPIO 中断处理本质上是一个两阶段的过程。 常规用途 I/O (GPIO) 控制器触发的中断,会导致 GPIO 框架扩展 (GpioClx) 的中断服务例程 (ISR) 运行,这种中断被称为主要中断。 此 ISR 将中断的 GPIO 引脚映射到全局系统中断(GSI),并将此 GSI 传递到硬件抽象层(HAL)。 HAL 生成 辅助中断 以运行第二个 ISR,该 ISR 在逻辑上通过此 GSI 连接到 GPIO 引脚。 此流程显示在 GPIO 驱动程序支持概述中的关系图中。
GpioClx 实现 ISR 来服务 GPIO 控制器通过配置为中断输入的 GPIO 引脚接收的中断请求。 当外围设备在 GPIO 引脚上触发中断,并且在 GPIO 控制器中启用且取消屏蔽中断时,GPIO 控制器硬件会触发对处理器的中断。 为了响应此中断,GpioClx 中的 ISR 查询 GPIO 控制器,以确定生成中断的 GPIO 引脚,然后确定分配给此引脚的 GSI。 GpioClx ISR 将此 GSI 传递给 HAL,HAL 调用逻辑上连接到 GSI 的 ISR。
通常,第二个 ISR 属于触发该 GPIO 引脚中断的外围设备的驱动程序。 有关外围设备驱动程序如何以逻辑方式将其 ISR 连接到 GPIO 中断引脚的信息,请参阅 GPIO-Based 中断资源。