Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2642494
  • 博文数量: 333
  • 博客积分: 4817
  • 博客等级: 上校
  • 技术积分: 4413
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-28 10:51
文章分类

全部博文(333)

文章存档

2017年(20)

2016年(57)

2015年(27)

2014年(20)

2013年(21)

2012年(164)

2011年(24)

分类: LINUX

2012-04-14 15:34:18

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是错误码。
阅读(3066) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~