wangweigang
驱动牛犊
驱动牛犊
  • 注册日期2003-10-06
  • 最后登录2014-05-09
  • 粉丝0
  • 关注0
  • 积分111分
  • 威望21点
  • 贡献值0点
  • 好评度11点
  • 原创分0分
  • 专家分0分
阅读:1596回复:5

关于host读写u盘的问题,有分!

楼主#
更多 发布于:2005-01-13 15:15
小弟现在正在搞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

最新喜欢:

templatempla
tsingkong
驱动牛犊
驱动牛犊
  • 注册日期2003-03-25
  • 最后登录2013-11-25
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-01-17 14:25
第三个问题:我的host枚举u盘的时候,没有GetMaxLUN,也没有INQUIRY,在SET CONFIG以后就READ CAPACITY了,可以返回正确的数据。
其它问题不清楚。

我的host也有问题:READ10的时候,返回的前两个64字节后就不行了。1161的PTD的active一直是1,不知何故。
mailto:tsingkong@163.com
dengjin0009
驱动牛犊
驱动牛犊
  • 注册日期2003-08-26
  • 最后登录2005-03-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-01-17 16:58
说的好含糊呀,要看懂你的问题很困难.....???

如何有兴趣,可以写详细点,或用Email给我dengjin0009@sohu.com
邓金
tsingkong
驱动牛犊
驱动牛犊
  • 注册日期2003-03-25
  • 最后登录2013-11-25
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-01-18 10:51
说的好含糊呀,要看懂你的问题很困难.....???

如何有兴趣,可以写详细点,或用Email给我dengjin0009@sohu.com

我遇到了和楼主相同的问题,我已经给您发邮件了。把问题也贴到这里吧:

您好:
我用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]
mailto:tsingkong@163.com
yyouking
驱动老牛
驱动老牛
  • 注册日期2003-12-18
  • 最后登录2020-04-28
  • 粉丝0
  • 关注0
  • 积分967分
  • 威望114点
  • 贡献值1点
  • 好评度78点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2005-01-18 13:05
  我也打算用ISP1161开发读写U盘的东东
提供: AT89S52+D12开发套件 W78E54+Sl811HST单片机读写U盘套件 PL2303HX-串口转USB 网站http://www.devking.cn 联系 sl811hs@yahoo.com.cn QQ:14441292
tsingkong
驱动牛犊
驱动牛犊
  • 注册日期2003-03-25
  • 最后登录2013-11-25
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于: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晶振
小弟qq 43123873


问题解决了!

我按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。

时间有限,没有验证,以上只是推测。
mailto:tsingkong@163.com
游客

返回顶部