2014.5.5

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

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


[第47回]


●Enumeration はじめから終わりまでの記録(13)GET_DESCRIPTOR(STRING)(その3)

また間が空いてしまいました。
巷は黄金週間真っ最中でありますが、今年も私には無縁でありました。
相変わらず多忙です。

前回はホストから出された2回目のGET_DESCRIPTOR(CONFIGURATION)リクエストと、それに応えてPICWRITERから出された CONFIGURATION DESCRIPTORについて説明をしました。
今回はその続きです。

PICWRITERからCONFIGURATION DESCRIPTORを送り終わるとホストからは、またGET DESCRIPTOR(STRING)リクエストが出されます。

0026042 SETUP ADRS=04 ENDP=00 
        DATA0  80 06 00 03 00 00 FF 00   GET_DESCRIPTOR 
        ACK 
0026043 IN ADRS=04 ENDP=00 
        NAK 
0026045 IN ADRS=04 ENDP=00 
        NAK 
0026046 IN ADRS=04 ENDP=00 
        DATA1  04 03 09 04 09 78 1B 50   
0026048 OUT ADRS=04 ENDP=00 
        DATA1  
        ACK 
0026073 SETUP ADRS=04 ENDP=00 
        DATA0  80 06 02 03 09 04 FF 00   GET_DESCRIPTOR 
0026074 IN ADRS=04 ENDP=00 
        NAK 
0026076 IN ADRS=04 ENDP=00 
        NAK 
0026077 IN ADRS=04 ENDP=00 
        NAK 
0026079 IN ADRS=04 ENDP=00 
        DATA1  48 03 50 00 49 00 43 00   P I C
        ACK 
0026081 IN ADRS=04 ENDP=00 
        NAK 
0026087 SOF FNO=73F
0026089 IN ADRS=04 ENDP=00 
        DATA0  6B 00 69 00 74 00 20 00   k i t [sp]
        ACK 
0026089 IN ADRS=04 ENDP=00 
        NAK 
0026090 IN ADRS=04 ENDP=00 
        NAK 
0026091 IN ADRS=04 ENDP=00 
        NAK 
0026092 IN ADRS=04 ENDP=00 
        NAK 
0026093 IN ADRS=04 ENDP=00 
        DATA1  32 00 20 00 4D 00 69 00   2 [sp] M i
        ACK 
0026094 IN ADRS=04 ENDP=00 
        NAK 
0026095 IN ADRS=04 ENDP=00 
        NAK 
0026095 IN ADRS=04 ENDP=00 
        NAK 
0026096 IN ADRS=04 ENDP=00 
0026098 IN ADRS=04 ENDP=00 
        DATA0  63 00 72 00 6F 00 63 00   c r o c
        ACK 
0026098 IN ADRS=04 ENDP=00 
        NAK 
0026099 IN ADRS=04 ENDP=00 
        NAK 
0026100 IN ADRS=04 ENDP=00 
        NAK 
0026101 IN ADRS=04 ENDP=00 
        NAK 
0026102 IN ADRS=04 ENDP=00 
        NAK 
0026103 IN ADRS=04 ENDP=00 
        DATA1  6F 00 6E 00 74 00 72 00   o n t r
        ACK 
0026104 IN ADRS=04 ENDP=00 
        NAK 
0026105 IN ADRS=04 ENDP=00 
        NAK 
0026106 IN ADRS=04 ENDP=00 
        NAK 
0026106 IN ADRS=04 ENDP=00 
        NAK 
0026108 IN ADRS=04 ENDP=00 
        DATA0  6F 00 6C 00 6C 00 65 00   o l l e
        ACK 
0026109 IN ADRS=04 ENDP=00 
        NAK 
0026109 IN ADRS=04 ENDP=00 
        NAK 
0026110 IN ADRS=04 ENDP=00 
        NAK 
0026111 IN ADRS=04 ENDP=00 
        NAK 
0026112 IN ADRS=04 ENDP=00 
        NAK 
0026113 IN ADRS=04 ENDP=00 
        ? [11100000]
        DATA1  72 00 20 00 50 00 72 00   r [sp] P r
        ACK 
0026114 IN ADRS=04 ENDP=00 
        ? [01011011]
0026115 IN ADRS=04 ENDP=00 
        NAK 
0026116 IN ADRS=04 ENDP=00 
        NAK 
0026117 IN ADRS=04 ENDP=00 
        NAK 
0026118 IN ADRS=04 ENDP=00 
        DATA0  6F 00 67 00 72 00 61 00   o g r a
        ACK 
0026119 IN ADRS=04 ENDP=00 
        NAK 
0026120 IN ADRS=04 ENDP=00 
        NAK 
0026120 IN ADRS=04 ENDP=00 
0026121 NAK 
0026122 IN ADRS=04 ENDP=00 
        NAK 
0026124 IN ADRS=04 ENDP=00 
        DATA1  6D 00 6D 00 65 00 72 00   m m e r
        ACK 
0026124 IN ADRS=04 ENDP=00 
        NAK 
0026125 IN ADRS=04 ENDP=00 
        NAK 
0026126 IN ADRS=04 ENDP=00 
        DATA0  
        ACK 
0026128 OUT ADRS=04 ENDP=00 
        DATA1  
        ACK 

先頭のGET DESCRIPTOR(STRING)リクエスト 08 06 00 03 00 00 FF 00 はSTRING DESCRIPTORのインデックス0を要求するもので、[第42回]での説明と同じものがまた出されています。
同じことをどうして重ねて要求するのか理解に苦しみます。
当然要求に応えて前と同じことを返します。
なんだかなあという感じであります。

すると続いてまたGET DESCRIPTOR(STRING)リクエストです。
しかし今回は前とは異なっています。

80 06 02 03 09 04 FF 00

今回はSTRING DESCRIPTOR(コード03)のインデックス02の要求です。
STRING DESCRIPTORのインデックス02は[第38回]で説明しましたDEVICE DESCRIPTORで記述しています。
PRODUCT名を示すインデックスナンバーです。
その要求に応えてPICWRITERからはPRODUCT名を示すSTRING DESCRIPTORが送出されています。

48 03 50 00 49 00 43 00

先頭の48は総バイト数です。
48H=72バイトです。
次の03はインデックスナンバーです。
その次からはASCII文字コードが続きます。
[第43回]で説明しましたように、STRING DESCRIPTORは2パイトで1文字を示しますから上位バイトは00になります。
ASCIIコードをアルファベットに置き換えたものをリストの右側に書き加えました。

全体は72バイトですからちょうど最後の

DATA1 6D 00 6D 00 65 00 72 00

で終わりますが、ホストからは続いてINパケットが送出されます。
もう何も送るデータがありませんから空のDATA0を送ると、ホストからも空のDATA1が送出されて一連の手続きが終了します。
このあたりのことにつきましても[第43回]に書きました。
これもまた、なんだかなあという感じであります。

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

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