阅读:1604回复:5
关于host读写u盘的问题,有分!
小弟现在正在搞HOST 可是当前发现一个问题,1、对u盘INQUIRY,Read10没问题,可以读就命令用后再次这些命令就会出现批量in端口NAK不知道为什么?2、还有就是WRITE10,CBW命令发出后,out命令第一次64字节就报NAK而且一直包 软复位usb都不好使,只能拔下重插。3、枚举u盘后先读LUN然后必须INQUIRY么?对u盘操作需要固定的顺序么?4、看有些文章说WRITE10,out的第7个包设备就发CSW是真的么?5、对MCU的速度有没有要求,小弟的是430 8m晶振
小弟qq 43123873 |
|
最新喜欢:templa |
沙发#
发布于:2005-01-18 13:50
小弟现在正在搞HOST 可是当前发现一个问题,1、对u盘INQUIRY,Read10没问题,可以读就命令用后再次这些命令就会出现批量in端口NAK不知道为什么?2、还有就是WRITE10,CBW命令发出后,out命令第一次64字节就报NAK而且一直包 软复位usb都不好使,只能拔下重插。3、枚举u盘后先读LUN然后必须INQUIRY么?对u盘操作需要固定的顺序么?4、看有些文章说WRITE10,out的第7个包设备就发CSW是真的么?5、对MCU的速度有没有要求,小弟的是430 8m晶振 问题解决了! 我按dengjin0009所说的连续两次Read10。 第二次Read10的时候,isp1161返回了toggle error,我把cbw的data0改成data1,并且,后面的DataIn,和csw也改成data1,第二个read10也成功了。 后来,我把第二个Read10改成Read Capacity,并且把Read Capacity的CBW,DataIn,CSW统统改成data1,这个Read Capacity就成功了。 看来,问题的关键是toggle切换的问题。 所以,原来的时候,在Read10后面的Read Capacity的CBW和Read10的CBW toggle相同的话,会有错误,但是isp1161却不能告知MCU,应该是isp1161的bug了。 多谢大侠! 我刚把问题解决了,收到了pollyo发来的相同的解决方案,非常感谢。 不过,还有问题同pollyo商榷,pollyo来信如下: ----------------------------------------------------- 驱动开发网友,你好! 你要注意的问题还是0/1交替的问题,我遇到类似的问题,原因在于我以为,每一个cbw->data->csw是一个独立的过程,其实连续的过程中也会有影响,例如读事件 cbw data0 in data0 data1 data0 data1 data0 ... csw data0 下一次的时候 cbw data1 in data0 data1 .... csw data0 也就是cbw的data0/data1交替用。 我是这样解决的,你可以试试。 ----------------------------------------------------- 我发现:不仅cbw的data1/data1需要交替使用。 就是in和csw的也要交替使用。 比如in的最后一个如果是data0,那么csw就应该是data1了。 相同的,如果cbw是data0,数据阶段是out,那么,out的第一个应该是data1,如果out最后一个是data1,那么下一个cbw还应该是data0。 时间有限,没有验证,以上只是推测。 |
|
|
板凳#
发布于:2005-01-18 13:05
我也打算用ISP1161开发读写U盘的东东
|
|
|
地板#
发布于:2005-01-18 10:51
说的好含糊呀,要看懂你的问题很困难.....??? 我遇到了和楼主相同的问题,我已经给您发邮件了。把问题也贴到这里吧: 您好: 我用8位单片机+ISP1161做了一个USB Host,对u盘进行操作。 枚举过程可以顺利完成。 最后,发送CBW的时候,只能完成一个,后面的数据不对了。 例如:当我完成标准请求Set Config以后,我就发送了SCSI命令Read Capacity,可以返回u盘的最大扇区号和每扇区字节数,然后,用Read10读取0扇区就不成功。 如果完成Set Config以后,直接用Read10读取0扇区就可以成功,但是后面的Read Capacity就不对了。 不得其解,万望赐教!多谢。 [编辑 - 1/18/05 by tsingkong] |
|
|
地下室#
发布于:2005-01-17 16:58
说的好含糊呀,要看懂你的问题很困难.....???
如何有兴趣,可以写详细点,或用Email给我dengjin0009@sohu.com |
|
|
5楼#
发布于:2005-01-17 14:25
第三个问题:我的host枚举u盘的时候,没有GetMaxLUN,也没有INQUIRY,在SET CONFIG以后就READ CAPACITY了,可以返回正确的数据。
其它问题不清楚。 我的host也有问题:READ10的时候,返回的前两个64字节后就不行了。1161的PTD的active一直是1,不知何故。 |
|
|