プライマリ割り込みとセカンダリ割り込み

GPIO 割り込み処理は、本質的に 2 段階のプロセスです。 汎用 I/O (GPIO) コントローラーからの割り込みは、GPIO フレームワーク拡張 (GpioClx) 割り込みサービス ルーチン (ISR) を実行し、プライマリ割り込みと呼ばれます。 この ISR は、割り込み GPIO ピンをグローバル システム割り込み (GSI) にマップし、この GSI をハードウェア抽象化レイヤー (HAL) に渡します。 HAL は、セカンダリ割り込みを生成して、この GSI を介して GPIO ピンに論理的に接続されている 2 番目の ISR を実行します。 このプロセスは、GPIO ドライバー サポート概要の図に示されています。

GpioClx は、割り込み入力として構成されている GPIO ピンを介して GPIO コントローラーが受信する割り込み要求を処理する ISR を実装します。 周辺機器が GPIO ピンの割り込みをアサートし、割り込みが有効になり、GPIO コントローラーでマスク解除されると、GPIO コントローラー ハードウェアはプロセッサに割り込みをアサートします。 この割り込みに応答して、GpioClx の ISR は、割り込みを生成した GPIO ピンを識別する GPIO コント ローラーをクエリしてから、このピンに割り当てられている GSI を決定します。 GpioClx ISR はこの GSI を HAL に渡し、HAL は GSI に論理的に接続されている ISR を呼び出します。

通常、この 2 番目の ISR は、GPIO ピンの割り込みをアサートした周辺機器のドライバーに属します。 周辺機器ドライバーが ISR を GPIO 割り込みピンに論理的に接続する方法については、「GPIO ベースの割り込みリソース」を参照してください。