2012年2月6日 星期一

USB Monitor軟體應用範例


市面上用來監控USB行為的軟體主要有兩個,HHD USB MonitorBus Hound。若有需要了解 USB 之間的協定,建議兩個軟體搭配使用。

HHD USB Monitor軟體應用範例(免費版功能完整,但有15天的日期限制)

1.      HHD公司提供了許多的軟體可以用來監控電腦周邊的運作,有 USB, Serial, Netowrk 等,這邊針對 USB motioring 作一個簡單介紹。


2.      USB Monitor使用方式
a.      http://www.hhdsoftware.com/ 下載 USB monitor軟體,此軟體有15天試用期,試用期間所有功能都可以正常使用。

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 共有7bytes
02command -> writes to ram/camera register area
22category -> OSD

f.       HID資料分析
此部份因應不同的HID Device會有不同的意思,此處僅僅是ITN的例子。

最前方的 3Bytes所代表的意思:
0F: data length (10 in this example+ header length(fixed to 3bytes) +
checksum (fixed to 2bytes))
06: ??
1A: ??

接著是ITN資料部分:
Data共有10Bytes (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???



3.      產生 USB 資料流 (USB Traffic generator)
瞭解了USB發送與接收的封包之後,若想要模擬主機端與Device之間的USB溝通,則可以使用 USB-IF組織所提供的工具 USB 2.0 Single Step Transaction Debugger,或是自行撰寫程式

BusHound
免費版限制只會顯示前8Bytes,但是多了許多細部的選項可以調整。此工具也可以發送的 USB 命令