最終更新:2015-09-16 (水) 14:58:23 (3307d)
USB/エンドポイント
USBデバイス内部のデータのソースまたはシンクであり、アドレス指定の可能なFIFO
デバイスエンドポイント
- 受信されたデータや送信するデータを格納するデバイスバッファのこと。
- A uniquely addressable portion of a USB device that is the source or sink of information in a communication flow between the host and device. (USB 2.0 SpecのTerms)
- 通常複数バイトを格納できるバッファであり、デバイスコントローラチップ内のメモリブロック、もしくはレジスタで構成される。
- ホストがエンドポイントを持っているわけではない。
概要
- エンドポイントはホスト・デバイスが通信相手を特定するための情報の 1 つで,0-15 の番号と方向(IN/OUT)で指定されます。
- エンドポイントは周辺機器で使用するデータ通信経路ごとに用意しなければならず,複数の通信経路で共用できません
- たとえば,SDカードへの書き込み/読み出しとプリント出力の機能を持った機器の場合,SD カードへの書き込み用エンドポイント,読み出し用エンドポイント,プリント出力用エンドポイントを個別に持つ必要があります。
- データ通信を行うとき,ホスト・デバイスは機器を特定する USB デバイス・アドレスとともにエンドポイント(番号と方向)を使用して,機器内部の通信先を特定します。
- エンドポイントのための物理的な回路として周辺機器内にバッファ・メモリを装備し,USB と通信先(メモリなど)の速度差を吸収する FIFO の役割も果たします。
エンドポイントディスクリプタ
- エンドポイントの設定
Field Offset Size 詳細 bLength? 0 1 Descriptor の全体長。ENDPOINT は 7(0x7)Byte 固定。 bDescriptorType 1 1 ディスクリプタの種別番号。ENDPOINT は 5。 bEndpointAddress 2 1 bit 7 : IN=1, OUT=0
bit 6-4 : 予約(0)
bit 3-0 : エンドポイント番号(0~15)bmAttributes 3 1 bit 7-2 : 予約(0)
bit 1-0 : 00=コントロール転送、01=アイソクロナス転送、10=バルク転送、11=インタラプト転送wMaxPacketSize 4 2 最大パケット長。 bInterval 6 1 最大待ち時間。転送方式、速度によって意味合いが異なる。
エンドポイント数
- 同じエンドポイント番号のINとOUTは2つのエンドポイント
方向
デバイス → ホスト | IN転送 |
ホスト → デバイス | OUT転送 |
双方向 | 通常はエンドポイント0のみ |
エンドポイント0
- デバイスを接続した直後の状態は、コンフィグレーション前の状態となっていて、エンドポイント0でデフォルトパイプ?であるコントロール転送(双方向)だけが通信できる状態となっている
- どのような機器でも必ず使用
- エンドポイント0は各インターフェイスで共有される
それ以外のエンドポイント
- デフォルトパイプ以外は単方向パイプ。(EP1にIN/OUTがそれぞれある)
メモ
- エンドポイントは4ビットで割り当てられ,最大数はIN=16,OUT=16の合計32
- USB 3.0では、1つのエンドポイントにIN転送/OUT転送、両方の機能を指定できる