USB海量存储类
单批量传输输入一个长度介于0到5之间的字符串是什么
1 规范概述
1.1 概述
该规范适合于已经熟悉USB1.0、USB1.1规范和大致了解USB海量存储类(Mass Storage Class)规范的读者。
这个规范描述了单批量(Bulk-Only)传输方式,该传输方式即是仅使用批量传 输端点(不使用中断、控制传输端点)对命令、数据、状态进行传输。缺省管道 仅用来请求批量端点上的STALL停止的状态和执行类特定请求命令。 该规范不需 要使用中断端点。
该规范支持逻辑单元共享设备特性。 尽管这种特性提供了对类似海量存储设备共 享USB接口描述符的支持,但它并不是为实现桥接设备的功能而设计的。
2 术语和缩写
2.1 协定
没有特别强调的数为十进制数………………………………1,17,23
十六进制数后紧跟“h”……………………………………. 1Fh,FCh,38h
二进制数后紧跟
“b”………………………………………..011b,101b,01110010b
斜体字是USB协议或是该规范定义的术语 ………………bRequese,dCSWTag
2.2 定义
Command Block Wrapper(CBW)
一个包含一个命令块和一些附加信息的封包。
Command Status Wrapper(CSW)
一个包含一个命令块状态的封包。
Data-In
代表一个从设备到主机的输入传输。
Data-Out
代表一个从主机到设备的输出传输。
Device Request
主机通过缺省管道对设备的请求。
Phase Error
设备返回的一个错误信息,该信息指明如果不对设备进行复位操作,那么对后面 CBWs处理的结果将会不确定。
Processed
被设备接收和内在控制的数据不再需要主机干涉。
Relevant
设备发送到主机的重要数据的数量。
Reset Recovery
主机为设备准备的为以后的CBWs进行错误恢复的程序。
Thin Diagonal
主机和设备完全认同在哪里进行数据传输的情况。见第六章-《主机/设备数据 传输》附加的关于错误情况和“thin diagonal”信息。
3 功能特性
3.1Bulk-Only Mass Storage 复位(类特定请求命令)
该请求用于复位Mass Storage设备及其接口。
该类特定请求命令使设备处于准备就绪状态,以接收下一次主机发出的CBW。
主机将通过缺省管道发送请求给设备。设备保存该批传输的toggle位和端点 STALL停止状态除非该Bulk-Only Mass Storage复位。
该设备将NAK设备请求状态阶段直到Bulk-Only Mass Storage复位完成。
为了产生Bulk-Only Mass Storage 复位,主机将在缺省管道上产生设备请求:· bmRequestType:类、接口、主机到设备
· bRequest字段设置为255(FFh)
· wValue 字段设置为0
· wIndex 字段设置为接口号
· wLength字段设置为0
表 3.1Bulk-Only Mass Storage 复位
bmRequestType bRequest wValue wIndex wLength Data 00100001b 11111111b 0000h Interface 0000h none
3.2 Get Max LUN(类特定请求命令)
该设备可能实现若干个逻辑单元共享设备功能特性。 主机使用bCBWLUN来指定该 设备的哪个逻辑单元来接收主机发出的命令。“取得最大逻辑单元数(Get Max LUN)”设备请求用来确定设备所拥有的逻辑
单元的数量。“设备逻辑单元数 (Logical Unit Numbers)”应该按从LUN0 开始到最大LUN15(Fh)来定序。
为了产生Get Max LUN设备请求,主机将在缺省管道上产生设备请求:· bmRequestType:类、接口、设备到主机
· bRequest字段设置为254(Feh)
· wIndex字段设置为0
· wIndex字段设置为接口号
· wLength字段设置为1
表 3.2Get Max LUN
bmRequestType bRequest wValue wIndex wLength Data 10100001b 11111110b 0000h Interface 0001h 1 byte
设备将返回1字节用于描述设备所包含逻辑单元数的数据。例如,如果设备包含 4个逻辑单元,则LUNs
应该被连续从 0到 3进行编号,返回值为3。若设备没有 LUN, 则返回值为0。 主机不能针对不存在的逻辑单元发送“命令块封包 (CBW) ”。
不支持多LUNs的设备将STALL该命令。
3.3 主机/设备包传输顺序
主机在输出传输(Data-Out)前先发出CBW,设备在主机发出CBW后进行输入传 输(Data-In),然后发出CSW。主机可能在发出CBW前请求输入(Data-In)或 CSW。
3.4 命令顺序
主机不会传输CBW给设备直到主机接收到任何一个CBW的CSW。如果主机产生两 个连续的CBWs而没有一个介于其间的CSW或者复位,则设备对第二个CBW的响 应是不确定的。
3.5 Bi-Directional 命令协议
该规范不提供在单一命令中进行bi-directional数据传输。
4 标准描述符
设备支持以下的标准USB描述符:
· 设备(Device).每个USB设备有一个设备描述符。
· 配置(Configuration).每个USB设备有一个默认的配置描述符,它至少 支持一个接口。
· 接口(Interface). 设备支持至少一个接口,在这里知道诸如Bulk-Only 数据接口。有的设备可能支持额外的接口,以此来提供其它的能力。
· 端点(Endpoint). 除了各种USB设备都需要的缺省管道外,设备还支持 以下端点:
§批量输入(Bulk-In)端点
§批量输出(Bulk-Out)端点
有些设备可能会支持额外的端点,以此来提供其它的能力。主机对选中的接口使 用先前提到的Bulk-In和Bulk-Out端点。
· 字符串 (String) . 设备支持一个唯一的序列号。 详见4.1.1-《序列号》。 该规范定义没有class-specific描述符。
这部分余下的章节描述了标准的USB设备、配置、接口、端点和字符串描述符。 如果想了解更多的关于标准描述符的信息,参见USB规范的章节9,《USB设备 架构》。
4.1 设备描述符(Device Descriptor)
每个USB设备只有一个设备描述符。设备类码和设备子类码是在接口描述符 (Interface Descriptor)而不是在设备描述符中给定的。
表 4.1 设备描述符
Offset Field Size Value Description 0bLength字节 12h 该描述符的字节数
1bDescriptorType字节 01h 设备描述符类型
2bcdUSB字 xxxxh USB版本号
4bDeviceClass字节 00h USB分配的设备类代码
5bDeviceSubClass字节 00h USB分配的之类代码
6bDeviceProtocol字节 00h USB分配的设备协议代码
7bMaxPacketSize0字节 xxh 端点0的最大包的大小
8idVendor字 xxxxh 厂商编号
10idProduct字 xxxxh 产品编号
12bcdDevice字 xxxxh 设备出厂编号
14iManufacturer字节 xxh 描述厂商字符串的索引
15iProduct字节 xxh 描述产品字符串的索引
16iSerialNumber字节 xxh 描述设备序列号字符串的索引 17bNumConfigurations字节 xxh 可能的配置数量
注:该表的信息摘自USB规范1.1的表9-7。
4.1.1 序列号(Serial Number)
iSerialNumber字段被设置为包含序列号的字符串描述符(string descriptor) 的索引值。序列号包含至少12个合法阿拉伯数字,它是以UNICODE方式编码的。 针对每个USB设备的idVerdor和idProduct对,
序列号中最后12个阿拉伯数字 是唯一的。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论