purple.sun
驱动牛犊
驱动牛犊
  • 注册日期2003-11-17
  • 最后登录2013-08-09
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望12点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1859回复:12

811的USB Host接收数据的时候为什么丢失数据

楼主#
更多 发布于:2004-03-12 09:57
我用51+811读写优盘,调试到了bulk协议层。可是发现发出的SCSI命令只有Request Sense、Inquiry命令可以正常返回数据,而其他如Read_Capacity、Read_Format_Capacity、Read10等几乎全部命令都返回错误!数据。其中read10返回的数据有大量丢失。

可是奇怪的是上面所列命令发出去之后都能够接收的正确的CSW!!

我真的疯了,求哪位老大给个建议


[编辑 -  3/15/04 by  purple.sun]
SUNSHANGXIN
驱动老牛
驱动老牛
  • 注册日期2002-11-19
  • 最后登录2009-08-01
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望19点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-03-17 17:34
xxg而且也不一定好
[b]苍白的,不是文字,是人的思想 虚伪的,不是网络,是人的灵魂 伤心的,不是爱情,是人的心灵 难忘的,不是容貌,是人的思诀 黎明的曙光早已不见了夕日的辉煌 东方的日出早就失去了往日的灿烂 而我也尽脱了昨日的笑容去迎接明天的枯涩 [/b]
boycn
驱动牛犊
驱动牛犊
  • 注册日期2003-11-26
  • 最后登录2010-08-21
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-03-17 16:10
大虾们看看是否有可能是Data0/1之间切换问题?

我在每次进行usb传输的时候(就是发送SCSI命令的一次Out和两次In)都是从Data0开始的,然后在其中每次循环都切换一次。

觉得十分怪异的是每次接收到的CSW都是正确的,但是数据却是不正确的。

你的data0/1切换好像是有问题哦,OUT!!
purple.sun
驱动牛犊
驱动牛犊
  • 注册日期2003-11-17
  • 最后登录2013-08-09
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望12点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-03-17 13:53
目前我发现了问题的可能所在,等确认之后我会把问题原因写出来,好作为菜鸟们的参考

再次感谢所有关注我的帖子和提出建议的大虾小虾们
njwxkun
驱动牛犊
驱动牛犊
  • 注册日期2003-12-23
  • 最后登录2007-02-14
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-03-17 10:31
xxg:你们的东西太贵了。不就是一个读写u盘的东西吗,功能这么单一还要3800???
purple.sun
驱动牛犊
驱动牛犊
  • 注册日期2003-11-17
  • 最后登录2013-08-09
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望12点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-03-16 00:11
另外,有没有可能是因为时钟的问题?
我的电路板用的是12M的晶振,布局反正不太好,第一次做板子,感觉电路稳定性有可能不行。

另外,Inquiry命令是否是U盘直接返回的,而其他命令则需要U盘作出一定运算才返回的,时序问题是否也有可能导致这个问题出现?

希望有关注过这方面的老大给点建议
purple.sun
驱动牛犊
驱动牛犊
  • 注册日期2003-11-17
  • 最后登录2013-08-09
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望12点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-03-15 23:41
大虾们看看是否有可能是Data0/1之间切换问题?

我在每次进行usb传输的时候(就是发送SCSI命令的一次Out和两次In)都是从Data0开始的,然后在其中每次循环都切换一次。

觉得十分怪异的是每次接收到的CSW都是正确的,但是数据却是不正确的。
purple.sun
驱动牛犊
驱动牛犊
  • 注册日期2003-11-17
  • 最后登录2013-08-09
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望12点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-03-13 14:56
eden.51.net的兄弟,你们的东西价钱太贵。否则老板也不会让我们这些新手去作了。

十分奇怪的是,为什么每次Inquiry是正确的,难道它对时钟没有要求么?

另外,其他命令尤其是Read10丢失数据的现象有一次表现是丢失的字节被后面的字节向前填充了,然后每64字节的一段内后面的都是不正确的数据。希望哪位大虾可以指出一下可能的问题所在。

我用的代码是在从Cypress公司下的代码的基础上进行了少量修改后的版本,不知道是否源代码中就有问题。可是我看了EP0上使用USB标准命令都没有问题的说
ww7002
驱动牛犊
驱动牛犊
  • 注册日期2004-01-10
  • 最后登录2010-07-13
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望20点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-03-13 11:47
i agree
SUNSHANGXIN
驱动老牛
驱动老牛
  • 注册日期2002-11-19
  • 最后登录2009-08-01
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望19点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-03-13 11:10
打击广告 :mad: :mad: :mad:
[b]苍白的,不是文字,是人的思想 虚伪的,不是网络,是人的灵魂 伤心的,不是爱情,是人的心灵 难忘的,不是容貌,是人的思诀 黎明的曙光早已不见了夕日的辉煌 东方的日出早就失去了往日的灿烂 而我也尽脱了昨日的笑容去迎接明天的枯涩 [/b]
xxg
xxg
驱动小牛
驱动小牛
  • 注册日期2002-02-28
  • 最后登录2005-12-12
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-03-13 10:15
一定要注意晶阵。
   可以到我们的网站看看,我们有这方面成熟的方案:http://eden.51.net
purple.sun
驱动牛犊
驱动牛犊
  • 注册日期2003-11-17
  • 最后登录2013-08-09
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望12点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-03-12 21:34
实在抱歉,前面写错了。

只有Inquiry返回正确,而Request Sense返回的看上去也像是正确的。

至于Read_Capacity、Read_Format_Capacity肯定返回的是错误的,而Read10更加奇怪。我用的是分为每64byte一次In操作,结果读取的每个64字节内数据都有丢失,而每64字节开始的几个byte都是正确的。

我都疯了。怎么会这样。老大们看看有可能是哪里出了问题。
tan_1_2
驱动牛犊
驱动牛犊
  • 注册日期2003-10-06
  • 最后登录2006-05-16
  • 粉丝0
  • 关注0
  • 积分23分
  • 威望4点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-03-12 14:19
其他命令返回的字节都小于64字节,一次传输就完成了,而read10返回字节要分多次传输,会不会是这个地方没有处理好
游客

返回顶部