USB エンドポイントとそのパイプ
USB デバイスには、データ転送に使用されるエンドポイントがあります。 ホスト側では、エンドポイントはパイプで表されます。 このトピックでは、これら 2 つの用語を区別します。
まとめ
- エンドポイントはデバイス上のハードウェアです。パイプはホスト側のソフトウェアです。
- エンドポイントが構成されていません。パイプは転送用に構成されています
- ホストは、パイプ間でデータを送受信します。
USB エンドポイント
エンドポイントは、USB デバイス上のバッファーです。 エンドポイントは、ホスト オペレーティング システムに関係なく、ハードウェア自体に関連する用語です。 ホストは、そのバッファーとの間でデータを送受信できます。 エンドポイントは、制御エンドポイントとデータ エンドポイントに分類できます。
すべての USB デバイスは、デフォルト エンドポイントまたは Endpoint0 と呼ばれる、アドレス 0 に少なくとも 1 つの制御エンドポイントを提供する必要があります。 このエンドポイントは双方向です。 つまり、ホストは 1 回の転送内でエンドポイントにデータを送信し、エンドポイントからデータを受信できます。 コントロール転送の目的は、ホストがデバイス情報を取得したり、デバイスを構成したり、デバイスに固有のコントロール操作を実行したりできるようにすることです。
データ エンドポイントは省略可能であり、データの転送に使用されます。 これらは一方向であり、タイプ (制御、割り込み、バルク、アイソクロナス) およびその他のプロパティを持ちます。 これらすべてのプロパティはエンドポイント記述子に記述されます (「標準 USB 記述子」を参照)。
USB の用語では、エンドポイントの方向 (およびエンドポイントへの転送またはエンドポイントからの転送) はホストに基づきます。 したがって、IN は常にデバイスからホストへの転送を指し、OUT は常にホストからデバイスへの転送を指します。 USB デバイスは、制御データの双方向転送をサポートすることもできます。
デバイス上のエンドポイントは機能インターフェイスにグループ化され、一連のインターフェイスによってデバイス構成が構成されます。 詳しくは、「USB デバイスのレイアウト」をご覧ください。
ホスト ソフトウェアは、デバイスが構成される前、または代替設定の選択中にエンドポイント情報を確認できます。 すべてのインターフェイスを反復処理し、次に各インターフェイスの設定の一覧を反復処理して、各エンドポイントのプロパティまたは設定内のエンドポイントのセット全体を確認します。 エンドポイント情報を確認しても、デバイスの構成済みの状態には影響しません。
USB パイプ
USB デバイスと USB ホストの間で、パイプと呼ばれる抽象化を介してデータが転送されます。 パイプは純粋なソフトウェア用語です。 パイプはデバイス上のエンドポイントと通信し、そのエンドポイントにはアドレスがあります。 パイプのもう一方の端は常にホスト コントローラーです。
エンドポイントのパイプは、構成およびインターフェイスの代替設定を選択することによってデバイスが構成されるときに開かれます。 そのため、I/O 操作のターゲットになります。 パイプにはエンドポイントのすべてのプロパティがありますが、アクティブであり、ホストとのコミュニケーションに使用されます。
未構成のエンドポイントはエンドポイントと呼ばれ、構成済みのエンドポイントはパイプと呼ばれます。