我原先用的是朗科的双启动型ODH016L,只有REQUEST SENSE命令可以循环操作,READ CAPACITY和READ(10)命令不能循环操作,只能操作一次,要重新操作必须重新复位和枚举;今天我偶然换成了朗科的无驱高速型ODF032,发现上面的三种命令可以循环操作....
全文
回复(31) 2002-12-23 14:56 来自版块 - USB驱动开发
表情
lxb_gdTornado 兄:谢谢您的提醒,我的问题解决了。问题出现在read10命令中,返回的块数问题上,我写了0x100个快,当然要接受久点啦。 cbw中的命令长度为0x10没问题,只要前面几个有效字节对就行了,多余的添0x00.解决后,才发现这个问题很傻。不知道如何给分您呢?真的很...(2002-12-26 09:20)
TornadoIIcbw = 0x55 0x53 0x42 0x43 0 0 0 0 0x1f 0x00 0 0 0x80 0 0x10 后面就是上面贴的命令了。 后面命令的长度 0x10 也应该是变的。 Read10里,读出的块数为0x100,这可是一个很长的数据啊,你可能没有接...(2002-12-26 08:37)
lxb_gd我估算了一下,全速运行大约7秒后,灯停止闪烁,CSW有效读出,显示OK,我的CBW中长度为0X200,READ10命令返回长度为0X200,一个扇区的读出,需要这么长的时间吗?真想不明白!(2002-12-25 17:47)
lxb_gd是不是我的缓冲区太小(256bytes),u盘读一次返回512bytes,导致我这样的问题呢? 各位DX帮帮忙! :((2002-12-25 17:37)
lxb_gd改了,还是没作用。但有一个新发现: 我死循环的读,全速执行后(执行时还是闪),再暂停,灯就不闪了,也受到csw,结果ok,但不知道循环了多少?奇怪????(2002-12-25 16:36)
qianyu123 你的命令长度也不对,是0X0A吧。你的是0X10。 (2002-12-25 16:09)
lxb_gd我把cbw中的dcbwdatatransferlength改为0x200,但灯还是闪,不停的读,csw还是没读到!没法了!(2002-12-25 16:01)
qianyu123 我的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}; ...(2002-12-25 12:00)
lxb_gdcbw = 55 53 42 43 00 00 00 00 1f 00 00 00 80 00 10 后面就是上面贴的read10命令。 怎样?(2002-12-25 11:50)
lxb_gd我写了个函数,先发cbw固定部分,参数为bmcbwflags,transferlen, 和命令数组指针。 cbw = 0x55 0x53 0x42 0x43 0 0 0 0 0x1f 0x00 0 0 0x80 0 0x10 后面就是上面贴的命令了。(2002-12-25 11:48)

返回顶部