打印

新人学习USB,出现枚举问题,请高手帮忙!

[复制链接]
10708|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jjphero|  楼主 | 2011-11-29 09:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好,我初次接触USB,用的是ATmel公司的AT90USB162单片机作为USB设备,希望将设备配置成鼠标,这样可以避免驱动的编写,但是在枚举过程出现问题,以下是用Bus Hound抓取到的设备插入USB接口后的枚举过程:
Bus Hound 6.01 capture on Windows XP Service Pack 3 (x86). Complements of www.perisoft.net
  Device - Device ID (followed by the endpoint for USB devices)
            (18) JTAGICE mkII
            (19) USB 人体学输入设备
            (20) USB 人体学输入设备
            (21) HID-compliant mouse
  Phase  - Phase Type
            CTL   USB control transfer      
            IN    Data in transfer           
            USTS  USB status                 
  Data   - Hex dump of the data transferred
  Descr  - Description of the phase
  Cmd... - Position in the captured data

Device  Phase  Data                                                Description       Cmd.Phase.Ofs(rep)
------  -----  --------------------------------------------------  ----------------  ------------------
  19.0  CTL    80 06 00 03  00 00 ff 00                            GET DESCRIPTOR           1.1.0(2)     
  19.0  IN      04 03 09 04                                         ....                     1.2.0        
  19.0  CTL    80 06 02 03  09 04 ff 00                            GET DESCRIPTOR           2.1.0(2)     
  19.0  IN      16 03 69 00  53 00 43 00  4f 00 50 00  45 00 20 00  ..i.S.C.O.P.E. .         2.2.0        
                    55 00 53 00  42 00                                  U.S.B.                   2.2.16      
  19.0  CTL    80 06 00 01  00 00 12 00                            GET DESCRIPTOR           5.1.0        
  19.0  IN      12 01 00 02  00 00 00 40  eb 03 13 20  00 01 01 02  .......@... ....         5.2.0        
                    03 01                                               ..                       5.2.16      
  19.0  CTL    80 06 00 02  00 00 09 00                            GET DESCRIPTOR           6.1.0        
  19.0  IN      09 02 22 00  01 01 00 80  64                        ..".....d                6.2.0        
  19.0  CTL    80 06 00 02  00 00 22 00                            GET DESCRIPTOR           7.1.0        
  19.0  IN      09 02 22 00  01 01 00 80  64 09 04 00  00 01 03 00  ..".....d.......         7.2.0        
                   02 00 09 21  11 01 00 01  22 34 00 07  05 81 03 08  ...!...."4......         7.2.16      
                   00 02                                               ..                       7.2.32      
  19.0  CTL    00 09 01 00  00 00 00 00                            SET CONFIG               8.1.0        
  19.0  CTL    21 0a 00 00  00 00 00 00                            SET IDLE                 9.1.0        
  19.0  CTL    81 06 00 22  00 00 74 00                            GET DESCRIPTOR          10.1.0(3)     
  19.0  USTS   c0000004                                            stall pid               10.2.0      
我又特意用一个USB鼠标作为对比,以下是鼠标的枚举数据:
Bus Hound 6.01 capture on Windows XP Service Pack 3 (x86). Complements of www.perisoft.net
  Device - Device ID (followed by the endpoint for USB devices)
            (18) JTAGICE mkII
            (19) USB 人体学输入设备
            (20) USB 人体学输入设备
            (21) HID-compliant mouse
  Phase  - Phase Type
            CTL   USB control transfer      
            IN    Data in transfer           
            USTS  USB status                 
  Data   - Hex dump of the data transferred
  Descr  - Description of the phase
  Cmd... - Position in the captured data

