阅读:1858回复:12
811的USB Host接收数据的时候为什么丢失数据
我用51+811读写优盘,调试到了bulk协议层。可是发现发出的SCSI命令只有Request Sense、Inquiry命令可以正常返回数据,而其他如Read_Capacity、Read_Format_Capacity、Read10等几乎全部命令都返回错误!数据。其中read10返回的数据有大量丢失。
可是奇怪的是上面所列命令发出去之后都能够接收的正确的CSW!! 我真的疯了,求哪位老大给个建议 [编辑 - 3/15/04 by purple.sun] |
|
沙发#
发布于:2004-03-12 14:19
其他命令返回的字节都小于64字节,一次传输就完成了,而read10返回字节要分多次传输,会不会是这个地方没有处理好
|
|
板凳#
发布于:2004-03-12 21:34
实在抱歉,前面写错了。
只有Inquiry返回正确,而Request Sense返回的看上去也像是正确的。 至于Read_Capacity、Read_Format_Capacity肯定返回的是错误的,而Read10更加奇怪。我用的是分为每64byte一次In操作,结果读取的每个64字节内数据都有丢失,而每64字节开始的几个byte都是正确的。 我都疯了。怎么会这样。老大们看看有可能是哪里出了问题。 |
|
地板#
发布于:2004-03-13 10:15
一定要注意晶阵。
可以到我们的网站看看,我们有这方面成熟的方案:http://eden.51.net |
|
地下室#
发布于:2004-03-13 11:10
打击广告 :mad: :mad: :mad:
|
|
|
5楼#
发布于:2004-03-13 11:47
i agree
|
|
6楼#
发布于:2004-03-13 14:56
eden.51.net的兄弟,你们的东西价钱太贵。否则老板也不会让我们这些新手去作了。
十分奇怪的是,为什么每次Inquiry是正确的,难道它对时钟没有要求么? 另外,其他命令尤其是Read10丢失数据的现象有一次表现是丢失的字节被后面的字节向前填充了,然后每64字节的一段内后面的都是不正确的数据。希望哪位大虾可以指出一下可能的问题所在。 我用的代码是在从Cypress公司下的代码的基础上进行了少量修改后的版本,不知道是否源代码中就有问题。可是我看了EP0上使用USB标准命令都没有问题的说 |
|
7楼#
发布于:2004-03-15 23:41
大虾们看看是否有可能是Data0/1之间切换问题?
我在每次进行usb传输的时候(就是发送SCSI命令的一次Out和两次In)都是从Data0开始的,然后在其中每次循环都切换一次。 觉得十分怪异的是每次接收到的CSW都是正确的,但是数据却是不正确的。 |
|
8楼#
发布于:2004-03-16 00:11
另外,有没有可能是因为时钟的问题?
我的电路板用的是12M的晶振,布局反正不太好,第一次做板子,感觉电路稳定性有可能不行。 另外,Inquiry命令是否是U盘直接返回的,而其他命令则需要U盘作出一定运算才返回的,时序问题是否也有可能导致这个问题出现? 希望有关注过这方面的老大给点建议 |
|
9楼#
发布于:2004-03-17 10:31
xxg:你们的东西太贵了。不就是一个读写u盘的东西吗,功能这么单一还要3800???
|
|
10楼#
发布于:2004-03-17 13:53
目前我发现了问题的可能所在,等确认之后我会把问题原因写出来,好作为菜鸟们的参考
再次感谢所有关注我的帖子和提出建议的大虾小虾们 |
|
11楼#
发布于:2004-03-17 16:10
大虾们看看是否有可能是Data0/1之间切换问题? 你的data0/1切换好像是有问题哦,OUT!! |
|
12楼#
发布于:2004-03-17 17:34
xxg而且也不一定好
|
|
|