BOT 数据传输过程
2021-09-26
3991
6
按照USB规范,Bulk-Only 传输规范是系统也是通过默认管道(地址0 、端点 0 )进行枚举,枚举后重新分配地址,再次枚举。
枚举后,实际工作仅仅使用批量( Bulk )端点传送数据 / 命令 / 状态,批量传输方式不受时间限制并能保证数据的完整性。在取得的端点描述符中包含了 Bulk-In 和 Bulk-Out 端点,在 Bulk 数据收发的时候一定要从相应的端点进行。
其数据传输过程如下:
u盘插入,主机得到U盘描述符后识别出U盘是支持bulk-only的大量存储设备。于是两者就通过bulk端点进行通信,主机和设备的通信过程即传输定义好的数据包的过程。主要的数据包有两个:
过程如下:
1、主机发送CBW给设备,告诉设备要进行数据传输。通过bulk-out端点发送。
2、设备收到CBW包后进行解析,如果CBW包合法并且有意义的话,不合法的话,设备会中止bukl-in管道,直到主机reset。否则设备从bulk-in端点发送一个CSW包给主机,响应主机的要求。
3、主机收到CSW后同样进行解析,如果CSW不合法或无意义,则主机可能会进行reset recovery。否则便开始传输数据给U盘或从U盘传输数据。
在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
HID人机交互QQ群:564808376
UAC音频QQ群:218581009
UVC相机QQ群:331552032
BOT&UASP大容量存储QQ群:258159197
STC-USB单片机QQ群:315457461
USB技术交流QQ群2:580684376
USB技术交流QQ群:952873936