liuwan
驱动小牛
驱动小牛
  • 注册日期2001-10-15
  • 最后登录2004-04-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2439回复:6

关于U盘开发过程中的一个SCSI命令--INQUIRY的疑问。

楼主#
更多 发布于:2002-12-16 18:15
我在2000下进行开发,当探测到INQUIRY命令到来,我发回主机一些设备信息,由于我的FIRMWARE处理的是RBC设备命令,所以我返回的INQUIRY数据中的Peripheral device type值就用0x0e返回,但是这时主机除了正确装载usbstor.sys外,还弹出一个对话框,说发现新硬件,要求我为这个新硬件查找并安装驱动程序。我想我告诉主机的是RBC设备(简易直接访问设备,最普遍的应用就是磁盘设备),它应该自己会找到2000自带的disk.sys驱动吧,可是我让它自动搜索或我手动指定,均告失败。而当我将这个值填为SBC设备类型时,就不会要求我手动指定新硬件的驱动程序,枚举也很正常,出现盘符并可以使用,但是这明明是错误的设备类型啊,请各位高手指点一下迷津!不胜感谢。

最新喜欢:

ww7002ww7002 mapoflmapofl
菜菜
niro
驱动牛犊
驱动牛犊
  • 注册日期2001-04-02
  • 最后登录2011-04-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-02-12 16:27
什么是RBC设备呀?
 :D



iamchine
驱动小牛
驱动小牛
  • 注册日期2002-11-18
  • 最后登录2005-11-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-02-12 16:32
MS的W2K自带USB驱动还不支持RBC设备,它只有subclass=0x06和非06两类,且非06的实际上是UFI
nter0
驱动牛犊
驱动牛犊
  • 注册日期2002-12-10
  • 最后登录2008-11-17
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-02-12 21:17
MS的W2K自带USB驱动还不支持RBC设备,它只有subclass=0x06和非06两类,且非06的实际上是UFI


说的很对,我以用51+D12+FLASH实现了U盘,主要处理下面的函数,然后就GOOD

switch(RBC_OPERATIONCODE){
case 0x00:{CBW_TestUnitRead();break;}
case 0x03:{CBW_RequestSense();break;}
case 0x12:{CBW_Inquiry();break;}
case 0x1a:{CBW_ModeSense();break;}
case 0x23:{CBW_ReadLong();break;}
case 0x25:{CBW_Capacity();break;}
case 0x28:{CBW_Read10();break;}
case 0x2a:{CBW_Write10();break;}
default:CBW_Others();
}
liuwan
驱动小牛
驱动小牛
  • 注册日期2001-10-15
  • 最后登录2004-04-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-02-13 09:39
nter0,我和你的情况一模一样,也是只处理了这些命令,免驱U盘功能便在2K下实现了,我只是不太明白一些SCSI命令规范上讲到的东西,比如我现在使用的设备根据我送给INQUIRY命令的参数,应该是SBC设备,我查阅了所有从T10网站上下载的SCSI设备命令格式规范,0x23这条命令只有在UFI设备类中才有这条命令。而我其他的命令都是按SBC命令格式进行处理的(我送给接口描述符的subclass=0x06,也就是MASS STORAGE类协议中所说的SCSI Transparent command set,如果子类为0x04才是UFI命令集)。另外,Mode Sense和Mode Select这两条命令按命令规范所讲应该是成对出现,但是我发现只来了Mode Sense这条命令。等等疑惑,哪位大虾知道答案?
菜菜
nter0
驱动牛犊
驱动牛犊
  • 注册日期2002-12-10
  • 最后登录2008-11-17
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-02-13 14:54
 
我在使用接口描述符的subclass=0x06时出现了一些问题,我使用的是接口描述符的subclass=0x01,对于Mode Sense和Mode Select详细的我也不知道,但是我也只收到Mode Sense。只要正确 处理这些函数就行了。我的U盘是 在我自己做的仿真器中实现的,并没有FLASH,请问你有读写 三星FLASH 的例子吗。我的 信箱是nter@163.net
liuwan
驱动小牛
驱动小牛
  • 注册日期2001-10-15
  • 最后登录2004-04-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-02-13 14:59
我的不是用三星的FLASH,而是SST的,在FLASH上实现不同于在仿真器上实现,需要有FAT文件系统的支持,所以,你首先需要实现FAT12或FAT16文件系统。
菜菜
游客

返回顶部