USB通信程序设计 第5页
第三章 协议
3.1 Mass Storage 协议
USB协议能够在启动或是当设备插入系统时对设备进行备置,这就是USB设备为什么可以执插拨的原因。USB设备被分成以下几类:显示器(Monitors)、通讯设备(Communication devices)、音频设备(Audio)、人机输入(Human input)、海量存储(Mass storage)。特定类(class)的设备又可划分成子类(subclass),划分子类的后软件就可以搜索总线并选择所有它可以支持的设备。每个设备可以有一个或多个配置(Configuration),配置用于定义设备的功能。如果某个设备有几种不同的功能,则每个功能都需要一个配置。配置(configuration)是接口(interface)的集合。接口指定设备中的哪些硬件与USB交换数据。每一个与USB交换数据的硬件就叫做一个端点(endpoint)。因此,接口是端点的集合。USB的设备类别定义(USB Device Class Definitions)定义特定类或子类中的设备需要提供的缺省配置、接口和端点。描述符(descriptor)描述设备、配置、接口或端点的一般信息,下图为USB 描述符的层次结构。
图3.1 USB描述符层次结构
USB(Host)唯一通过描述符了解设备的有关信息,根据这些信息建立起通信,在这些描述符中,规定了设备所使用的协议、端点情况等。因此,正确地提供描述符,是USB设备正常工作的先决条件。USB海量存储设备(USB Mass Storage Class)包括General Mass Storage Subclass、CD-ROM、Tape、Solid State。Mass Storage Class只需要支持一个接口,即数据(Data)接口,选择缺省配置时此接口即被激活。数据接口允许与设备之间进行数据传输,它提供三个端点:Bulk Input 端点、Bulk Output 端点和中断端点。通用海量存储设备(General Mass Storage Device)是随机存取、基于块/扇区存储的设备。它只能存储和取回来自CPU 的数据。这种设备的接口遵循SCSI-2标准的直接存取存储设备(Direct Access Storage Device)协议。USB设置上的介质使用与SCSI-2设备相同的逻辑块(logical blocks)方式寻址。下面介绍基于Bulk Only(批量传输)模式的Mass Storage 设备的描述符:每个USB设备都必须有一个设备描述符。
图3.2 设备(Device)描述符
Mass Stroage设备的设备类型和子类代码均在接口描述符中设置,这里置0。其中iSerialNumber可为零,即不指定Serial Number。
配置描述符如下图:
图3.3 配置(Configuration)描述符
这里配置所支持的接口数应为1。即设置至少支持一个接口,这里为Bulk-Only Data接口,此接口使用三个端点:控制端点(默认)、Bulk-In和Bulk-Out。其中bInterfaceSubClass指定所使用的工业标准命令块,bInterfaceProtocol为所使用的传输协议。
图3.4 bInterfaceSubClass 处的工业标准命令块代码
图3.5 Mass Storage 传输协议
接口描述符如下图:
图3.6 接口(Interface)描述符
由于控制端点为每个设备都使用的缺省端点,因此不需要定义,只需定义Bulk-In和Bulk-Out两个端点,其端点描述符如下:
图3.7 Bulk-In端点描述符
图3.8 Bulk-Out端点描述符
3.2 Bulk-Only传输协议
设备插入到USB后,USB即对设备进行搜索,并要求设备提供相应的描述符。在USB Host 得到上述描述符后,即完成了设备的配置,识别出为Bulk-Only的Mass Storage设备,然后即进入Bulk-Only传输方式。在此方式下,USB与设备间的所有数据均通过Bulk-In和Bulk-Out来进行传输,不再通过控制端点传输任何数据。在这种传输方式下,有三种类型的数据在USB和设备之间传送,CBW、CSW 和普通数据。CBW(Command Block Wrapper,即命令块包)是从USB Host发送到设备的命令,命令格式遵从接口中的bInterfaceSubClass 所指定的命令块,这里为SCSI传输命令集。USB设备需要将SCSI命令从CBW中提取出来,执行相应的命令。完成以后,向Host发出反映当前命令执行状态的CSW(Command Status Wrapper,即命令状态包),Host根据CSW来决定是否继续发送下一个CBW或是数据。Host要求USB设备执行的命令可能为发送数据,则此时需要将特定数据传送出去,完毕后发出CSW,以使Host进行下一步的操作。USB设备所执行的操作可用下图描述:
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... 下一页 >>
USB通信程序设计 第5页下载如图片无法显示或论文不完整,请联系qq752018766