LINUX USB调试
来源:互联网 发布:mysql create user 编辑:程序博客网 时间:2024/06/02 19:45
LinuxUSB驱动程序调试
:这是LinuxUSB驱动程序调试--003:Ubuntu下的准备工作的详细页面,介绍了和linux,有关的知识、技巧、经验,和一些linux源码等。
Ubuntu下的准备工作:
(1)如何查看内核中的printk输出: dmesg
再配合管道命令, dmesg |head , dmesg |tail
再配合管道命令, 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.
# 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
# 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 。。。
# 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,
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/Android USB调试
- Linux USB 调试
- linux usb子系统.调试方法
- linux & android平台USB HOST调试
- linux 支持USB WIFI 调试 log
- usb调试
- Linux USB gadget设备驱动解析(2)---驱动调试
- Linux USB gadget设备驱动解析(2)---驱动调试
- 在linux中配置usb连接(android手机调试)
- Linux USB gadget设备驱动解析(2)---驱动调试
- Linux USB gadget设备驱动解析(2)---驱动调试
- Linux USB gadget设备驱动解析(2)---驱动调试
- Linux 使用usb转串口作为调试串口
- 在linux中配置usb连接(android手机调试)
- QEMU调试Linux系统的USB协议栈
- 在linux中配置usb连接(android手机调试)
- QEMU调试Linux系统的USB协议栈
- scgi和fastcgi在IIS跑django下的性能
- hash_map详解
- 在VS2010中输出.net2.0 with ajax 网站的方法
- list学习指南
- Oracle exception
- LINUX USB调试
- DCT变换和量化
- struts2.1.8 的JSON lib环境设定
- getAttribute,appendChild,removeChild,replaceChild,insertBefore 自定义函数
- 解析数据访问层操作数据库的方式
- 数据库三范式
- Unbuntu11.10切换到经典桌面
- php5.3.8配置
- 高水位线和全表扫描