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