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

リクエスト

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

リクエスト名3.02.0概要
GET_STATUS0x00ステータスの取得
CLEAR_FEATURE0x01フィーチャのクリア、フィーチャの種類は以下
・USB3.0
ENDPOINT_HALT, FUNCTION_SUSPEND, U1_ENABLE, U2_ENABLE, LTM_ENABLE
・USB2.0
ENDPOINT_HALT, DEVICE_REMOTE_WAKEUP, TEST_MODE
SET_FEATURE0x03フィーチャの設定、フィーチャの種類は同上
SET_ADDRESS0x05デバイスアドレスの設定
GET_DESCRIPTOR0x06ディスクリプタの取得
SET_DESCRIPTOR0x07ディスクリプタの設定
GET_CONFIGURATION0x08現在のコンフィグレーション インデックスの取得
SET_CONFIGURATION0x09新しいカレント コンフィグレーションの設定
GET_INTERFACE0x0A現在の代替設定インデックスの取得
SET_INTERFACE0x0B代替設定の有効化
SYNCH_FRAME0x0C同期フレーム番号の報告
SET_SEL0x30×SEL(System Exit Latency)、電源状態U1,U2からの復帰時間の設定
SET_ISOCH_DELAY0x31×ホストがパケット送出してからデバイスが受信するまでの遅延時間の設定

ディスクリプタ

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

ディスクリプタ名3.02.0概要
DEVICE0x01USBバージョン、デバイスクラス、ベンダID、製品ID 等デバイス基本情報
CONFIGURATION0x02電源供給方法、消費電力、STRINGディスクリプタの有無
STRING0x03デバイス情報文字列
INTERFACE0x04エンドポイント数、インターフェースが提供するデバイスクラス
ENDPOINT0x050以外の各エンドポイントの方向、タイプ(Bulk等)、最大パケット長、インターバル
DEVICE_QUALIFIER0x06×動作中のスピード以外のDEVICEディスクリプタ設定
OTHER_SPEED_ CONFIGURATION0x07×動作中のスピード以外のCONFIGURATIONディスクリプタ設定
INTERFACE_POWER0x08××運用されていない
INTERFACE_ASSOCIATION0x0B複合デバイス設定
BOS (Binary Device Object Store)0x0F×DEVICE_CAPABILITYディスクリプタ指定
DEVICE_CAPABILITY0x10×Super Speed/High Speed時のLink Message対応通知
SUPERSPEED_USB_ENDPOINT_COMPANION0x30×Burst転送最大長

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

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

前の記事

SWのデバイス管理

次の記事

UVC(USB Video Class)とは