H8,SH,マイコン,ぼやき川柳,ダウンロード

USBメモ


ポチなりのUSBプロトコルの解釈や、散逸している参考資料(主にデバッグで使用する)を纏めてみます。資料は主にPDFで提供されているのですが、PDFではアクセスが不便です。デバッグ中は、直ぐに欲しい情報が見つかる必要があります(とは言うものの、面倒な事(Web化)を初めてしまい後悔しています)
レイヤや体系は無視して順不同です

 

USBリクエスト

 

USB リクエストのフォーマット

   
バイトフィールドビット説明内容
0bmRequestType7データ転送方向
リクエストなのでホスト→デバイス
これは続くデータの方向かな?
0 : ホスト→デバイス・・・・・・
1 : デバイス→ホスト
6,5リクエストタイプ00 : 標準
01 : クラス
10 : ベンダ
11 : リザーブ
4-0対象ディスクリプタ0 : デバイス
1 : インタフェース
2 : エンドポイント
3 : その他
4〜: 予約
1bRequestリクエスト・コード
2wValue下位リクエストで使用する任意の数値
3上位
4wIndex下位リクエストで使用するインデックス
またはオフセット
5上位
6wLength下位データ・ステージでのデータ長
7上位
 
 
なんか、、、人に優しくない構造ですよね!?
 
 

標準リクエスト


リクエストには、標準、クラス(マスストレージ、CDCなど)、ベンダの3種類があるようです
標準リクエストの名称はWebを探せば一杯出てきます。でもコードが載っているサイトは珍しいと思います。表面的に理解するなら名称だけで十分なのですが、いざデバッグするとなると、名称は役に立ちません
3種類のリクエストの種別はリクエストタイプで決まるようです。TCP/IPのポート番号などは1023まではWell knownポートとして予約されています。1024以降はベンダが自由に使用できる。考え方がシンプルですよね・・・、USBが好きになれない理由の例です
視覚的に認識し辛いだけでなく、ソースが複雑になります
 
リクエスト
コード
標準リクエスト
00hGet_Status・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
01hClear_feature
03hSet_Feature
05hSet_Address
06hGet_Descriptor
07hSet_Descriptor
08hGet_Configuration
09hSet_Configuration
0AhGet_Interface
0BhSet_Interface
0ChSynch_Frame

 
 
 

Descriptor Types


以下は、GET_DESCRIPTORのwValueのhigh byteのことです
(ホント!分かり難いですよlネ。これって、bmRequestTypeのDescriptorとどういう関係?)
ValueDescriptor Types
1DEVICE・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
2CONFIGURATION
3STRING
4INTERFACE
5ENDPOINT
6DEVICE_QUALIFIER
7OTHER_SPEED_CONFIGURATION
8INTERFACE_POWER

 
 
 

31

 
 
 


 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu

管理人/副管理人のみ編集できます