不错的usb分析工具!!!---用bus hound分析usb的枚举过程【转】

简介:

转自:http://blog.chinaunix.net/uid-25909619-id-3335199.html

说明:由于分析时是在记事本上分析的,贴到这里出现了格式有点乱,看时请复制到记事本中,可以看到完整的格式。

Bus Hound 5.00 capture. Complements of www.perisoft.net

  Device - Device ID (followed by the endpoint for USB devices)
            (22) Qualcomm HS-USB Diagnostics 9025 (COM5)
  Phase  - Phase Type
            CTL   USB control transfer       
            DO    Data out                   
            LEN   Data length                
            RSET  bus reset                  
            URB   USB request block          
  Data   - Hex dump of the data transferred
  Descr  - Description of the phase
  Cmd... - Position in the captured data
  Delta  - Elapsed time from the previous phase to the current phase
  Time   - Time the phase occurred in hour:minute:second.millisec form
  Date   - Date the phase occurred in year/month/day form
  
/*说明*/
1.1.0第一个命令的第一个阶段
1.2.0第一个命令的第二个阶段
1.3.0第一个命令的0字节偏移
1.3.16第一个命令的16个字节偏移

22.0解释:22为设备加入系统的顺序号,0为端点号
22.d解释:22为设备加入系统的顺序号,d为端点号
22.9解释:22为设备加入系统的顺序号,9为端点号


