阅读:1556回复:5
bulk out时的ping state是怎么回事?
我正在做ehcd的host controller.
枚举过了以后开始bulk传输 现象简单说,就是第一次bulk out , bulk in 都成功。第二次bulk out成功,bulk in就再也等不到了。 查找了整个u盘插入后的流程,就发现第一次bulk out后qtd的token status 返回ping state有点可疑。 应该是告诉host,device没有空间。我还是怀疑之前的ehcd host controller的设置,或者枚举有问题。 谁知道使用u盘的过程哪里有问题,才会出现ping state? 大侠救命,不胜感激阿! |
|
沙发#
发布于:2007-09-13 16:32
伙计,我也是做EHCI的,我的情况和你的一模一样,也是U盘枚举完了,发出第一个BULK OUT 之后,Ping 位就被置1了,然后在后面发的BULK IN 收到的全是NAK,无论等多久都不来数据。。。。
希望能探讨一下,我的邮箱:weiding139@yahoo.com.cn QQ:176131760 |
|
板凳#
发布于:2007-09-18 18:14
我的情况是还能收到一次BULK IN的数据
第二次BULK IN 就再也等不到了。 现在我觉得EHCI硬件自动处理了PING STATE,不用软件操心 现在这两次BULK OUT后 QTD的TOKEN都提示DT(DATA TOGGLE BIT)=1, 但是DEVICE应该改变这个BIT。正常的数据应该是1,0,1,0。。。交替的。 不知道为什么DEVICE没有给我改变? 设备端应该也没有什么问题,都是正常的U盘。 |
|
地板#
发布于:2007-09-20 15:18
好像下面两个帖子和我遇到的问题比较象,有兴趣的人可以看看
http://www.usb.org/phpbb/viewtopic.php?t=13495 http://www.usb.org/phpbb/viewtopic.php?t=13557 |
|
地下室#
发布于:2007-09-20 15:51
我的问题解决了,原来是发的CBW指令不对才导致 这样的问题的
|
|
5楼#
发布于:2007-09-21 09:15
hehe, 看来我们是两个问题了。
我的要发的数据没有问题。 要修改qh , qtd的data toggle bit的处理方式。 |
|