wlfworld
驱动牛犊
驱动牛犊
  • 注册日期2004-03-01
  • 最后登录2005-07-17
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1614回复:4

请教SL811读U盘问题

楼主#
更多 发布于:2004-06-09 21:47
我发Inquiry命令的时候,收到的数据,CSW完全正确。
但发ReadCapacity的时候数据有丢失,但能收到正确的CSW。
收到其数据如下:00 01 F3 FF 00 02 00 08
而实际数据应该:00 01 F3 FF 00 00 02 00
多次读写或换一个U盘最后四个数据也是如此,也就是说在收到02之前丢了一个00。

而且用READ10读写U盘里的内容也会出现数据丢失的问题,但也能收到正确的CSW。如读到第一扇区的数据:
FA 33 C0 8E  D0 BC 00 7C  8B F4 50 07  50 1F FB FC
BF 06 B9 00  01 F2 A5 EA  1D 06 00 00  BE 07 B3 04
.............
而用Bus Hound获得的数据为:
fa 33 c0 8e  d0 bc 00 7c  8b f4 50 07  50 1f fb fc
bf 00 06 b9  00 01 f2 a5  ea 1d 06 00  00 be be 07


我一已经困惑很久了,希望各位高手指点迷津。小弟感谢不尽!

flyhye
驱动小牛
驱动小牛
  • 注册日期2003-07-01
  • 最后登录2012-01-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-06-10 10:00
接收的数据长度对吗?csw里面所有信息都正常吗?
如果可能用usb分析仪抓一下你这段的通讯,看看对不对

我发Inquiry命令的时候,收到的数据,CSW完全正确。
但发ReadCapacity的时候数据有丢失,但能收到正确的CSW。
收到其数据如下:00 01 F3 FF 00 02 00 08
而实际数据应该:00 01 F3 FF 00 00 02 00
多次读写或换一个U盘最后四个数据也是如此,也就是说在收到02之前丢了一个00。

而且用READ10读写U盘里的内容也会出现数据丢失的问题,但也能收到正确的CSW。如读到第一扇区的数据:
FA 33 C0 8E  D0 BC 00 7C  8B F4 50 07  50 1F FB FC
BF 06 B9 00  01 F2 A5 EA  1D 06 00 00  BE 07 B3 04
.............
而用Bus Hound获得的数据为:
fa 33 c0 8e  d0 bc 00 7c  8b f4 50 07  50 1f fb fc
bf 00 06 b9  00 01 f2 a5  ea 1d 06 00  00 be be 07


我一已经困惑很久了,希望各位高手指点迷津。小弟感谢不尽!

 
千载奇逢,无如好书良友 一生清福,只在碗茗炉烟
wlfworld
驱动牛犊
驱动牛犊
  • 注册日期2004-03-01
  • 最后登录2005-07-17
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-06-10 11:56
接收到数据长度,CSW完全正确,剩余长度为0,STATUS也是0。
一个扇区数据分多次读取,第一次读取的64个字节有丢失,但第二次读到的前面部分数据却是对的(收到的数据从应该收到的第65个开始)。从此看来U盘发出的数据肯定没有错,应该是SL811每次接受64个字节当中出现了问题。
flyhye
驱动小牛
驱动小牛
  • 注册日期2003-07-01
  • 最后登录2012-01-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-06-10 13:06
要不把接收那部分的代码拿出来吧,看看是哪里的问题
接收到数据长度,CSW完全正确,剩余长度为0,STATUS也是0。
一个扇区数据分多次读取,第一次读取的64个字节有丢失,但第二次读到的前面部分数据却是对的(收到的数据从应该收到的第65个开始)。从此看来U盘发出的数据肯定没有错,应该是SL811每次接受64个字节当中出现了问题。
千载奇逢,无如好书良友 一生清福,只在碗茗炉烟
clementzhao
驱动大牛
驱动大牛
  • 注册日期2003-05-08
  • 最后登录2009-02-20
  • 粉丝0
  • 关注0
  • 积分28分
  • 威望63点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-06-10 13:58
我发Inquiry命令的时候,收到的数据,CSW完全正确。
但发ReadCapacity的时候数据有丢失,但能收到正确的CSW。
收到其数据如下:00 01 F3 FF 00 02 00 08
而实际数据应该:00 01 F3 FF 00 00 02 00
多次读写或换一个U盘最后四个数据也是如此,也就是说在收到02之前丢了一个00。

而且用READ10读写U盘里的内容也会出现数据丢失的问题,但也能收到正确的CSW。如读到第一扇区的数据:
FA 33 C0 8E  D0 BC 00 7C  8B F4 50 07  50 1F FB FC
BF 06 B9 00  01 F2 A5 EA  1D 06 00 00  BE 07 B3 04
.............
而用Bus Hound获得的数据为:
fa 33 c0 8e  d0 bc 00 7c  8b f4 50 07  50 1f fb fc
bf 00 06 b9  00 01 f2 a5  ea 1d 06 00  00 be be 07


我一已经困惑很久了,希望各位高手指点迷津。小弟感谢不尽!

 

同样的事情我也试过,不过解决方法比较局限。原因是mcu的总线DMA功能有缺陷,使用IO或不用DMA即可。你看看是不是读写时序有问题。
游客

返回顶部