阅读:3739回复:31
讨论(一样给分)
我原先用的是朗科的双启动型ODH016L,只有REQUEST SENSE命令可以循环操作,READ CAPACITY和READ(10)命令不能循环操作,只能操作一次,要重新操作必须重新复位和枚举;今天我偶然换成了朗科的无驱高速型ODF032,发现上面的三种命令可以循环操作.
何故?我可在这里困扰了1个月!!! 那位DZ知道原因,请指点. 谢谢 |
|
沙发#
发布于:2002-12-26 09:20
Tornado 兄:谢谢您的提醒,我的问题解决了。问题出现在read10命令中,返回的块数问题上,我写了0x100个快,当然要接受久点啦。
cbw中的命令长度为0x10没问题,只要前面几个有效字节对就行了,多余的添0x00.解决后,才发现这个问题很傻。不知道如何给分您呢?真的很感谢您! qianyu123兄:关于您认为不能循环是用了双启动u盘的问题,但为什么我的就可以呢?我的型号是odh064.我觉得可能是您的firmware的问题!比如data toggle 等。希望能尽快解决。 |
|
板凳#
发布于:2002-12-26 08:37
cbw = 0x55 0x53 0x42 0x43 0 0 0 0 0x1f 0x00 0 0 0x80 0 0x10 后面命令的长度 0x10 也应该是变的。 Read10里,读出的块数为0x100,这可是一个很长的数据啊,你可能没有接收完吧? |
|
地板#
发布于:2002-12-25 17:47
我估算了一下,全速运行大约7秒后,灯停止闪烁,CSW有效读出,显示OK,我的CBW中长度为0X200,READ10命令返回长度为0X200,一个扇区的读出,需要这么长的时间吗?真想不明白!
|
|
地下室#
发布于:2002-12-25 17:37
是不是我的缓冲区太小(256bytes),u盘读一次返回512bytes,导致我这样的问题呢?
各位DX帮帮忙! :( |
|
5楼#
发布于:2002-12-25 16:36
改了,还是没作用。但有一个新发现:
我死循环的读,全速执行后(执行时还是闪),再暂停,灯就不闪了,也受到csw,结果ok,但不知道循环了多少?奇怪???? |
|
6楼#
发布于:2002-12-25 16:09
你的命令长度也不对,是0X0A吧。你的是0X10。
|
|
7楼#
发布于:2002-12-25 16:01
我把cbw中的dcbwdatatransferlength改为0x200,但灯还是闪,不停的读,csw还是没读到!没法了!
|
|
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中,肯定不对。 |
|
9楼#
发布于:2002-12-25 11:50
cbw = 55 53 42 43 00 00 00 00 1f 00 00 00 80 00 10
后面就是上面贴的read10命令。 怎样? |
|
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 后面就是上面贴的命令了。 |
|
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}; |
|
12楼#
发布于:2002-12-25 11:17
w77e58+sl811hs
|
|
13楼#
发布于:2002-12-25 10:34
有没有那位大侠碰到过认U盘的事情?指点一下,谢谢。
|
|
14楼#
发布于:2002-12-25 09:52
能否提供你现在系统的情况,HOST采用的什么?
|
|
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! |
|
16楼#
发布于:2002-12-25 08:47
READ CAPACITY 命令可以循环,但READ10有问题,单步执行时,灯一直闪,函数返回时灯还是闪,读回CSW值不对,全是00,或是一些数据,好象没读完?
还好,读出的数据确定是MBR的了,问题就是停不了!!气死人了! |
|
17楼#
发布于:2002-12-25 08:32
对于楼上有位老兄用的是ODH064,应当也是双启动型,READ CAPACITY命令可以循环,我怎么不行,只有REQUEST SENSE可以循环操作。我现在只有ODF032比较好操作。
|
|
18楼#
发布于:2002-12-25 08:28
我昨日下午去了朗科南京的代理,他说我的ODF032坏了,二话没说给换了一个,刚才一试发现循环读(READ10)写(WRITE10)均正常。虽然针对ODF032解决了问题,但我浪费了太多的时间。
关于ODH016(双启动型),我还是只能读写一次,否则必须重新复位枚举,我打电话到朗科的技术支持,要我EMAIL,等一会。 |
|
19楼#
发布于:2002-12-25 08:21
winhex可能不是通过read capacity得到的。
我原先一个朗科ODF032,用过一段时间后read capacity读出的逻辑块个数减少了,但不多,不止发生了一次。 |
|
上一页
下一页