市面上用來監控USB行為的軟體主要有兩個,HHD
USB Monitor、Bus Hound。若有需要了解 USB 之間的協定,建議兩個軟體搭配使用。
HHD USB Monitor軟體應用範例(免費版功能完整,但有15天的日期限制)
1.
HHD公司提供了許多的軟體可以用來監控電腦周邊的運作,有 USB, Serial, Netowrk 等,這邊針對 USB motioring 作一個簡單介紹。
2.
USB Monitor使用方式
b.
執行USB monitor工具,選擇想要監控的設備。這邊選擇的是 HID (Human Interface Device),中文翻成人性化界面裝置,以此圖為例,有兩個 HID Device,若要確認選擇的設備是否正確,則可以透過
Device Descriptor 來檢視,圖中顯示此裝置是 SONY 公司所製造的產品,產品名稱為FRC-450。此裝置實際上是一個監控設備 (CCTV Camera)。
c.
USB monitor提供了許多不同的檢視模式,下圖中我就設定了五種檢視模式,設定好後按下
“Apply Changes”,此軟體就會開始錄製所有經過 USB 的資料
d.
舉例說明檢視模式
d1. Raw data view,可以完整檢視 USB
write/read 的封包
d2. Packet view,
可以了解每次溝通時送出的封包,例如想要分別知道某個transaction是如何運作的,便可以使用此模式。此transcation功能是用來設定攝影機 OSD 顯示的起始點。
e.
與 IT-N指令的對應關係
USB command (設定OSD_SCRN_HSTA=0x20)
0f 06 1a 0a 01 07 02 22 00 00 20 00 56 00 db 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ed
IT-N command 如下
Send packet: 0A 01 07 02 22 00 00 20 00 56
0A : 10 bytes data
01 : 1 command
56 : checksum of all above data. (9bytes)
Send packet 的分析參考下圖
封包07 02 22 00 00 20 00分別代表的意思為:
07:# of communication bytes, 2nd~8th
共有7個bytes
02:command -> writes to ram/camera
register area
22:category -> OSD
f. HID資料分析
此部份因應不同的HID Device會有不同的意思,此處僅僅是ITN的例子。
最前方的 3個Bytes所代表的意思:
0F: data length (10 in this example+ header length(fixed to 3bytes)
+
checksum (fixed
to 2bytes))
06: ??
1A: ??
接著是ITN資料部分:
Data共有10個Bytes (0A 01 07 02 22 00 00 20 00 56),後面接了兩個bytes
的checksum value,即0x00, 0xdb。
最後的一個Bytes “0xed” 為serial number。
g.
封包內容分析 (此封包功能是設定攝影機上 OSD 顯示的垂直起始點),
根據Sony提供的規格書,此指令的 offset address = 0x00, 用11bit來存放值。
參考圖d-1,設定此功能時,PC端透過 USB 封包送出20bytes的資料到 FRC-450,其中的 0020便是分別為 offset address 以及 start point
此段指令會直接寫入到FRC-420中對應的register???
瞭解了USB發送與接收的封包之後,若想要模擬主機端與Device之間的USB溝通,則可以使用 USB-IF組織所提供的工具
USB 2.0 Single Step Transaction Debugger,或是自行撰寫程式
BusHound
免費版限制只會顯示前8個Bytes,但是多了許多細部的選項可以調整。此工具也可以發送的 USB 命令