次の方法で共有


GPIO コントローラー ドライバーの実装上の問題

GPIO フレームワーク拡張機能 (GpioClx) は、柔軟なデバイス ドライバー インターフェイス (DDI) を提供します。 この DDI を使用すると、開発者は代替コールバック インターフェイスの中から選択できます。 ドライバー開発者は、ターゲット GPIO コントローラー デバイスのハードウェア アーキテクチャに最適なイベント コールバック関数のセットを実装する必要があります。

たとえば、GPIO コントローラー ドライバーが GPIO I/O ピンの読み取りと書き込みをサポートしている場合、開発者は次のコールバック関数のペアのいずれかの実装を選択できます。

CLIENT_ReadGpioPinsCLIENT_WriteGpioPinsCLIENT_ReadGpioPinsUsingMaskCLIENT_WriteGpioPinsUsingMask CLIENT_ReadGpioPins 関数と CLIENT_WriteGpioPins 関数は、バンク番号、GPIO ピン番号の配列、これらのピンの読み取りまたは書き込みが行なわれるビット値のデータ バッファーを受け取ります。 通常の場合に読み取りまたは書き込み操作でアクセスされる GPIO ピンの数が少ない場合は、コールバックのこのペアが最適な実装を生成できます。 この実装は、通常、ハードウェア レジスタがメモリにマップされていない GPIO コントローラーに使用されます。 ただし、読み取りまたは書き込み操作中に複数の GPIO ピンにアクセスする可能性が高い場合や、GPIO コントローラー ハードウェアが複数の GPIO ピンに並列で効率的にアクセスできる場合は、コールバック関数の他のペアのほうがより最適な実装となることがあります。

CLIENT_ReadGpioPinsUsingMask コールバック関数と CLIENT_WriteGpioPinsUsingMask コールバック関数は、1 回の呼び出しで最大 64 ピンのバンクを読み書きできます。 CLIENT_ReadGpioPinsUsingMask 関数は、GPIO ピン値を 64 ビット マスクに読み取ります。 CLIENT_WriteGpioPinsUsingMask 関数は、2 つの 64 ビット マスクを使用します。 1 つのマスクは設定する GPIO ピンを示し、もう 1 つのマスクはクリアする GPIO ピンを示します。 この実装は、通常、メモリ マップされた GPIO コントローラーに使用されます。