リクエスト・ディスクリプタ

リクエスト

ホストとデバイスは、リクエストとその返信で通信方法を確定させます。ここでは、USB3.0/2.0のリクエストを列挙・比較します。○は必須またはデバイスによっては必要、×は不要または設定不可を示します。

リクエスト名 3.0 2.0 概要
GET_STATUS 0x00 ステータスの取得
CLEAR_FEATURE 0x01 フィーチャのクリア、フィーチャの種類は以下
・USB3.0
ENDPOINT_HALT, FUNCTION_SUSPEND, U1_ENABLE, U2_ENABLE, LTM_ENABLE
・USB2.0
ENDPOINT_HALT, DEVICE_REMOTE_WAKEUP, TEST_MODE
SET_FEATURE 0x03 フィーチャの設定、フィーチャの種類は同上
SET_ADDRESS 0x05 デバイスアドレスの設定
GET_DESCRIPTOR 0x06 ディスクリプタの取得
SET_DESCRIPTOR 0x07 ディスクリプタの設定
GET_CONFIGURATION 0x08 現在のコンフィグレーション インデックスの取得
SET_CONFIGURATION 0x09 新しいカレント コンフィグレーションの設定
GET_INTERFACE 0x0A 現在の代替設定インデックスの取得
SET_INTERFACE 0x0B 代替設定の有効化
SYNCH_FRAME 0x0C 同期フレーム番号の報告
SET_SEL 0x30 × SEL(System Exit Latency)、電源状態U1,U2からの復帰時間の設定
SET_ISOCH_DELAY 0x31 × ホストがパケット送出してからデバイスが受信するまでの遅延時間の設定

ディスクリプタ

大きな情報はディスクリプタと呼ばれる構造体で通信します。リクエストGET_DESCRIPTOR, SET_DESCRIPTORで使用します。ここでは、USB3.0/2.0のディスクリプタを列挙・比較します。DEVICE, CONFIGURATION, INTERFACE, ENDPOINTは、4つのレイヤの詳細を記述します。

ディスクリプタ名 3.0 2.0 概要
DEVICE 0x01 USBバージョン、デバイスクラス、ベンダID、製品ID 等デバイス基本情報
CONFIGURATION 0x02 電源供給方法、消費電力、STRINGディスクリプタの有無
STRING 0x03 デバイス情報文字列
INTERFACE 0x04 エンドポイント数、インターフェースが提供するデバイスクラス
ENDPOINT 0x05 0以外の各エンドポイントの方向、タイプ(Bulk等)、最大パケット長、インターバル
DEVICE_QUALIFIER 0x06 × 動作中のスピード以外のDEVICEディスクリプタ設定
OTHER_SPEED_ CONFIGURATION 0x07 × 動作中のスピード以外のCONFIGURATIONディスクリプタ設定
INTERFACE_POWER 0x08 × × 運用されていない
INTERFACE_ASSOCIATION 0x0B 複合デバイス設定
BOS (Binary Device Object Store) 0x0F × DEVICE_CAPABILITYディスクリプタ指定
DEVICE_CAPABILITY 0x10 × Super Speed/High Speed時のLink Message対応通知
SUPERSPEED_USB_ENDPOINT_COMPANION 0x30 × Burst転送最大長

リクエスト・ディスクリプタ USB2.0からUSB3.0への移管

リクエストやディスクリプタの制御は複雑で実装量も多いです。システム構成や設計資産の内容により一概には言えませんが、一般的には、USB2.0のリクエストやディスクリプタの制御に関する設計資産はUSB3.0に流用しやすいと言えます。