海量U盘传输协议的一点总结汇总

     驱动类型划分:

  • USB (通用)   USB
  • HID (人机接口设备 )    USB-HID
  • USB Mass Storage (大容量存储设备 )USB Mass Storage

     USB设备分为5大类,即显示器、通信设备、音频设备、人机输入和海量存储。

 “主机∕设备”数据包传送顺序

  • 主机应当在发送相应的数据之前发送 CBW 。
  • 设备应当在收到 CBW 之后,发送 CSW ( Command  Status  Wrapper )之前发送数据。



1、U盘应属于海量存储类。

海量存储设备只支持一个接口,即数据接口,此接口有三个端点Bulk input ,Bulk output,中断端点。
  •  Bulk-Only传输协议
当一个U盘插入主机以后,主机会要求USB设备传回它们的描述符,当主机得到这些描述符后,即完成了设备的配置。识别出USB设备是一个支持Bulk-Only传输协议的海量存储设备。这时应可进行Bulk-Only传输方式。在此方式下USB与设备之间的数据传输都是通过Bulk-In和Bulk-Out来实现的。
在这种传输方式下,有三种类型数据在USB和设备传送,它们是命令块包(CBW),命令执行状态包(CSW)和普通数据包。CBW是主机发往设备的命令。
  • CBW格式如下:

0~3其中dCBWSignature的值为43425355h,表示当前发送的是一个CBW。
4~7     主要用来同步 CBW CSW
8~11DCBWDataTransferLength:表示这次CBW要传送数据长度。
12     BmCBWFlags:表示本次CBW是读数据还是写数据。Bit7 代表传输方向, 0 表示主机输出数据到设备, 1 表示主机从 设备输入数据。
14     BBWCBLength:表示命令的长度。
CBWCB:表示本次命令内容。也即是SCSI命令。 由设备执行的命令,由设备解释。 符合 bInterfaceSubClass .中定义的命令规范。
当设备从主机收到CBW块以后,它会把SCSI命令从CBW中分离出来,然后根据要求执行,执行的结果又以CSW的形式发给主机


CBW是主机通过Bulk-Out端点向设备发送的命令块包,在CBW中使用方向位和数据传输长度域指明期待的传输,CBW必须起始于包边界,并且必须以31字节的短包传输结束,相继的数据包和CSW包必须开始于一个新的包边界,所有的CBW包必须按低字节在前的次序传输。

  • CSW的格式如下:


0~3     其中dCSWSignature的值为53425355h,表示当前发送的是一个CSW。
          4~7     DCSWTag:必须和CBW中dCBWTag一样。
8~11     DCSWDataResidue:残余的数据量。
12     BCSWStatue:命令执行状态,命令正确执行时,为0。



2、SCSI命令集

在Bulk-Only的命令块包(CBW)中,有一段CBECB内容,它就是SCSI命令块描述符。其内容如下:


Operation Code:是SCSI命令操作代码。
Logical Block Address:逻辑块地址,对U盘而言应是扇区。前面已经讲过:通用海量存储设备是一个基于块/扇区存储的设备,因此在SCSI中要提供这个参数是很显然的。
transfer length:为要传送的扇区数
SCSI中直接存取类型的存储介质的传输命令有很多,如:
INQUIRY:其操作码为12H
Test Unit Ready:其操作码为00H
Format Unit:其操作码为04H
.......
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值