阅读:2050回复:15
请教站长:能否详细解释下usb设备的整个枚举过程!
为我们新人指一条明路啊,谢谢!!!!
|
|
|
沙发#
发布于:2007-05-29 13:27
有人会解释吧,本人没作过usb 开发.抱歉
|
|
|
板凳#
发布于:2007-05-29 14:28
copy and paste:
1. 第一次接收到主机的GetDescriptor请求中断响应,主机要求外设发送设备描述符,确定外设缺省管道控制端点的每次数据包大小。通过控制端点回送设备描述符,第一次只需要保证设备描述符中前8个字节发送正确。 2. 主机发送SetAddree请求到USB 设备,给USB设备分配唯一的地址。这时外设被分配唯一地址,此时的USB设备成为被主机承认的合理外设,可以进行正常的数据传送。 3 .外设再一次接收到GetDescriptor请求。主机分析描述符的信息。主机操作系统根据描述符信息寻找相应的设备驱动程序。 4 .操作系统会继续发出GetConfiguration请求,读取设备的配置信息。要把外设的各个端点的配置情形回送到主机中。如果有多个配置信息,有多次请求发生。 5 .在设备能通讯前,主机给外设一个SetConfiguration请求,主机根据整个系统的USB使用情况确认设备的哪一个配置有效,告诉其怎样工作,设备收到后调整有关配置,使设备能合理使用。 经过上面的调试后,USB外设可以发送和接收数据,设备如果不立即使用则会进入挂起状态,直到使用。 |
|
|
地板#
发布于:2007-05-29 14:31
写总线 driver才关心这些事情的
|
|
|
地下室#
发布于:2007-06-04 11:59
也许他是做firmware的
|
|
|
5楼#
发布于:2007-06-04 13:09
是的,我做设备firmware的,现在对这个已经知道,不过遇到一个新问题,我收数据的端点可以接收数据,但是发送数据的端点还不能向上位机发送数据!!!
|
|
|
6楼#
发布于:2007-06-04 14:48
是不是host一直等不到数据?你只要在IN token来之前把数据放在IN的fifo里面就好了
|
|
|
7楼#
发布于:2007-06-04 17:05
问题是我在ep2_txdone中清完标志后就往里面放数据了,可是上位机就是收不到数据啊
|
|
|
8楼#
发布于:2007-06-05 13:00
引用第7楼dianke02于2007-06-04 19:05发表的 : 那还有一种可能,是你的driver和device的IN Pipe没有设置好,比如driver中没有IN pipe,或者device的endpoint descriptor和driver中的设置不同 |
|
|
9楼#
发布于:2007-06-05 14:41
具体什么意思呢?不太明白,rayyang2000,d12中除了端点描述符外,对IN端点没有设置了啊,我是直接那zlg给的端点描述符弄上去的,其他我没有做什么操作。还有为什么driver中没有in pipe,是驱动的原因么?
|
|
|
10楼#
发布于:2007-06-05 17:43
另外,测试程序reset inpipe是可以的,d12可以产生中断
|
|
|
11楼#
发布于:2007-06-06 08:46
rayyang2000,能否加我qq:164460528,详细指导下我,现在很是郁闷,因为这个停下来好几天了,谢谢了!!!
|
|
|
12楼#
发布于:2007-06-06 09:57
都很多年不玩usb了,我也没有办法指导你什么,只是说说我当初做usb时候的经验
我说的可能的错误原因,比如driver中的in pipe设置的地址和device中描述符中的不同,或者driver自己的代码有问题,很多原因。如果你又不熟悉driver,就很困难了 如果有条件,自己去弄个usb analyzer吧,用那玩意儿,几下子就知道错在哪里了 |
|
|
13楼#
发布于:2007-06-06 10:08
目前公司不太可能去搞usb分析仪,你说的“driver中的in pipe设置的地址和device中描述符中的不同”是什么意思?不明白,driver不是从我的描述符中获取的端点描述么?怎么会不一样,driver我不熟悉呀
|
|
|
14楼#
发布于:2009-08-14 21:56
我目前也遇到这种情况,不知道怎么解决!!
|
|
|
15楼#
发布于:2009-08-15 15:53
如果主机的驱动程序也是你的,就可以一起调试,基本上是因为主机没有去读取你的导致的,有几种可能:
1. 如果是有中断,主机才读取的,判断你的中断是否OK。 2. 如果没有中断,是PC主动轮询读取的,怀疑是PC的读取线程因为条件不满足,导致没有下发读取命令。 USB协议分析议又不贵,买一个就行了,看是否有in的token就可以看出来了。 |
|