rainboy
驱动牛犊
驱动牛犊
  • 注册日期2002-08-03
  • 最后登录2005-10-27
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2159回复:9

高手看过来!BulkOnly&SCSI=U盘调试问题

楼主#
更多 发布于:2003-05-05 15:33
我用usbn9603实现U盘,采用BulkOnly传输及SCSI transparent command set命令集,目前可以成功响应几个SCSI命令,但问题一大把,特向各位大侠请教!如果有新的进展,我将同步贴上!

   在win2k下面,主机能识别出usb mass storage device,响应inquiry命令后可以看到“可移动磁盘”,然后主机发read capacity,read10(读0扇区),mode sense 6,test unit ready等命令。
   问题1,主机反复发来read capacity命令,从bushound观察,有的通过批量通道发来后得到了正确执行,耗时不过1ms左右;有的则一直pending,前后占用近10s左右!bulkonly传输协议里面说的很明白,在收到前一个CBW的CSW之前,主机一般不会发下一个CBW,即使发了,设备的响应也是没有定义的,不知这些一直pending的命令怎么解释?类似的还有read10命令。
   问题2,选用SCSI命令集做U盘是否一定要正确响应mode sense 6命令?或者说返回什么block descriptor和mode page之类?我个人的看法是这些参数对主机可有可无,我只是简单发回4个字节,即03 00 00 00,状态显示data overun,有时主机会继续发别的命令,有时则象问题1一样,反复发来这个命令。

最新喜欢:

wdy9927wdy992...
溪涧岂能留得住,终归大海作波涛
rainboy
驱动牛犊
驱动牛犊
  • 注册日期2002-08-03
  • 最后登录2005-10-27
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-05-05 16:15
在win98se下面调试时,我安装的驱动程序是从这个论坛上下载的一个通用的usb mass storage驱动,最初使用的时候可以正确安装,后来可能是反复调试的原因,设备管理器显示1394/usb disk的安装有问题,bushound截获的数据中,主机依次发来inquiry,PreventAllowMediumRemoval(prevent=1),PreventAllowMediumRemoval(prevent=0),ReadCapacity,Read10(读0扇区),Read10(读分区的boot扇区),本来应该是进一步读FAT区,RootDir区等,但此后却再也没有发来命令。

问题1,0扇区的数据有哪些讲究?16个字节的分区信息数据,我想对于U盘而言,也就BootID(分区状态),SystemID(文件系统类型),StartLogicalSectorNo(开始逻辑扇区号),PartionSize(分区包含的扇区数目),四个域的值是有意义的吧?至于开始和结尾的Head/Cylinder/Sector那几个域没什么意义,或者说相应的驱动并不关心吧?
主机停止发命令估计与这个问题没有关系,但我想这肯定会是个问题。

问题2,微软和Cypress提供的win98(se) usb mass storage驱动例程有没有哪位大侠修改和编译后可以很好地使用的?如果可以,我愿意以一定方式与大侠合作。这个论坛一位大侠贴出的通用驱动不知是怎么生成的?急切盼望高手指点!
溪涧岂能留得住,终归大海作波涛
kennylew
驱动牛犊
驱动牛犊
  • 注册日期2002-08-12
  • 最后登录2004-12-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-05-05 18:59
那个mode page是什么东西啊,偶也不懂
rainboy
驱动牛犊
驱动牛犊
  • 注册日期2002-08-03
  • 最后登录2005-10-27
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-05-05 19:43
我是地上的鱼,一边挣扎,一边盼望着老天爷,下点雨吧。。。。。
溪涧岂能留得住,终归大海作波涛
kennylew
驱动牛犊
驱动牛犊
  • 注册日期2002-08-12
  • 最后登录2004-12-30
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-05-06 11:51
没人回答,偶推一下
NewTech
驱动大牛
驱动大牛
  • 注册日期2002-10-02
  • 最后登录2010-03-27
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望263点
  • 贡献值0点
  • 好评度86点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-05-06 19:20
我估计可能是你的firmware没有处理所有的命令!
1.你的驱动有问题,建议你先在在win2k下调试
2.mode sense一定要处理的
3.只有在win2k下,才会出现prevent medium remove这条命令
rainboy
驱动牛犊
驱动牛犊
  • 注册日期2002-08-03
  • 最后登录2005-10-27
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-05-06 21:32
1,那个驱动我用别的U盘试过,可以用,没有问题啊。
2,mode sense我尝试过返回数据,mode page=0x1c是什么informational exception control mode page,但主机似乎无法认识,反复发这个命令,即使我置csw状态为命令失败,主机也不发request sense命令来看看到底哪里错了。
又,我抓过一些U盘的数据,有些仅是对mode page=0xff返回了数据,其他的都是stall bulk in,然后返回csw。
溪涧岂能留得住,终归大海作波涛
NewTech
驱动大牛
驱动大牛
  • 注册日期2002-10-02
  • 最后登录2010-03-27
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望263点
  • 贡献值0点
  • 好评度86点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-05-07 01:17
0x1c is UFI_MODE_CODE_TIMER_PROTECT,你可以不用返回的。
mode sense 我记得好像只要返回8个字节就行了,你查查看吧!
其实u盘可以支持有很多命令集,所以你最好在win2k调试,毕竟是统一的标准。
NewTech
驱动大牛
驱动大牛
  • 注册日期2002-10-02
  • 最后登录2010-03-27
  • 粉丝0
  • 关注0
  • 积分16分
  • 威望263点
  • 贡献值0点
  • 好评度86点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-05-07 14:56
不好意思再次请教一下,我前面遇到的问题:
http://www.driverdevelop.com/forum/viewthread.php?tid=40153
usbing
驱动牛犊
驱动牛犊
  • 注册日期2003-12-10
  • 最后登录2012-04-20
  • 粉丝0
  • 关注0
  • 积分116分
  • 威望50点
  • 贡献值0点
  • 好评度26点
  • 原创分1分
  • 专家分0分
9楼#
发布于:2004-05-01 18:09
请问rainboy
能给我SCSI transparent command set命令集的文档吗?我去t10了,没找到,谢谢!
我的邮件 wuxidesign@etang.com
usbing
游客

返回顶部