歩き遍路 平成19年春(J1) 記録の準備
Visual C#で組込みUSBホスト経由して
   USBキーボードと通信(3) 
      USBケーブル上のデータを見る

 パソコンでVisual C#を使って、FT245R、PIC18F4520、組込みUSBホストSL811を経由してUSBキーボードと通信実験した時、パソコンとFT245R間のケーブル上のデータをUSBモニタで採取しました。このデータを解析します。

●USBモニタで採取した、パソコンとFT245R間のケーブル上のデータ

 前の実験で採取したデータです。 見やすいのですが、加工されたものなのでこのままでは仕様と対比できません。


 上図の元のダンプファイルを16進エディッタで見ました。見難いですね。

+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
-------------------------------------------------
00000000 : 01 00 00 00 41 75 00 00 F8 00 00 00 14 04 00 00 : ....Au..........・
00000010 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
00000020 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
00000030 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
      途中はすべて 00 なので省略
000003C0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
000003D0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
000003E0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
000003F0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
00000400 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
00000410 : 00 00 95 7C 80 2D 00 10 80 C3 00 05 03 00 00 00 : ..怖.-..........
00000420 : 00 00 EA C7 80 D2 80 69 00 10 80 5A 80 69 00 10 : ..・...i...Z.i..
00000430 : 80 4B 00 00 80 D2 80 2D 03 50 80 C3 00 09 03 00 : .K.....-.P......
00000440 : 00 00 00 00 26 C7 80 D2 80 69 03 50 80 5A 80 69 : ....&....i.P.Z.i
00000450 : 03 50 80 4B 00 00 80 D2 80 69 83 E0 80 C3 00 00 : .P.K.....i・....
00000460 : 00 00 00 00 00 00 BF F4 80 D2 80 69 83 E0 80 4B : .........i・.K
00000470 : 00 00 1E 00 00 00 00 00 BC 4A 80 D2 80 69 83 E0 : .........J...i・
00000480 : 80 C3 00 00 1E 1F 00 00 00 00 29 88 80 D2 80 69 : ..........)・..i
00000490 : 83 E0 80 4B 00 00 1E 1F 20 00 00 00 22 48 80 D2 : ・.K.... ..."H..
000004A0 : 80 69 83 E0 80 C3 00 00 1E 1F 20 21 00 00 72 42 : .i・...... !..rB
000004B0 : 80 D2 80 2D 03 50 80 C3 21 09 00 02 00 00 01 00 : ...-.P..!.......
000004C0 : 9D 70 80 D2 80 E1 03 50 80 4B 04 41 7C 80 D2 80 : 挾.....P.K.A|...
000004D0 : 69 03 50 80 5A 80 69 03 50 80 4B 00 00 80 D2 80 : i.P.Z.i.P.K.....
000004E0 : 2D 03 50 80 C3 21 09 00 02 00 00 01 00 9D 70 80 : -.P..!.......挾.
000004F0 : D2 80 E1 03 50 80 4B 05 80 BC 80 D2 80 69 03 50 : ....P.K......i.P
00000500 : 80 5A 80 69 03 50 80 4B 00 00 80 D2 : .Z.i.P.K....
-------------------------------------------------
+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F


●ケーブル上のデータを並べ替え

 上のケーブル上のデータをVisual C#を使って並べ替えしました。
 並べ替えは、まずシンクコードを探し、続くPIDコードのフォーマットに並べました。

 これはVisual C#の並べ替えプログラムの実行画面で、メニューを開いています。



 次は、実行結果の内容です。
 行頭はPIDの名前、続いて実際のデータです。データの先頭に有る 80 はシンクコードです。

SETUP 80 2D 00 10
DATA0 80 C3 00 05 03 00 00 00 00 00 EA C7
ACK 80 D2
IN 80 69 00 10
NAK 80 5A
IN 80 69 00 10
DATA1 80 4B 00 00
ACK 80 D2
SETUP 80 2D 03 50
DATA0 80 C3 00 09 03 00 00 00 00 00 26 C7
ACK 80 D2
IN 80 69 03 50
NAK 80 5A
IN 80 69 03 50
DATA1 80 4B 00 00
ACK 80 D2
IN 80 69 83 E0
DATA0 80 C3 00 00 00 00 00 00 00 00 BF F4
ACK 80 D2
IN 80 69 83 E0
DATA1 80 4B 00 00 1E 00 00 00 00 00 BC 4A
ACK 80 D2
IN 80 69 83 E0
DATA0 80 C3 00 00 1E 1F 00 00 00 00 29 88
ACK 80 D2
IN 80 69 83 E0
DATA1 80 4B 00 00 1E 1F 20 00 00 00 22 48
ACK 80 D2
IN 80 69 83 E0
DATA0 80 C3 00 00 1E 1F 20 21 00 00 72 42
ACK 80 D2
SETUP 80 2D 03 50
DATA0 80 C3 21 09 00 02 00 00 01 00 9D 70
ACK 80 D2
OUT 80 E1 03 50
DATA1 80 4B 04 41 7C
ACK 80 D2
IN 80 69 03 50
NAK 80 5A
IN 80 69 03 50
DATA1 80 4B 00 00
ACK 80 D2
SETUP 80 2D 03 50
DATA0 80 C3 21 09 00 02 00 00 01 00 9D 70
ACK 80 D2
OUT 80 E1 03 50
DATA1 80 4B 05
ACK 80 D2
IN 80 69 03 50
NAK 80 5A
IN 80 69 03 50
DATA1 80 4B 00 00
ACK 80 D2


●USBモニタ画面と並べ替えたデータを比べる

 USBモニタ画面の一番上の SET_ADDRESS とそのデータを比べます。

SETUP 80 2D 00 10
  DATA0 80 C3 00 05 03 00 00 00 00 00 EA C7
  ACK 80 D2



・SETUP 80 2D 00 10
 トークンパケットでトランザクションの始まりです。
 80 はシンクコード、2D はSETUP PIDコードです。詳細は下に示します。
・DATA0 80 C3 00 05 03 00 00 00 00 00 EA C7
 データパケットで80 はシンクコード、C3 はDATA PIDコードです。
 DATA PIDコードに続くコードは、USB標準デバイスリクエストとCRCです。
 USB標準デバイスリクエストと先頭バイトのbmRequestTypeのフォーマットを次に示します。bmRequestTypeは、フォーマットに示す様にビット毎に機能が割りつけられています。








・ACK 80 D2
 ハンドシェークパケットでトランザクションの終わりです。 80 はシンクコード、D2 はACK PIDコードです。


●USBのフレーム、トランザクション、パケット

 USBのフレーム、トランザクション、パケットの関係とその内容を下記に示します。

 



ホームへ戻る