一部の汎用 I/O (GPIO) コントローラー デバイスでは、割り込み要求入力として機能するように GPIO ピンを構成できます。 これらの割り込み要求入力は、GPIO ピンに物理的に接続されている周辺機器によって駆動されます。 これらの GPIO コントローラーのドライバーは、個々の GPIO ピンで割り込み要求を有効化、無効化、マスク、マスク解除、クリアすることができます。
GPIO 割り込みのサポートはオプションです。 GPIO フレームワーク拡張機能 (GpioClx) では、GPIO 割り込みをサポートするために GPIO コントローラーは必要ありません。
このセクションでは...
| トピック | 説明 |
|---|---|
GPIO 割り込み処理は、本質的に 2 段階のプロセスです。 汎用 I/O (GPIO) コントローラーからの割り込みは、GPIO フレームワーク拡張 (GpioClx) 割り込みサービス ルーチン (ISR) を実行する原因となり、 プライマリ割り込みと呼ばれます。 この ISR は、割り込み GPIO ピンをグローバル システム割り込み (GSI) にマップし、この GSI をハードウェア抽象化レイヤー (HAL) に渡します。 HAL は、この GSI を介して GPIO ピンに論理的に接続されている 2 番目の ISR を実行する セカンダリ割り込みを 生成します。 このプロセスは、 GPIO ドライバーサポートの概要の図に示されています。 |
|
汎用 I/O (GPIO) ピンに割り込みを送信する周辺機器のドライバーは、抽象 Windows 割り込みリソースとして GPIO 割り込みを取得します。 カーネル モード ドライバー フレームワーク (KMDF) ドライバーは、 EvtDevicePrepareHardware イベント コールバック関数を介してこれらのリソースを受け取ります。 |
|
Windows 8 以降では、カーネル モード ドライバー フレームワーク (KMDF) ドライバーとユーザー モード ドライバー フレームワーク (UMDF) ドライバーをオプションとして、パッシブ レベルで実行する割り込みサービス ルーチン (ISR) を登録できます。 |
|
オプションとして、汎用 I/O (GPIO) コントローラーのドライバーは、GPIO 割り込みのサポートを提供できます。 GPIO 割り込みをサポートするために、GPIO コントローラー ドライバーは、これらの割り込みを管理するためのコールバック関数のセットを実装します。 ドライバーには、GPIO フレームワーク拡張機能 (GpioClx) のクライアントとして自身を登録するときにドライバーが提供する登録パケットに、これらのコールバック関数へのポインターが含まれています。 |
|
GPIO コントローラー ドライバーは 、GPIO_CLX_AcquireInterruptLock メソッドと GPIO_CLX_ReleaseInterruptLock メソッドを呼び出して、GPIO フレームワーク拡張機能 (GpioClx) によって内部的に実装される割り込みロックを取得および解放できます。 IRQL = PASSIVE_LEVEL で実行されるドライバー コードは、これらのメソッドを呼び出して、GpioClx の割り込みサービス ルーチン (ISR) と同期できます。 GpioClx は、GPIO コントローラー内のピンの各バンクに個別の割り込みロックを割り当てします。 |
|
場合によっては、2 つ以上の周辺機器からの割り込み要求行が、同じ物理汎用 I/O (GPIO) ピンに接続される場合があります。 共有割り込みラインの GPIO ピンは、通常、レベルによってトリガーされる割り込みに対して構成されます。 |
|
割り込み入力として構成されている汎用 I/O (GPIO) ピンは、有効および無効にするだけでなく、マスクとマスク解除を行うことができます。 |