qianyu123
驱动小牛
驱动小牛
  • 注册日期2002-11-22
  • 最后登录2007-09-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3739回复:31

讨论(一样给分)

楼主#
更多 发布于:2002-12-23 14:56
   我原先用的是朗科的双启动型ODH016L,只有REQUEST SENSE命令可以循环操作,READ CAPACITY和READ(10)命令不能循环操作,只能操作一次,要重新操作必须重新复位和枚举;今天我偶然换成了朗科的无驱高速型ODF032,发现上面的三种命令可以循环操作.
   何故?我可在这里困扰了1个月!!!
   那位DZ知道原因,请指点.
   谢谢
lxb_gd
驱动太牛
驱动太牛
  • 注册日期2002-01-16
  • 最后登录2018-06-02
  • 粉丝0
  • 关注0
  • 积分72408分
  • 威望362391点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2002-12-26 09:20
Tornado 兄:谢谢您的提醒,我的问题解决了。问题出现在read10命令中,返回的块数问题上,我写了0x100个快,当然要接受久点啦。
cbw中的命令长度为0x10没问题,只要前面几个有效字节对就行了,多余的添0x00.解决后,才发现这个问题很傻。不知道如何给分您呢?真的很感谢您!
qianyu123兄:关于您认为不能循环是用了双启动u盘的问题,但为什么我的就可以呢?我的型号是odh064.我觉得可能是您的firmware的问题!比如data toggle 等。希望能尽快解决。
TornadoII
驱动牛犊
驱动牛犊
  • 注册日期2002-10-15
  • 最后登录2003-06-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-12-26 08:37
cbw = 0x55 0x53 0x42 0x43 0 0 0 0 0x1f 0x00 0 0 0x80 0 0x10
后面就是上面贴的命令了。


后面命令的长度 0x10 也应该是变的。

Read10里,读出的块数为0x100,这可是一个很长的数据啊,你可能没有接收完吧?
lxb_gd
驱动太牛
驱动太牛
  • 注册日期2002-01-16
  • 最后登录2018-06-02
  • 粉丝0
  • 关注0
  • 积分72408分
  • 威望362391点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2002-12-25 17:47
我估算了一下,全速运行大约7秒后,灯停止闪烁,CSW有效读出,显示OK,我的CBW中长度为0X200,READ10命令返回长度为0X200,一个扇区的读出,需要这么长的时间吗?真想不明白!
lxb_gd
驱动太牛
驱动太牛
  • 注册日期2002-01-16
  • 最后登录2018-06-02
  • 粉丝0
  • 关注0
  • 积分72408分
  • 威望362391点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2002-12-25 17:37
是不是我的缓冲区太小(256bytes),u盘读一次返回512bytes,导致我这样的问题呢?
各位DX帮帮忙! :(
lxb_gd
驱动太牛
驱动太牛
  • 注册日期2002-01-16
  • 最后登录2018-06-02
  • 粉丝0
  • 关注0
  • 积分72408分
  • 威望362391点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2002-12-25 16:36
改了,还是没作用。但有一个新发现:
我死循环的读,全速执行后(执行时还是闪),再暂停,灯就不闪了,也受到csw,结果ok,但不知道循环了多少?奇怪????
qianyu123
驱动小牛
驱动小牛
  • 注册日期2002-11-22
  • 最后登录2007-09-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-12-25 16:09
   你的命令长度也不对,是0X0A吧。你的是0X10。
  
lxb_gd
驱动太牛
驱动太牛
  • 注册日期2002-01-16
  • 最后登录2018-06-02
  • 粉丝0
  • 关注0
  • 积分72408分
  • 威望362391点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2002-12-25 16:01
我把cbw中的dcbwdatatransferlength改为0x200,但灯还是闪,不停的读,csw还是没读到!没法了!
qianyu123
驱动小牛
驱动小牛
  • 注册日期2002-11-22
  • 最后登录2007-09-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-12-25 12:00
  我的READ10命令如下:BYTE READ10[31]=0x55,0x53,0x42,0x43,0,0,0,0,0x00,0x02,0,0,0x80,0,0x0a,
0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00};
  上面这一串命令就是CBW,命令体包含在CBW中,然后你读512字节,旧可以读CSW了。
  你的命令长度0X1F出现在CBW中,肯定不对。

