阅读:1680回复:2
EHCI host 读写u盘,遇到个问题,讨论高分
我是在给u盘发送完 Reset Recovery 就会出现这样的情况。
发送一包数据,qh,qtd 都正常,甚至qh 的 Current qTD Pointer 寄存器已经是要发送的 qtd 的值了。 但就是什么数据都发送不出去,连个错误中断都没有。qh的 token 和 Buffer Pointer 也都有值了。但看起来就象是发送前的值,token 的Total Bytes to Transfer 还是要发送的长度,Status 还是 80h。Buffer Pointer 还是数据的起始地址。 而且是在发送完以后,cbw阶段往往看不出什么问题,但接下来,有时 data 阶段出现这问题,有时csw 阶段出现。这样的情况又好象不是由于设备端点 stall 引起的?stall 的话也应该返回个错误状态,而且有的时候 data in 阶段可以,但是 csw 阶段就出现这种情况。 是不是主机和设备不同步了呢?不知道如果 u盘 在准备接收 csw,而我发了个 cbw 会有什么错误产生? |
|
沙发#
发布于:2005-01-22 18:32
看这个贴子好累啊。第二段没看出什么意思来,可能我比较弱:)
看样子您是找不到问题的所在,您也糊涂了。 不过,您提到了U盘,还有cbw,csw,这样的话我就可以讨论一下了。 您的问题好象也是很多人都遇到过的data0/data1的问题。 详细讨论请看 http://www.driverdevelop.com/forum/html_85089.html?1106389837 还有您的最后一句:u盘不会准备接受csw,csw都是由host接收的。 同样的,cbw都是host发出的。 协议上说,device准备发送csw的时候,host发出了cbw,那么出现的情况是不可预测的。 |
|
|
板凳#
发布于:2005-01-24 08:19
看这个贴子好累啊。第二段没看出什么意思来,可能我比较弱:) 上面的说法是有问题。哈哈,是应该像您最后说的那样。 帖子看过了,有可能是这个问题,这就试一下。 |
|