Device  Phase  Data                                                Description       Cmd.Phase.Ofs(rep)  Delta  Time          Date      
------  -----  --------------------------------------------------  ----------------  ------------------  -----  ------------  ----------
  22.0  CTL    80 06 00 01  00 00 12 00                            GET DESCRIPTOR           1.1.0         14sc  06:45:32.794  2012-09-02
 (80 方向:设备至主机 种类:标准 接收者:设备
 (06 获得描述符
 (00 01 获得的是设备描述符
 (00 00 偏移为0
 (12 00 要求设备返回18字节
   
  22.0  LEN    12 00 00 00                                         18                       1.2.0          8us  06:45:32.794  2012-09-02
 (返回的字节数
   
  22.0  DO     12 01 00 02  00 00 00 40  d1 12 00 40  27 02 01 09  .......@...@'...         1.3.0          1us  06:45:32.794  2012-09-02  
               03 01                                               ..                       1.3.16
 (设备的应答刚好18个字符
 (bLength:12 ,此设备描述符的长度是18字节
 (bDecriptorType:01 ,参照表5得知是设备描述符
 (bcdUSB:00 02 ,代表USB协议的版本号,此处2.0版
 (bDeviceClass:00
 (bDeviceSubClass:00,表述设备类码由接口文件给出,可能是为了每个接口独立实现不同的功能。
 (bDevicePortocol:00,跟前两个字节紧密联系,这里指还是等待在接口文件里再说明使用的设备协议
 (bMaxPacketSize0:40,指端点0最大可接受的包大小。

 (idVendor:d1 12 ,VID其实是0x12D1,字节序问题不在赘述
 (idProduct:00 40 ,PID 0x4000
 (bcdDevice:27 02,这个似乎没什么通用的意义
 (iManufacturer:01,
 (iProduct:09,
 (iSerialNumber:03,
 (bNumConfigurations:01
这几个数字都是索引值,如果以后主机想向设备端索要这些字符串信息(包含在字符串描述符里),就用这些值填充wIndex

                                        
  22.0  URB    50 00 0b 00  00 00 00 00  56 00 69 00  64 00 5f 00  GET DEVICE DESCR         1.4.0          2us  06:45:32.794  2012-09-02  
               31 00 32 00  64 00 31 00  12 00 00 00  88 a1 77 8a                           1.4.16
                              
                                                       
  22.0  CTL    80 06 00 02  00 00 09 00                            GET DESCRIPTOR           2.1.0          6us  06:45:32.794  2012-09-02
 (80 方向:设备至主机 种类:标准 接收者:设备
 (06 获得描述符
 (00 02 获得的是配置描述符
 (00 00 偏移为0
 (09 00 要求设备返回9字节
 
 
  22.0  LEN    09 00 00 00                                         9                        2.2.0          3us  06:45:32.794  2012-09-02  
  22.0  DO     09 02 20 00  01 01 00 a0  fa                        .. ......                2.3.0          1us  06:45:32.794  2012-09-02
 (bLength:09 
 (bDescriptorType:02 这跟设备描述符都没什么区别
 (wTotalLength: 20 00 ,表示包括此配置描述符、接口描述符、端点描述符和设备类及厂商定义的描述符的总长为0x0020=32个字节。
 (bNumInterfaces: 01 ,支持的接口数为1
 (bCongfigurationValue:01,  SetConfiguration请求中用作参数来选定此配置
 (iConfiguration:00,描述此配置的字串描述表索引
 (bmAttributes:A0,10100000B,只看得出是D5: 远程唤醒 ,D7是保留位
 (MaxPower:fa,总线耗电量为250x2=500mA.

    
  22.0  URB    50 00 0b 00  00 00 00 00  56 00 69 00  64 00 5f 00  GET DEVICE DESCR         2.4.0          2us  06:45:32.794  2012-09-02  
               31 00 32 00  64 00 31 00  09 00 00 00  60 23 5a 8a                           2.4.16           
               
                                
  22.0  CTL    80 06 00 02  00 00 20 00                            GET DESCRIPTOR           3.1.0          4us  06:45:32.794  2012-09-02  
 (80 方向:设备至主机 种类:标准 接收者:设备
 (06 获得描述符
 (00 02 获得的是配置描述符
 (00 00 偏移为0
 (20 00 要求设备返回32字节
 
  22.0  LEN    20 00 00 00                                         32                       3.2.0          3us  06:45:32.794  2012-09-02  
  22.0  DO     09 02 20 00  01 01 00 a0  fa 09 04 00  00 02 08 06  .. .............         3.3.0          0us  06:45:32.794  2012-09-02  
               50 09 07 05  8d 02 00 02  00 07 05 09  02 00 02 01  P...............         3.3.16
第一部分09 02 20 00  01 01 00 a0  fa
 (bLength:09 
 (bDescriptorType:02 这跟设备描述符都没什么区别
 (wTotalLength: 20 00 ,表示包括此配置描述符、接口描述符、端点描述符和设备类及厂商定义的描述符的总长为0x0020=32个字节。
 (bNumInterfaces: 01 ,支持的接口数为1
 (bCongfigurationValue:01,  SetConfiguration请求中用作参数来选定此配置
 (iConfiguration:00,描述此配置的字串描述表索引
 (bmAttributes:A0,10100000B,只看得出是D5: 远程唤醒 ,D7是保留位
 (MaxPower:fa,总线耗电量为250x2=500mA.
 
第二部分09 04 00  00 02 08 06 50 09 是接口描述符(Interface Descriptor),见表10
bLength:09 
bDescriptorType:04,接口描述符
bInterfaceNumber:00 ,当前配置的是0号接口(第一个接口)
bAlternateSetting:00,可选设置的索引值,还不清楚具体意义
bNumEndpoints:02,此接口用的端点数量为2
bInterfaceClass:08 ,
bInterfaceSubClass:06,
bInterfaceProtocol:50 ,
iInterface:09, 是一个字符串索引

第三部分07 05  8d 02 00 02  00是端点描述符(EndPont Descriptor) 
bLength:07
bDescriptorType:05
bEndpointAddress:8d,端点地址0xd,入端点
bmAttributes:02 ,位图,批量传送
wMaxPacketSize:00 02 ,当前配置下此端点能够接收或发送的最大数据包的大小为512
bInterval:00

第四部分07 05 09  02 00 02 01是端点描述符(EndPont Descriptor) 
bLength:07
bDescriptorType:05
bEndpointAddress:09,端点地址0x9,出端点
bmAttributes:02 ,位图,批量传送
wMaxPacketSize:00 02 ,当前配置下此端点能够接收或发送的最大数据包的大小为512
bInterval:01 轮询的间隔为1ms,就是说1ms发生一次中断
           
                                        
  22.0  URB    50 00 0b 00  00 00 00 00  56 00 69 00  64 00 5f 00  GET DEVICE DESCR         3.4.0          1us  06:45:32.794  2012-09-02  
               31 00 32 00  64 00 31 00  20 00 00 00  a0 47 c4 8a                           3.4.16                                       

  22.0  CTL    00 09 01 00  00 00 00 00                            SET CONFIG               4.1.0          6us  06:45:32.794  2012-09-02  
(00 D7: 传输方向;0=主机至设备 种类;0=标准 接受者;0=设备 
(09为set config
(01 00为配置值
(00 00
(00 00

  22.0  URB    50 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  SELECT CONFIG            4.2.0          3us  06:45:32.794  2012-09-02  
               a0 47 c4 8a  f8 c8 81 8a  38 00 00 00  08 06 50 00                           4.2.16                                        
  22.0  CTL    00 03 01 00  00 00 00 00                            SET FEATURE              5.1.0         19us  06:45:32.794  2012-09-02  
  (00 D7: 传输方向;0=主机至设备 种类;0=标准 接受者;0=设备 
 (03为set feature
 (01 00为特性选择符,设备
 (00 00
 (00 00
  
  22.0  URB    50 00 08 00  00 00 00 00  00 82 52 8a  20 00 00 00  CONTROL TRANSFER         5.2.0        374us  06:45:32.794  2012-09-02  
               18 82 52 8a  0a 00 00 00  00 00 00 00  00 00 00 00                           5.2.16                                        
  22.d  RSET                                                                                6.1.0         10us  06:45:32.794  2012-09-02  
  (重启端点d
  22.d  URB    18 00 1e 00  00 00 00 00  00 82 52 8a  10 00 00 00  RESET PIPE               6.2.0        364us  06:45:32.795  2012-09-02  
               1c 24 10 8a  73 00 00 00                                                     6.2.16                                        
  22.9  RSET                                                                                7.1.0          6us  06:45:32.795  2012-09-02  
  (重启端点9
  22.9  URB    18 00 1e 00  00 00 00 00  00 82 52 8a  10 00 00 00  RESET PIPE               7.2.0        364us  06:45:32.795  2012-09-02  
               3c 24 10 8a  73 00 00 00                                                     7.2.16                                  
















本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/sky-heaven/p/5663484.html,如需转载请自行联系原作者

相关文章
|
11月前
|
Linux
一文搞懂 USB 设备端驱动框架
hello 大家好,今天带领大家学习一下USB 设备端驱动 内核版本:4.4.94
691 0
|
11月前
|
Linux 芯片
Linux驱动分析之SPI设备
前面我们对SPI控制器驱动进行了分析,接下来来分析SPI设备驱动。我们以DS1302驱动作为分析对象。DS1302是一款RTC芯片,估计很多人在学单片机时用到过。RTC芯片算是比较简单的,也方便分析理解。
Linux驱动分析之SPI设备
RK3399平台开发系列讲解(高速设备驱动篇)6.61、USB如何模拟HID设备
RK3399平台开发系列讲解(高速设备驱动篇)6.61、USB如何模拟HID设备
117 0
RK3399平台开发系列讲解(高速设备驱动篇)6.61、USB如何模拟HID设备
UART子系统(十一)UART驱动情景分析_write
UART子系统(十一)UART驱动情景分析_write
142 0
UART子系统(十一)UART驱动情景分析_write
UART子系统(九)UART驱动情景分析_open
UART子系统(九)UART驱动情景分析_open
97 0
UART子系统(九)UART驱动情景分析_open
|
存储
USB OTG简介、与普通USB线的区别
<p style="line-height: 28px; margin-top: 0px; margin-bottom: 10px; padding-top: 0px; padding-bottom: 0px; color: rgb(146, 146, 146); font-family: 'Hiragino Sans GB W3', 'Hiragino Sans GB', Arial, He
4302 0