linux下类似Bus Hound的工具

linux下类似Bus Hound的工具

http://blog.csdn.net/liuqz2009/article/details/7886461

0
推荐在linux大家有时候需要调试usb接口的串口消息,但是没有类似于windows下的bus hound工具,感觉比较痛苦,其实linux内核提供了usbmon这个工具,可以收集串口信息。

1.准备:

挂接debugfs (这个可以在内核配置中使能),加载usbmon模块(如果usbmon编译成模块). 如果usbmon编译到内核中的话,第二步可以省略

# mount -t debugfs none_debugs /sys/kernel/debug
# modprobe usbmon
#

确定bus数据已经准备就绪

# ls /sys/kernel/debug/usb/usbmon
0s  0u  1s  1t  1u  2s  2t  2u  3s  3t  3u  4s  4t  4u
#

现在你就可以选择要么使用‘0u‘(抓bus上的所有包),并且直接跳到第三步,或者进行第二步找到你设备所在的bus,这样就过滤掉很多烦人的信息

2. 查找设备所在的bus
运行"cat /proc/bus/usb/devices", 就会发现设备T开头的行.T行有一个bus口,如下所示
 T:  Bus=03 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=12  MxCh= 0
 D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
 P:  Vendor=0557 ProdID=2004 Rev= 1.00
 S:  Manufacturer=ATEN
 S:  Product=UC100KM V2.00
 Bus=03 说明它在bus3口上

3. 开始查看信息
# cat /sys/kernel/debug/usb/usbmon/3u > /tmp/1.mon.out

命令用来监听某个bus口,要么你可以监听所有的bus口

# cat /sys/kernel/debug/usb/usbmon/0u > /tmp/1.mon.out
* 数据格式
现在支持两种数据格式: ‘1t‘格式和‘1u‘格式. ‘1t‘ 在内核 2.6.21上不支持. ‘1u‘数据格式增加了一些数据项,如:ISO框架信息,间隔时间等.它产生了稍微多余的行,但是确实是‘1t‘格式的有效补充.
数据内容的详细说明(从左到右)
- URB Tag. URB地址

- Timestamp, 间隔时间

- Event Type. 时间类型.
支持的类型是: S - submission, C - callback, E - submission error.

- "Address" (通常是一个"管道").它包括4项内容,用冒号分割: URB type ,direction, Bus number, Device address, Endpoint number.
Type和direction被封装成如下数据格式:
Ci Co   Control input and output
Zi Zo   Isochronous input and output
Ii Io   Interrupt input and output
Bi Bo   Bulk input and output
Bus number, Device address, 和Endpoint是十进制数字, 但是他们可能因为阅读便利而设置成为0.

- URB Status word. 这个要么是字母或者是一些由分号隔开的数字

- Setup packet, 如果出现的话,包括5个字串: 他们是bmRequestType,bRequest, wValue, wIndex, wLength, (USB Specification 2.0.协议中有详细介绍)

- 同步号

- Data Length. 数据长度

- Data tag. 即使数据长度不为0,usbmon也不一定总能捕捉到数据,数据包内容只有在此tag为‘=‘才有效

- Data words 大头十六进制数. 
举例:
输入控制得到端口状态的示例
d5ea89a0 3575914555 S Ci:1:001:0 s a3 00 0000 0003 0004 4 <
d5ea89a0 3575914560 C Ci:1:001:0 0 4 = 01050000
 
通过bus5口发送一个31字节长度的块包(其中保存一个SCSI命令 0x5E )到存储设备
dd65f0e8 4128379752 S Bo:1:005:2 -115 31 = 55534243 5e000000 00000000 00000600 00000000 00000000 00000000 000000
dd65f0e8 4128379808 C Bo:1:005:2 0 31 >

详细信息请参阅:http://www.mjmwired.net/kernel/Documentation/usb/usbmon.txt

转自:http://hi.baidu.com/kahn_qiao/item/cb1c57e151f4eeaace2d4f9d

======================================================================================================================================================

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是错误码。

转自:http://blog.csdn.net/peng654321/article/details/6949170

时间: 2024-09-28 15:50:10

linux下类似Bus Hound的工具的相关文章

Perf Event :Linux下的系统性能调优工具

