linux下usb调试工具,LINUX USB调试
LinuxUSB驅動程序調試
:這是LinuxUSB驅動程序調試--003:Ubuntu下的準備工作的詳細頁面,介紹了和linux,有關的知識、技巧、經驗,和一些linux源碼等。
Ubuntu下的準備工作:
(1)如何查看內核中的printk輸出: dmesg
再配合管道命令,?? dmesg |head?? ,??? dmesg |tail
通過這個命令,我們可以看到內中的printk輸出的內容,這是很有用的一個
工具。
(2)的USB抓包工具:usb_mon
其實,Ubuntu下已經內置了USB抓包工具---USB_MON
【其實 make menuconfig 時候會讓我們選擇的】
使用方法如下:
# mount -t debugfs none /sys/kernel/debug
# modprobe usbmon
查看當前的USB device:
# cat? /sys/kernel/debug/usb/devices
下面的輸出:
T:? Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 12 Spd=480 MxCh= 0
D:? Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=? 1
P:? Vendor=601a ProdID=4740 Rev= 1.00
S:? Manufacturer=Ingenic
S:? Product=JZ4740 USB Boot Device
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=? 2mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=50 Driver=skeleton
E:? Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:? Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
如何看懂上面的輸出?? Documentation/usb/usbmon.txt
Bus=01 means it's bus 1.
通過上面的 Vendor=601a ProdID 可以找到我們設備的Bus號。
上面Bus=01。
使用下面的名利,就開始監聽 Bus01上的全部USB數據包。
# cat? /sys/kernel/debug/usb/usbmon/1u
要想開始監聽 全部 Bus 上的全部USB數據包:
# cat? /sys/kernel/debug/usb/usbmon/0u
一旦有數據包,就會打印出來:
# cat /sys/kernel/debug/usb/usbmon/1u
f07dbb80 3233986312 S Co:1:012:0 s 40 01 80c0 0000 0000 0
f07dbb80 3234327703 C Co:1:012:0 0 0
f07dbb80 3234327880 S Co:1:012:0 s 40 02 0000 0200 0000 0
f07dbb80 3234329561 C Co:1:012:0 0 0
f07dbb80 3234329625 S Bi:1:012:1 -115 32 <
f07dbb80 3234331550 C Bi:1:012:1 -75 32 = 00000000 00000000 ?。。。
讀懂上面的數據,還是要看usbmon.txt
URB tag? :標志
TimeStamp:毫秒數
Event Type:? S - submission,
C - callback,
E - submission error.
URBType:BusNo:DeviceAddr:EndPointNum
Ci Co?? Control input and output
Zi Zo?? Isochronous input and output
Ii Io?? Interrupt input and output
Bi Bo?? Bulk input and output
URB Status: 0為沒有錯誤。-XXX是錯誤碼。
總結
以上是生活随笔為你收集整理的linux下usb调试工具,LINUX USB调试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2022大厂高频面试题之CSS篇
- 下一篇: Linux 常用快捷键大全