阅读:1842回复:5
急!!关于USB设备列举,向版主求救!!!
我做的项目是用usbn9603实现U盘,煎熬多日,至今列举都无法完成,郁闷之极,具体情况如下:
1)可以返回设备描述符,配置描述符(9个字节),bushound可以看到数据无误。pc出现“找到未知usb设备”,自动安装“usb诊断设备”驱动程序。 2)机要求返回长配置描述符,发送setup包为 80 06 00 02 00-00 00 ff 00 然后发8(描述符总长度为60字节)个IN token触发数据传输,bushound看不到setup包和返回的数据。跟踪发现,实际上发送的60个字节数据有误,即在配置描述符和接口描述符后面分别多发了三个零字节,在各个端点描述符后面分别多发了一个零字节,导致主机无法识别。 反复检查相关的代码,仍然不知到问题出在哪里。 1)相应的结构体定义和赋值可以肯定无误。 2)设备描述符(18字节)也分几次传输,却可以正确返回,相应的函数可以断定没有问题。 3)关于驱动程序,我认为与这个问题无关,也尝试了升级为win98se通用的mass storage类驱动,bushound上可以看到相应标志,但结果是一样的失望。 不知版主及各位大侠是否遇到过类似问题,还望指点迷津,拉小弟一把,小弟感激不尽!!还有一个小问题就是小弟不知道怎么给大侠们分数,也请说明一下。 |
|
沙发#
发布于:2003-04-28 17:57
sorry,那个set包是80 06 00 02-00 00 ff 00
|
|
板凳#
发布于:2003-04-29 12:07
你仔细检查你的发送程序吧!我看90%的人都在问这方面问题!
|
|
地板#
发布于:2003-04-29 12:56
你是怎么发送的?
按照先发配置描述符9个字节,然后发送接口描述符9个字节,然后是每个端点吗?这样发送可能会出问题,你别把他们分开,你的usb控制传输一次不是能发16个字节数据吗?你就按顺序依次16个字节把这60个字节全部发过去(3个16字节,1个12字节),在驱动方面有专门的函数从这批数据里筛选出接口和端点信息,不用你在固件方把他们分开,你再试试看。 |
|
地下室#
发布于:2003-05-05 00:56
在这时你最好只返回8个字节,主要是通知windows下来的包的总长度,另外可能是你的编译器对于数据采用偶数地址对齐,使得当数据为奇数时,自动添加一个零!你查查看吧!
|
|
5楼#
发布于:2003-05-05 12:08
感谢几位大侠的关注,kennylew那个问题帖子是我发的。目前设备的列举已经完成,楼上的NewTech说的应该没错,问题可能是出在编译器方面,我用的是ARM的SDT2.5。我直接定义了一个数组,不搞结构体那一套,然后发回去就OK了。
|
|
|