Perf Event :Linux下的系统性能调优工具 2011-05-27 10:35 刘 明 IBMDW 字号:T | T Perf Event 是一款随 Linux 内核代码一同发布和维护的性能诊断工具,由内核社区维护和发展.Perf 不仅可以用于应用程序的性能统计分析,也可以应用于内核代码的性能统计和分析.得益于其优秀的体系结构设计,越来越多的新功能被加入 Perf,使其已经成为一个多功能的性能统计工具集 .本文将介绍 Perf 在应用程序开发上的应用. AD:2014WOT全球软件技术

Linux下获取arm的交叉编译工具链

转载请注明文章:Linux下获取arm的交叉编译工具链 出处:多客博图 这里介绍,Linux下获取arm的交叉编译工具链,比如arm-linux-gnueabihf-gcc.arm-linux-gneabihf-gcc等. 前言 这里有一个专门的说法: “arm-linux-gnueabihf-gcc是由 Linaro 公司基于GCC推出的的ARM交叉编译工具.可用于交叉编译ARM系统中所有环节的代码,包括裸机程序.u-boot.Linux kernel.filesystem和App应用程序.使

Linux下项目与事务跟踪工具JIRA搭建汉化安装详解

1,安装java环境 [Java环境安装请查阅java环境安装] 2,安装数据库并添加jira数据库和用户授权 [MySql环境安装请查阅mysql安装] mysql> create database jira charactor set 'utf8'; mysql> grant all on jiradb.* to `jira`@`%` identified by 'jira123'; mysql> flush privileges; 3,相关软件包下载地址及说明 atlassian-

Linux下查询CPU 缓存的工具

在Linux下能够使用例如以下工具查询CPU缓存: 方式1: $ lscpu L1d cache: 32K <span style="white-space:pre"> </span>(一级数据缓存) L1i cache: 32K <span style="white-space:pre"> </span><span style="font-family: Arial, Helvetica, sans-

Linux下C++内存泄露检测工具

下载安装:http://blog.csdn.net/wanglin754/article/details/7194145 下载地址:http://www.valgrind.org/downloads/current.html#current 安装valgrind tar jxvf valgrind-3.7.0.tar.bz2             注意这里的参数里加了j,表示有bz2属性 cd valgrind-3.7.0 ./configure make make install make

推荐一个linux下的web压力测试工具神器webbench

推荐一个linux下的web压力测试工具神器webbench2014-04-30 09:35:29   来源:   评论:0 点击:880 用多了apache的ab工具之后你就会发现ab存在很多问题, 那么怎么办呢, 今天推荐一个神器---webbench webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好, 用多了apache的ab工具之后你就会发现ab存在很多问题, 那么怎么办呢, 今天推荐一个神器---webbench    

Linux下各种后门和日志工具详解

攻入Linux系统后,很多入侵者往往就开始得意忘形了.这其中还有一个原因,就是技术性也要求更高了.下面,我们来看看一些常用的经典工具. 1.从这里延伸:后门和连接工具 (1)Httptunnel Tunnel的意思是隧道,通常HTTPTunnel被称之为HTTP暗道,它的原理就是将数据伪装成HTTP的数据形式来穿过防火墙,实际上,它是在HTTP请求中创建了一个双向的虚拟数据连接来穿透防火墙.说得简单点,就是说在防火墙两边都设立一个转换程序,将原来需要发送或接受的数据包封装成HTTP请求的格式骗过

linux下常见内存异常查证工具和方法介绍

linux下常见内存异常查证工具和方法介绍 内存异常导致的异常往往很难查证,本文介绍在linux下的各种常见内存异常的查证工具和方法. 1.访问空指针/未初始化指针 这个是最简单的内存异常了,只要能够生成coredump文件,可以快速定位问题代码. 开启coredump 部分环境下默认不会生成coredump,需要运行如下命令:ulimit -c unlimited //unlimited表示不限制coredump文件大小,也可以指定一个最大文件大小. 定制core文件名 默认的coredump

Linux下性能测量和调试诊断工具Systemtap

一.简介 SystemTap是一个诊断Linux系统性能或功能问题的开源软件.它使得对运行时的Linux系统进行诊断调式变得更容易.更简单.有了它,开发者或调试人员不再需要重编译.安装新内核.重启动等烦人的步骤. 为了诊断系统问题或性能,开发者或调试人员只需要写一些脚本,然后通过SystemTap提供的命令行接口就可以对正在运行的内核进行诊断调试,以前需要的修改或插入调试代码.重新编译内核.安装内核和重启动等这些琐碎的工作完全消除.目前该工具并不支持对用户态应用的诊断调试,但是它们在以后会被添加