Device  Phase  Data                                                Description       Cmd.Phase.Ofs(rep)
------  -----  --------------------------------------------------  ----------------  ------------------
  20.0  CTL    80 06 00 03  00 00 ff 00                            GET DESCRIPTOR           1.1.0(2)     
  20.0  IN      04 03 09 04                                         ....                     1.2.0        
  20.0  CTL    80 06 02 03  09 04 ff 00                            GET DESCRIPTOR           2.1.0(2)     
  20.0  IN      24 03 55 00  53 00 42 00  20 00 4f 00  50 00 54 00  $.U.S.B. .O.P.T.         2.2.0        
                   49 00 43 00  41 00 4c 00  20 00 4d 00  4f 00 55 00  I.C.A.L. .M.O.U.         2.2.16      
                   53 00 45 00                                         S.E.                     2.2.32      
  20.0  CTL    80 06 00 01  00 00 12 00                            GET DESCRIPTOR           5.1.0        
  20.0  IN      12 01 10 01  00 00 00 08  3a 09 10 25  00 01 01 02  ........:..%....         5.2.0        
                    00 01                                               ..                       5.2.16      
  20.0  CTL    80 06 00 02  00 00 09 00                            GET DESCRIPTOR           6.1.0        
  20.0  IN      09 02 22 00  01 01 04 a0  32                        ..".....2                6.2.0        
  20.0  CTL    80 06 00 02  00 00 22 00                            GET DESCRIPTOR           7.1.0        
  20.0  IN      09 02 22 00  01 01 04 a0  32 09 04 00  00 01 03 01  ..".....2.......         7.2.0        
                   02 00 09 21  11 01 00 01  22 3e 00 07  05 81 03 04  ...!....">......         7.2.16      
                   00 0a                                               ..                       7.2.32      
  20.0  CTL    00 09 01 00  00 00 00 00                            SET CONFIG               8.1.0        
  20.0  CTL    21 0a 00 00  00 00 00 00                            SET IDLE                 9.1.0        
  20.0  USTS   c0000004                                            stall pid                9.2.0        
  20.0  CTL    81 06 00 22  00 00 7e 00                            GET DESCRIPTOR          10.1.0        
  20.0  IN     05 01 09 02  a1 01 05 09  19 01 29 03  15 00 25 01  ..........)...%.        10.2.0        
                  95 03 75 01  81 02 95 01  75 05 81 03  05 01 09 01  ..u.....u.......        10.2.16      
                  a1 00 09 30  09 31 15 81  25 7f 75 08  95 02 81 06  ...0.1..%.u.....        10.2.32      
                  c0 09 38 15  81 25 7f 75  08 95 01 81  06 c0        ..8..%.u......          10.2.48      
  20.0  CTL    80 06 00 01  00 00 12 00                            GET DESCRIPTOR          11.1.0        
  20.0  IN     12 01 10 01  00 00 00 08  3a 09 10 25  00 01 01 02  ........:..%....        11.2.0        
                  00 01                                               ..                      11.2.16      
  20.0  CTL    80 06 00 02  00 00 09 00                            GET DESCRIPTOR          12.1.0        
  20.0  IN     09 02 22 00  01 01 04 a0  32                        ..".....2               12.2.0        
  20.0  CTL    80 06 00 02  00 00 22 00                            GET DESCRIPTOR          13.1.0        
  20.0  IN     09 02 22 00  01 01 04 a0  32 09 04 00  00 01 03 01  ..".....2.......        13.2.0        
                  02 00 09 21  11 01 00 01  22 3e 00 07  05 81 03 04  ...!....">......        13.2.16      
                  00 0a                                               ..                      13.2.32      
  20.0  CTL    00 09 01 00  00 00 00 00                            SET CONFIG              14.1.0        
  20.0  CTL    21 0a 00 00  00 00 00 00                            SET IDLE                15.1.0        
  20.0  USTS   c0000004                                            stall pid               15.2.0        
  20.0  CTL    81 06 00 22  00 00 7e 00                            GET DESCRIPTOR          16.1.0        
  20.0  IN     05 01 09 02  a1 01 05 09  19 01 29 03  15 00 25 01  ..........)...%.        16.2.0        
                  95 03 75 01  81 02 95 01  75 05 81 03  05 01 09 01  ..u.....u.......        16.2.16      
                  a1 00 09 30  09 31 15 81  25 7f 75 08  95 02 81 06  ...0.1..%.u.....        16.2.32      
                  c0 09 38 15  81 25 7f 75  08 95 01 81  06 c0        ..8..%.u......          16.2.48      
  20.1  IN     00 f1 01 00                                         ....                    17.1.0         
我比较了两者的数据,发现自己的设备在进行到USTS   c0000004   stall pid 这个步骤就停止了,很奇怪不知道怎么回事?也不清楚USTS   c0000004   stall pid是什么意思?请哪位高手指点一下,告诉我是哪里的问题?应该如何修改我的固件程序?谢谢了!

相关帖子

沙发
pingis58| | 2011-11-29 19:09 | 只看该作者
我的也有BUS HOUND测试 了,很奇怪,第一个包为什么会是
CTL    80 06 00 03  00 00 ff 00                            GET DESCRIPTOR           1.1.0(2)     
  19.0  IN      04 03 09 04                                         ....                     1.2.0        
  19.0  CTL    80 06 02 03  09 04 ff 00                            GET DESCRIPTOR           2.1.0(2)     
  19.0  IN      16 03 69 00  53 00 43 00  4f 00 50 00  45 00 20 00  ..i.S.C.O.P.E. .         2.2.0        
                    55 00 53 00  42 00                                  U.S.B.                   2.2.16      


而不是读设备描述符。不过我不是做鼠标,只是给自己设备摸拟通信用

使用特权

评论回复
板凳
pingis58| | 2011-11-29 19:12 | 只看该作者
本帖最后由 pingis58 于 2011-11-29 19:14 编辑

你那个难道是端点停滞的握手包?后面的()内的3表示重发 了三次,错误三次就停了?

使用特权

评论回复
地板
jjphero|  楼主 | 2011-11-30 07:44 | 只看该作者
是的,我也很奇怪,但是现在问题不在这里,而是在后面啊! 2# pingis58

使用特权

评论回复
5
jjphero|  楼主 | 2011-11-30 08:10 | 只看该作者
你所说的端点停滞的握手包具体是指什么呢?难道就是主机发出的c0000004??那意思是我的固件程序需要针对c0000004做相应的处理?那该如何回应主机呢?谢谢! 3# pingis58

使用特权

评论回复
6
pingis58| | 2011-11-30 13:20 | 只看该作者
我也不太明白,根据查资料的瞎猜测,USTS应该只是显示的一个USB状态。这个STALL你可以查USB2.0协议,大致估计可以是访问你的端点出问题了,查看下是否设置错了。仅共参考

使用特权

评论回复
7
jjphero|  楼主 | 2011-11-30 16:44 | 只看该作者
谢谢你的帮助! 6# pingis58

使用特权

评论回复
8
xiaozhu2014| | 2016-11-10 11:13 | 只看该作者
楼主最后那个问题怎么解决的

使用特权

评论回复
9
jiayou0054| | 2016-11-28 22:00 | 只看该作者
81 06 00 22 ..... 好像是索要报表描述符,这可是重点啊。你没有返回。

使用特权

评论回复
10
小先锋| | 2016-12-5 09:50 | 只看该作者
观摩,学习

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

0

粉丝