歩き遍路 平成19年春(J1) 記録の準備

USB Protocol( 2)
   GetDescriptor Device8Byte
          プロトコルの解析


 ホストから GetDescriptor Device 8Byte の要求をターゲットに出力して、ターゲットから応答するプロトコルのパケットをSMSC社の USB3500(UTMI)で取得してVisual C++で解析しました。
 ハードウエアの構成は、「USB Protocol( 1) SetAddressプロトコルの解析」と同じものです。

●GetDescriptor Device 8Byte プロトコルの解析

 USBホスト機能で発生したGetDescriptor Device 8Byte のパケットとターゲットが応答するパケットを取得して、解析した結果を下記します。GetDescriptor Device8Byteプロトコルの転送内容は正しくキャプチャ出来ています。

また、USB規格にある、入力コントロール転送シーケンスをその下に記録しますので、同時に見て下さい。
 
 GetDescriptor 等のコントロール転送シーケンスは最も複雑なシーケンスで、SETUP Stage、DATA Stage、STATUS Stageと3つのStageで構成されています。

 @SETUP Stageです。ホストがデバイスにGetDescriptor Device 8Byteのリクエストを要求しています。
  ・SetUpパケットのPIDは、SetUp です。
  ・Dataパケットのデータは、GetDescriptor Device 8Byte のプロトコルを送ります。
   赤丸の「06」はGetDescriptor、「00 01」はDevice、「08」は8Byteをしめします。
  ・ハンドシェークパケットは、「ACK」です。

 ADATA Stageです。
  今回は、4回のDATA Stageがあります。前の3回は、ターゲットの用意が出来なかったのでACKで応答です。
  4回目で GetDescriptor Device の8Byteのデータが送られてきました。
  ・SetUpパケットのPIDは、IN で、データ転送をデバイスに要求します。
  ・Dataパケットのデータは、Descriptor Device の8Byteのデータです。
  ・ハンドシェークパケットは、「ACK」です。

 ASetUp Stageです。
  今回のGetDescriptor コントロール転送シーケンスのターゲットサイドでの全ての結果を送ります。
  ・SetUpパケットのPIDは、SetUp です。
  ・Dataパケットのデータは、データ無しで応答します。
  ・ハンドシェークパケットは、「ACK」です。

 

 






    

●市販のプロトコルアナライザで取得

 同時に同じGetDescriptor Device 8Byteを、市販のプロトコルアナライザで取得しました。
 比較のため、次に記録します。

 市販のプロトコルアナライザで取得したデータには何故か ADATA Stage のNAK応答は記録されてません。







ホームへ戻る