打印

请教大家一个奇怪的枚举过程。

[复制链接]
2764|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tudou2048|  楼主 | 2011-1-15 22:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一个USB鼠标,USB芯片使用D12
枚举过程中,主机已成功获取设备、配置描述符、字符串描述符、HID描述符。不过接下来的设备请求有些奇怪:
22H 0aH 00H 00H 00H 00H 00H 00H

感觉应该为 21H 0aH 00H 00H 00H 00H 00H 00H 啊,我响应这条随后又出现了一个类似的设备请求:
82H 06H 00H 22H 01H 00H 72H 00H

感觉应该为 81H 06H 00H 22H 01H 00H 72H  00H,按81H 06H响应(报告描述符)后,枚举成功。

为什么会这样呢?怀疑过D12,但更换了D12现象依旧,请高手指点。

相关帖子

沙发
tudou2048|  楼主 | 2011-1-19 12:19 | 只看该作者
自己顶一下,等待高手。

使用特权

评论回复
板凳
sz_kd| | 2011-1-20 17:40 | 只看该作者
你这个没有问题,你要对着USB规格看是什么请求,自己翻译过来

使用特权

评论回复
地板
tudou2048|  楼主 | 2011-1-20 19:53 | 只看该作者
请问 81H 06H  是什么请求,没找到啊。

使用特权

评论回复
5
sz_kd| | 2011-1-21 11:50 | 只看该作者
获得接口描述符,你对着USB规格里的第9章看USB Device Requests里每个字节和位的含义,就能找到每个setup包是什么含义

使用特权

评论回复
6
tudou2048|  楼主 | 2011-1-21 12:00 | 只看该作者
抱歉我说错了,不明白 82H 06H是什么请求?  应该出现 81H 06H 的地方出现了82H 06H,很是费解啊。

使用特权

评论回复
7
sz_kd| | 2011-1-22 11:45 | 只看该作者
获得端点描述符。

82H---------10000010B,BIT7=1说明传输方向是设备到主机,BIT6-BIT 为0,说明该请求是标准请求,其BIT0-BIT4   为2,说明其接受时端点。

06H-----是获得描述符的请求代码.

5楼说的USB规格里全部由写,你再仔细看看规格吧。

使用特权

评论回复
8
tudou2048|  楼主 | 2011-1-22 22:02 | 只看该作者
7楼可能误会我的意思了,设备请求的结构我清楚,这个不是关键。
枚举的大部分过程已经实现:主机已成功获取设备、配置描述符、字符串描述符、HID描述符。
通过计算机设备管理器usb属性可以查看到与上面描述符相关的内容。
本应该进入SET_IDLE和获取报告描述符阶段,却不是这样。这两个请求我确实不知道该怎没响应,我有点怀疑是不是D12有问题,把这里应该解码为81H的数据解码为82?我按照响应SET_IDLE和获取报告描述符的方式响应这两个未知的请求,结果枚举成功。

使用特权

评论回复
9
sz_kd| | 2011-1-24 10:25 | 只看该作者
你用USB分析器抓出整个枚举过程就很清楚。

81H和82H,一个是请求接口,一个请求端点,不支持你发送STALL给主机就可以。

支持这个请求你也可以保存这个接口和端点相关的值。
有很多请求不支持是可以发送STALL告诉主机的。

呵呵,以上个人意见,仅供参考。

使用特权

评论回复
10
tudou2048|  楼主 | 2011-1-25 20:57 | 只看该作者
虽然手头没有usb总线分析仪,但还是很感谢sz_kd的热心帮助。

使用特权

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

本版积分规则

8

主题

261

帖子

4

粉丝