lxb_gd
驱动太牛
驱动太牛
  • 注册日期2002-01-16
  • 最后登录2018-06-02
  • 粉丝0
  • 关注0
  • 积分72408分
  • 威望362391点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
9楼#
发布于:2002-12-25 11:50
cbw = 55 53 42 43 00 00 00 00 1f 00 00 00 80 00 10
后面就是上面贴的read10命令。
怎样?
lxb_gd
驱动太牛
驱动太牛
  • 注册日期2002-01-16
  • 最后登录2018-06-02
  • 粉丝0
  • 关注0
  • 积分72408分
  • 威望362391点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
10楼#
发布于:2002-12-25 11:48
我写了个函数,先发cbw固定部分,参数为bmcbwflags,transferlen,
和命令数组指针。
cbw = 0x55 0x53 0x42 0x43 0 0 0 0 0x1f 0x00 0 0 0x80 0 0x10
后面就是上面贴的命令了。
qianyu123
驱动小牛
驱动小牛
  • 注册日期2002-11-22
  • 最后登录2007-09-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-12-25 11:37
   你的系统和我的差不多,你的CBW格式呢?
我的READ10命令如下:BYTE READ10[31]=0x55,0x53,0x42,0x43,0,0,0,0,0x00,0x02,0,0,0x80,0,0x0a,
                 0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00};

lxb_gd
驱动太牛
驱动太牛
  • 注册日期2002-01-16
  • 最后登录2018-06-02
  • 粉丝0
  • 关注0
  • 积分72408分
  • 威望362391点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
12楼#
发布于:2002-12-25 11:17
w77e58+sl811hs
qianyu123
驱动小牛
驱动小牛
  • 注册日期2002-11-22
  • 最后登录2007-09-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-12-25 10:34
   有没有那位大侠碰到过认U盘的事情?指点一下,谢谢。
qianyu123
驱动小牛
驱动小牛
  • 注册日期2002-11-22
  • 最后登录2007-09-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2002-12-25 09:52
   能否提供你现在系统的情况,HOST采用的什么?
lxb_gd
驱动太牛
驱动太牛
  • 注册日期2002-01-16
  • 最后登录2018-06-02
  • 粉丝0
  • 关注0
  • 积分72408分
  • 威望362391点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
15楼#
发布于:2002-12-25 09:45
灯闪,我一直读,发现U盘不停发数据,命令不是规定了返回数据长度吗?为什么还有数据返回呢?怎么读都没有返回CSW,我的命令是:
BYTE code RD_10_CMD[16]={0x28,0x00,0x00,0x00,0x00,0x00, 0x00, 0x01,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00};
LBA=00H;LENGTH=0X100;还是有停止的命令?
HELP ME!
lxb_gd
驱动太牛
驱动太牛
  • 注册日期2002-01-16
  • 最后登录2018-06-02
  • 粉丝0
  • 关注0
  • 积分72408分
  • 威望362391点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
16楼#
发布于:2002-12-25 08:47
READ CAPACITY 命令可以循环,但READ10有问题,单步执行时,灯一直闪,函数返回时灯还是闪,读回CSW值不对,全是00,或是一些数据,好象没读完?
还好,读出的数据确定是MBR的了,问题就是停不了!!气死人了!
qianyu123
驱动小牛
驱动小牛
  • 注册日期2002-11-22
  • 最后登录2007-09-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2002-12-25 08:32
   对于楼上有位老兄用的是ODH064,应当也是双启动型,READ CAPACITY命令可以循环,我怎么不行,只有REQUEST SENSE可以循环操作。我现在只有ODF032比较好操作。
  
qianyu123
驱动小牛
驱动小牛
  • 注册日期2002-11-22
  • 最后登录2007-09-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2002-12-25 08:28
    我昨日下午去了朗科南京的代理,他说我的ODF032坏了,二话没说给换了一个,刚才一试发现循环读(READ10)写(WRITE10)均正常。虽然针对ODF032解决了问题,但我浪费了太多的时间。
    关于ODH016(双启动型),我还是只能读写一次,否则必须重新复位枚举,我打电话到朗科的技术支持,要我EMAIL,等一会。
qianyu123
驱动小牛
驱动小牛
  • 注册日期2002-11-22
  • 最后登录2007-09-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2002-12-25 08:21
  winhex可能不是通过read capacity得到的。
  我原先一个朗科ODF032,用过一段时间后read capacity读出的逻辑块个数减少了,但不多,不止发生了一次。
上一页
游客

返回顶部