大容量存储设备一般指
U
盘、移动硬盘等,在这些设备上进行数据传输一般包括两层,物理传输层和命令块层。
物理传输层用于处理命令块,包括主机传输命令块到大容量类设备、主机与大容量设备间的数据传输和主机接收命令块处理状态。传输协议一般为
Bulk-Only
协议和
CBI-Only
协议,该层为命令块层提供命令块处理函数的统一接口,使命令块层不需要理会当前大容量类设备的传输协议。
命令块层包含在
Bulk-Only
协议的数据包内,包含了
RBC
、
SFF-8020i/MMC-2
、
QIC-157
、
UFI
、
SFF-8070i
和
UFI
等
6
个指令集,严格来说大容量类主机端的驱动都应该支持全部命令集,但实际上常用的大容量设备都使用
UFI
指令集。
USB
国际组织定义了大容量存储类(
Mass Storage Class
)的规范,包括四个独立的子类规范:
1
)
USB Mass Storage Class Control/Bulk/Interrupt (CBI) Transport
;
2
)
USB Mass Storage Class Bulk-Only Transport
;
3
)
USB Mass Storage Class ATA Command Block
;
4
)
USB Mass Storage Class UFI Command Specification
;
前两个子规范定义了
USB
大容量存储设备进行数据
/
命令
/
状态传输两种基本方法。
Bulk- Only
传输规范仅仅使用批量(
Bulk
)端点传送数据
/
命令
/
状态,
CBI
传输规范则使用控制(
Control
)、批量(
Bulk
)、中断
(
Interrupt
)三种类型端点进行数据
/
命令
/
状态传送。后两个子规范则定义了存储介质的操作命令。
ATA
命令规范用于硬盘,
UFI
命令规范是基于
SCSI- 2
和
SFF-8070i
命令规范发展二来,其针对
USB
移动存储类设备。
在
U
盘的
Host
主机程序中,实际上只用到了上述
4
个规范的第
2
、
4
两个规范。
本文转自 tywali 51CTO博客,原文链接:http://blog.51cto.com/lancelot/292103,如需转载请自行联系原作者