usb开发笔记1-Bulk-Only传输协议

usb开发笔记1-Bulk-Only传输协议

  (2011-04-14 10:29:42)
标签: 

杂谈

分类: USB开发MSD设备
U盘应属于海量存储类。
USB海量存储设备又包括通用海量存储子类,CDROM,Tape等,U盘实际上属于海量存储类中通用海量存储子类。通用海量存储设备实现上是基于块/扇区存储的设备。
USB组织定义了海量存储设备类的规范,这个类规范包括4个独立的子类规范。主要是指USB总线上的传输方法与存储介质的操作命令。
海量存储设备只支持一个接口,即数据接口,此接口有三个端点Bulk input ,Bulk output,中断端点
这种设备的接口采用SCSI-2的直接存取设备协议,USB设备上的介质使用与SCSI-2以相同的逻辑块方式寻址 
二、 Bulk-Only传输协议
当一个U盘插入主机以后,主机会要求USB设备传回它们的描述符,当主机得到这些描述符后,即完成了设备的配置。识别出USB设备是一个支持Bulk-Only传输协议的海量存储设备。这时应可进行Bulk-Only传输方式。在此方式下USB与设备之间的数据传输都是通过Bulk-In和Bulk-Out来实现的。
在这种传输方式下,有三种类型数据在USB和设备传送,它们是命令块包(CBW),命令执行状态包(CSW)和普通数据包。CBW是主机发往设备的命令。格式如下: 
其中dCBWSignature的值为43425355h,表示当前发送的是一个CBW。
DCBWDataTransferLength:表示这次CBW要传送数据长度。
BmCBWFlags:表示本次CBW是读数据还是写数所
BBWCBLength:表示命令的长度。
CBWCB:表示本次命令内容。也即是SCSI命令。
当设备从主机收到CBW块以后,它会把SCSI命令从CBW中分离出来,然后根据要求执行,执行的结果又以CSW的形式发给主机。
CSW的格式如下:
其中dCSWSignature的值为53425355h,表示当前发送的是一个CSW。
DCSWTag:必须和CBW中dCBWTag一样。
DCSWDataResidue:还要传送的数据。
BCSWStatue:命令执行状态,命令正确执行时,为0。

三、 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
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值