阅读:2359回复:17
求教:USB设备枚举过程是系统自动完成的吗?
大侠您好:
请问USB设备枚举过程是系统自动完成的吗?还是需要自己编写一个地层驱动才能成功实现设备枚举? 多谢指点! |
|
沙发#
发布于:2004-07-05 14:54
谢了windrv!
我把他们全部设为0了 |
|
板凳#
发布于:2004-07-05 03:17
除了VID/PID之外,还必须注意DeviceClass和DeviceSubClass等信息。你可以比较一下设备刚上电时PC得到的Desciptor。
|
|
地板#
发布于:2004-07-03 12:03
多谢指点!
下面是我用bushound抓到的数据: 10.0 CTL 80 06 00 01 00 00 12 00 GET DESCRIPTOR 22.1.0 10.0 DI 12 01 10 01 dc 00 00 10 71 04 66 06 00 01 00 00 ........q.f..... 22.2.0 00 01 .. 22.2.16 10.0 NSTS 20 01 00 c0 cancelled 22.3.0 为什么,我的设备描述符送上来之后,主机就cacelled了? 谢谢! |
|
地下室#
发布于:2004-07-03 11:56
INF指驱动程序的安装文件。
|
|
|
5楼#
发布于:2004-07-02 14:54
谢谢了!
inf 指的是? |
|
6楼#
发布于:2004-07-02 11:31
可以,只要和inf中的一致就行了。
|
|
7楼#
发布于:2004-07-01 21:01
多谢指点!
vid和pid自己随便编一个行不行?因为pid不知道如何获得 |
|
8楼#
发布于:2004-07-01 15:26
相同的,注意一下那个接口号必须至少为1,那个String项可以全设置成0。vid和pid时必须有的。
|
|
9楼#
发布于:2004-07-01 11:02
谢谢jinghuiren大侠!另外请问,描述符的后两个字节的发送方式是不是应该和前面8个字节的相同啊?
[编辑 - 7/1/04 by zhanglijie] |
|
10楼#
发布于:2004-07-01 10:51
获得配置描述符应该是:80 06 02 00 00 00 09 00 吧(或者有可能其中有某两个相邻的字节互换一下)
你收到了80 06 01 00 01 00 00 12 00 说明设置地址成功,并且设备描述符的前八个字是正确的,没有收到获得配置描述符说明你的设备描述符的后面10个字节里有错误,或者你发送的方法不对。 |
|
11楼#
发布于:2004-07-01 10:40
不客气。我也刚开始学,一起进步。
枚举是固件干的事,跟驱动没关系,但驱动要识别枚举的设备。 另:FLYHYE 兄,好忙呀!哪都有你的跟帖。 |
|
|
12楼#
发布于:2004-07-01 10:21
谢谢metalwing!
|
|
13楼#
发布于:2004-07-01 10:16
80 06 01 00 01 00 00 12 00
是获取 DEVICE DESCRIPTOR 的命令,(12H 个字节) 80 00 00 00 00 00 01 00 00 是获取 STATUS 的命令 你在 OUT 端点怎么读 IN 端点的东西?建议用 BUSHOUND 看,可以看到发给你的命令和你的响应。 |
|
|
14楼#
发布于:2004-07-01 09:17
谢谢大侠指点!我用的是51+D12。
我编写的D12固件程序,在USB设备枚举过程中,分配到地址0x02并地址使能后,能够从控制输出端点读取到:C0 08 80 06 00 01 00 00 12 00,但我把描述符写进控制输入缓存器(第一次16字节,第二次2字节),并使缓存器数据有效后,从控制输出端点读取到:80 00 00 00 00 01 00 00 12 00,并没有读取到主机获取配置描述符的数据:80 06 00 01 00 00 40 00。 说明:我的系统是win2000,此外我没有编写任何地层驱动程序 请您帮忙分析一下原因,不胜感激! |
|
15楼#
发布于:2004-07-01 09:08
拿68013来说,当把它插到主机的时候,会有一个自动枚举,这时候不管你的固件如何对片子进行配置,主机读上来的配置都是默认配置.
如果你想要你的固件有效,就需要一个再枚举的过程. 至于如何做,看看cypress提供的例子. |
|
16楼#
发布于:2004-06-30 22:00
我是2000的系统
|
|
17楼#
发布于:2004-06-30 19:35
大侠您好: 看usb设备是什么了,不过系统会完成很多枚举步骤:) 还要看你用的是哪个系统哟 [编辑 - 6/30/04 by flyhye] |
|
|