USB MSD设备的SCSI命令详解
需积分: 5 146 浏览量
更新于2024-08-03
1
收藏 1.19MB PDF 举报
"USB学习笔记-SCSI命令.pdf"
在深入探讨USB存储设备(Universal Serial Bus Mass Storage Device,MSD)的SCSI(Small Computer System Interface)命令之前,我们需要理解USB和SCSI之间的关系。USB是一种通用接口,允许各种设备与计算机进行高速通信,包括存储设备。SCSI则是一种标准的命令集,用于控制存储设备如硬盘、光驱等进行数据读写。当USB设备使用SCSI命令集时,我们就有了USB MSD设备。
USBMSD应用中,设备的bInterfaceSubClass设置为06h,表明它遵循SCSIPrimary Commands-2(SPC-2)规范,即支持SCSI命令。bInterfaceProtocol设置为0x50,则表示设备支持Bulk-Only Transport (BOT)协议,这是USB MSD设备通信的基础。BOT协议下,数据传输始于Command Block Wrapper (CBW),主机发送CBW到设备,设备响应以Command Status Wrapper (CSW)。
以下是MSD设备支持的一些关键SCSI命令:
1. **INQUIRY(Opcode 12h)**:
INQUIRY命令用于获取设备的逻辑单元(LU)信息,如设备类型、版本、制造商信息等。根据SPC-3,设备应尽快回复INQUIRY数据,即使正在执行其他命令,且数据应立即可用,至少包含36字节的标准信息。
2. **READ CAPACITY(Opcode 25h)**:
此命令用于获取设备的容量信息,包括最后可访问逻辑块地址(LBA)和每个块的大小。设备回应4字节的LBA和4字节的块长度。如果LBA超过设备实际容量,设备应返回FFFFFFFFFFh作为最大LBA。
3. **READ(10)(Opcode 28h)**:
READ(10)命令用于从设备读取数据。主机指定要读取的LBA和数据长度,设备则通过Bulk-In端点传输相应数据。这个命令是读取设备存储数据的基本方式。
除了这些基本命令,MSD设备还可能支持其他SCSI命令,如WRITE(10)、FORMAT UNIT、TEST UNIT READY等。在实际应用中,主机通过USB控制器发送这些命令,并通过BOT协议管理数据传输和状态反馈,确保设备操作的正确性和效率。
了解和掌握这些SCSI命令对于开发、调试或者优化USB MSD设备至关重要,因为它们定义了主机与存储设备之间的基本交互方式。熟悉这些命令的使用可以帮助解决设备兼容性问题、提高数据传输性能,并确保数据的可靠存储。在设计USB存储设备驱动程序或处理相关问题时,深入理解SCSI命令的运作机制是非常必要的。
2021-05-27 上传
2022-09-06 上传
2020-03-16 上传
2021-10-12 上传
2012-11-20 上传
2021-10-12 上传
antion182
- 粉丝: 2
- 资源: 22
最新资源
- Aspose资源包:转PDF无水印学习工具
- Go语言控制台输入输出操作教程
- 红外遥控报警器原理及应用详解下载
- 控制卷筒纸侧面位置的先进装置技术解析
- 易语言加解密例程源码详解与实践
- SpringMVC客户管理系统:Hibernate与Bootstrap集成实践
- 深入理解JavaScript Set与WeakSet的使用
- 深入解析接收存储及发送装置的广播技术方法
- zyString模块1.0源码公开-易语言编程利器
- Android记分板UI设计:SimpleScoreboard的简洁与高效
- 量子网格列设置存储组件:开源解决方案
- 全面技术源码合集:CcVita Php Check v1.1
- 中军创易语言抢购软件:付款功能解析
- Python手动实现图像滤波教程
- MATLAB源代码实现基于DFT的量子传输分析
- 开源程序Hukoch.exe:简化食谱管理与导入功能