USB协议栈设备框架和连接枚举过程

来源:互联网 发布:卢本伟的淘宝店叫什么 编辑:程序博客网 时间:2024/05/17 03:02
介绍标准的USB设备描述符和请求命令的概念,是搭建USB协议栈的基础知识,以及进行USB固件和软件设计时首先需要编程实现的部分。
        标准usB描述符
        描述符(Descriptor),是一个完整的数据结构,用于描述一个USB设备的所有属性。USB协议将这些属性信息进行分类,定义了五种标准的描述符,按照等级由高到低依次为:设备描述符、配置描述符、接口描述符和端点描述符,而字符串描述符是可选的。每一个描述符都是由一系列的字段组成,每个字段都是一连串的二进制数,表示相应的意义。
      设备描述符给出了USB设备的通用信息,包括对设备及所有设备配置起全程作用的信息。一个USB设备只能有一个设备描述符,但可以含有一个或多个配置。特别指出的是,缺省控制通道的数据包的长度(即USB设备端点0的长度)在设备描述符中得以说明,其它端点是在端点描述符中定义的。
      USB设备的一个配置可以包含一个或多个接口,且每个接口都可以相互独立地工作。所有的USB设备至少要支持一个配置描述符。如果USB设备支持多个配置,则每个配置都需要相应的配置描述符。配置描述符给出了USB设备的属性和能力等配置信息。
      接口一般都是由一系列端点所组成的集合体,用于实现某种特定的USB数据传输功能。某些USB设备类型,如HID设备,是在接口描述符中定义的,而不是在配置描述符中。接口描述符不可直接用SetDescriptor和GetDescriptor命令来存取,是作为配置描述符的一部分被返回。接口描述符给出了一个特定接口的属性信息。如果一个结构包含有备用的描述符,则可以在设备配置后加以改变。
     端点描述符用于描述接口所使用的非0端点的属性,包括输入/输出方向、端点号和包的大小。端点描述符不可直接用SetDescriptor和GetDescriptor命令来存取,是作为配置描述符的一部分被返回。0端点无描述符。
     字符串描述符是一个可选的描述符,其编号对应于前四种类型描述符中内容为索引的字段。
      标准usB设备请求命令
      USB定义了十一种标准的设备请求命令:Getstatus,ClearFeature,SetFeature,SetAddress,GetDeseriptor,SetDeseriptor,GetConfiguration,SetConfiguration,GetInterface,SetInterface,SynchFrame。这些USB设备请求命令,是通过设定控制传输的“初始设置步骤”中的一个8字节的Data0数据包,由主机发送给设备进行配置的。
      通用USB固件程序流程
     USB作为数据通信的标准,其软件和固件的流程具有一定的规则。其固件可以分为通用的枚举配置部分和类协议部分。在枚举配置部分,实现USB主机对设备的枚举和配置,使主机确认设备的功能,并提供资源。而类协议部分,则用来实现USB设备各自数据传输的功能,一般有相应的USB的类协议和规定作为编程的规范。例如MassStorage类设备的UFI命令。本节主要讨论USB共同的固件,即枚举配置部分的编程。
      在USB的枚举过程,设备的状态可以分为连接态、上电态、缺省态、地址态、配置态和挂起态。这些状态都是一种暂态。
      USB设备首次连接到主机后,主机将启动一个被称作总线枚举的进程,来枚举并管理设备状态的改变。编写USB主机或者设备端有关枚举阶段程序的具体过程如下:
(1)USB设备连接到Hub,Hub通过状态改变通道向主机汇报此USB设备己连接上。此时,USB设备处于连接态,它所连接的端口可以供应电流,但其他属性被禁止。

(2)主机通过命令询问Hub,了解连接事件的详细情况。
(3)一旦确定新设备已连上,主机至少等待100ms以使设备的接入操作完成以及电源的稳定工作。然后主机发出端口使能及复位命令给该端口。设备处于低电流上电态和连接态。
(4)Hub将端口的复位信号持续10ms后,端口己经被激活。此时,USB设备处于缺省态,并且可从端口上汲取小于100mA的电流,设备的所有寄存器及状态己经被复位,并通过缺省地址0与主机通信。
(5)主机通过缺省地址0,读取设备描述符,了解默认通道的一系列信息,确认USB设备的属性。
(6)设备配置,主机给设备分配一个唯一的地址,设备转向地址态。
(7)主机读取所有设备的配置描述符。
(8)基于得到的设备的配置描述符,主机给该设备重新配置一个配置值。此刻,设备就处于配置态并且配置有关的所有接口和端点。然后,USB设备可以从端口得到所要求的最大电量。从设备的角度来讲,它己经准备就绪了。

转:http://blog.csdn.net/augusdi/article/details/4169751

0 0
原创粉丝点击