2014.6.12

前へ
次へ
ホームページトップへ戻る

CPLD+SIMMを使ってUSBプロトコルの解析を!
VHDLを速習! XC95144XL+16MB・SIMMを使ってUSBプロトコルアナライザを作ってしまいました!
主目的は差し迫った事情からUSBプロトコルの解析をすることだったのですが、その手段として選んだのがコレ!


[第66回]


●Enumeration はじめから終わりまでの記録(19)GET HID REPORT DESCRIPTOR

長々と続いてきましたENUMERATIONの記録も今回でやっと終わりです。
前回のリストの続きです。

0258857 SETUP ADRS=04 ENDP=00 
        DATA0  81 06 00 22 00 00 5D 00   
        ACK 
0258858 IN ADRS=04 ENDP=00 
        NAK 
0258860 IN ADRS=04 ENDP=00 
        NAK 
0258861 IN ADRS=04 ENDP=00 
        NAK 
0258863 IN ADRS=04 ENDP=00 
        DATA1  06 00 FF 09 01 A1 01 19   
        ACK 
0258865 IN ADRS=04 ENDP=00 
        NAK 
0258866 IN ADRS=04 ENDP=00 
        NAK 
0258866 IN ADRS=04 ENDP=00 
        NAK 
0258868 IN ADRS=04 ENDP=00 
        DATA0  01 29 40 15 00 26 FF 00   
        ACK 
0258869 IN ADRS=04 ENDP=00 
        NAK 
0258870 IN ADRS=04 ENDP=00 
        NAK 
0258870 IN ADRS=04 ENDP=00 
        NAK 
0258872 IN ADRS=04 ENDP=00 
        DATA1  75 08 95 40 81 02 19 01   
        ACK 
0258873 IN ADRS=04 ENDP=00 
        NAK 
0258874 IN ADRS=04 ENDP=00 
        NAK 
0258875 IN ADRS=04 ENDP=00 
        NAK 
0258875 IN ADRS=04 ENDP=00 
        NAK 
0258877 IN ADRS=04 ENDP=00 
        DATA0  29 40 91 02 C0 C3 24 1B   
0258878 OUT ADRS=04 ENDP=00 
        DATA1  
        ACK 
0258906 SOF FNO=0F1
0259000 SOF FNO=0F2
0259001 PRE 
0259094 SOF FNO=0F3
0259188 SOF FNO=0F4
0259188 PRE 
0259281 SOF FNO=0F5
0259293 IN ADRS=04 ENDP=01 
0259375 SOF FNO=0F6
0259387 IN ADRS=04 ENDP=01 
        NAK 
0259469 SOF FNO=0F7
0259481 IN ADRS=04 ENDP=01 
        NAK 

ENUMERATIONの最後にホストからGET HID REPORT DESCRIPTORコマンドが出されます。
DEVICE DESCRIPTORでHID DEBICEの定義を送りましたからこの要求が出されますから、そうではないデバイスの場合には出されません。
それでこのHID REPORT DESCRIPTORなのですが、これがまたさっぱりわけがわからないデータの羅列です。ここの記述によってHID端末としての振る舞いが決定されるようで、そのレポートの書き方だけでもかなりのボリュームのドキュメントがあるようです。
実のところここの書き方についてはまだよく理解していません。
しかし幸いND80ZV(3.5)やLegacy8080でのデータの送受信を行なうためには、ここで記録しましたPICWRITERのHID REPORT DESCRIPTORの通りに記述すればうまく機能してくれることを確認していますので、今のところはそれ以上は追求しないでそのまま使わせていただくことにいたしました。

HID REPORT DESCRIPTORを送出するとホストからデータ無しのDATA1が送出されてENUMERATIONが完了します。
その後は、それまでエンドポイント=0だったものがエンドポイント=1に対してデータ送信要求が連続して出されています。
通常のデータの送受信が開始されました。

実は。
この記事を書くために過去記事を調べていましたら、もう何年も前にENUMERATIONのところを解析して記事を書いておりました。
今回の記事に相当するところは「TTLでCPUをつくろう[第631回]」あたりが該当いたします。
あわせてお読みいただければ、と思います。

やっと。
終わりました(長かった!)。

次回からは、本来のテーマに戻りましてCPLDのコントロールにとりかかることにいたします。

CPLD+SIMMを使ってUSBプロトコルの解析を![第66回]
2014.6.12upload

前へ
次へ
ホームページトップへ戻る