USB基础教程第十章USB硬件与软件.docx

上传人:b****7 文档编号:10258839 上传时间:2023-02-09 格式:DOCX 页数:29 大小:118.39KB
下载 相关 举报
USB基础教程第十章USB硬件与软件.docx_第1页
第1页 / 共29页
USB基础教程第十章USB硬件与软件.docx_第2页
第2页 / 共29页
USB基础教程第十章USB硬件与软件.docx_第3页
第3页 / 共29页
USB基础教程第十章USB硬件与软件.docx_第4页
第4页 / 共29页
USB基础教程第十章USB硬件与软件.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

USB基础教程第十章USB硬件与软件.docx

《USB基础教程第十章USB硬件与软件.docx》由会员分享,可在线阅读,更多相关《USB基础教程第十章USB硬件与软件.docx(29页珍藏版)》请在冰豆网上搜索。

USB基础教程第十章USB硬件与软件.docx

USB基础教程第十章USB硬件与软件

第十章USB:

硬件与软件

USB的互连支持数据在USB主机与USB设备之间的流动。

这一章主要讲述为了简化主机上的客户软件(Softwareclient)与设备的功能部件(function)之间的通信而必须的主机接口(hostinterface)。

在本章中所涉及的具体实现部份并不是必要的,这些实现部份是作为例子来阐述在响应USB设备请求时的主机系统的行为。

只要USB设备并不感觉到主机行为的改变,USB主机完全可以提供一个不同的软件系统实现方法。

10.1USB主机概况

10.1.1概论

图10-1展示了USB通信模型之间基本的信息流与互连关系:

逻辑的信息流实际的信息流

图10-1通信模型层次关系图

由图10-1可见,主机与设备都被划分成不同的层次。

主机上垂直的箭头是实际的信息流。

设备上对应的接口是基于不同实现的。

在主机与设备之间的所有通信最终都是通过USB的电缆进行,然而,在上层的水平层之间存在逻辑的主机—设备信息流。

主机上的客户软件和设备功能部件之间的通信是基于实际的应用需求及设备所能提供的能力。

客户软件与功能部件之间的透明通信的要求,决定主机和设备下层部件的功能以及它们的界面(interface)

这一章从主机的角度来描述上述的通信模型,图10-2描述了从主机角度看到的它与设备的连接。

主机在整个USB系统中是唯一的,它包括如下几个层次。

·USB总线接口

·USB系统(USBSystem)

·USB客户(Client)

其中,USB总线接口处理电气及协议层的互连(详见第7章及第8章)。

从互连的角度看,USB设备和USB主机都提供类似的USB总线接口,如串行接口引擎(SerialInterfaceEngineSIE)。

由于主机在USB系统中的特殊性,USB主机上的总线接口还必须具备主机控制器的功能(HostController),主机控制器具有一个内集成的集线器(根集线器)提供与USB电缆的连接。

USB系统(USBSystem)使用主机控制器来管理主机与USB设备的数据传输。

USB系统与主机控制器之间的界面基于主机控制器的硬件特性。

USB系统层相对于主机控制器而言,处理的是以客户观点见到的数据传输及客户与设备的交互。

这包括附加的USB信息,比如协议头(ProtocolWrappers)。

USB系统还必须管理USB的系统资源,以使得客户的访问成为可能。

通道组(到某一接口)

IRPS配置信息

标准通道(到缺省端口地址)

硬件定义

USB电缆

通道,代表相应层之间连接的抽象

图10-2主机通信图

USB系统有三个主要组成部份:

·主机控制器驱动(HostControllerDriver)

·USB驱动(USBDriver)

·主机软件(hostsoftware)

主机控制器驱动的存在,方便地将各种不同的主机控制器实现映射到USB系统,客户可以不必知道设备到底接在哪个主机控制器上就能同设备进行通信。

USB驱动提供了基本的面向客户的主机界面。

在HCD与USB之间的接口称为主机控制器驱动接口(HostControllerDriverInterfaceHCDI)。

这层接口不能被客户直接访问,所以也不是由USB具体来完成的。

一个典型的HCDI是由支撑各种不同主机控制器的操作系统来定义的。

USBD提供I/O请求包(I/ORequestPackets)形式的数据传输,以某一特定通道来传输数据。

另外,USBD为它的客户提供一个容易被支配及配置的抽象的设备。

作为这种抽象的一部份,USBD拥有标准通道(参见第5章及第9章)对设备进行一些标准的控制。

这标准通道实现了USBD与抽象设备之间的逻辑通信。

(见图10-2)

在有些操作系统中,提供了额外的非USB系统软件以支持设备的配置及设备驱动程序的加载。

在这样的操作系统中,设备驱动程序应使用提供的主机软件接口而不是直接访问USBDI。

客户层描述的是直接与USB设备进行交互所需要的软件包。

当所有的设备都已连上系统时,这些客户就可以直接通设备进行通信。

一个客户不能直接访问设备的硬件。

该言之,主机可提供如下的功能

·检测USB设备的连接与断开。

·管理主机与设备之间的标准控制流。

·管理主机与设备之间的数据流。

·收集状态及一些活动的统计数字。

·控制主机控制器与USB设备的电气接口,包括提供有限的能源。

在下面的章节中,我们将较细的阐述USBDI所能提供的功能。

对于特定的主机平台与操作系统下的实现接口请参照相关的操作系统手册。

所有的集线器都通过状态改变通道报告它的状态的改变,其中包括设备的连上与断开等。

USBD的一类特殊客户即:

集线器驱动器拥有这些状态改变通道,接收这些状态的改变。

对于像设备连结这种状态改变,集线器驱动器将加载设备的驱动程序。

在有些系统中,这种集线器驱动程序是操作系统提供的主机软件的一部份,它用来管理设备。

10.1.2控制机构

控制信号可通过带内信号(in-band-singling)及带外信号(out-of-bard-signaling)两种方式在主机与设备之间传输。

带内信号将控制信息及数据信息混在一起用同一通道传输,以至于主机根本就没有觉察到。

而外带信号是通过单独的通道进行传输。

任何一个已连接的设备都有一个标准的信息通道,即标准通道。

这个主机与设备之间的逻辑的连接用于传输USB的标准控制信息,比如对设备的配置信息等。

这些标准通道为USB的设备提供了标准的接口,它也可以用来进行基于特定设备而不同的通信,这些通信由拥有所有这些通道的USBD作媒介。

一些特定的设备可能允许使用额外的信息通道来传输特定设备的控制信息。

这些额外的信息通道与标准通道使用同样的协议,但是传递的信息是基于特定的设备的,也不是由USB具体标准化的。

USBD支持和它的客户共享使用标准通道,它还提供给客户与设备相连的其它控制通道的访问。

10.1.3数据流

主机控制器在主机与USB设备之间传递数据。

这些数据被看作连续的字节流。

USB支持4种形式的数据传输

·控制传输。

·同步传输。

·中断传输。

·块传输。

有关于传输方式的额外信息请参见第5章

每个设备具有一到多个界面以用于客户与设备之间的数据传输。

每个接口由一到多个在客户及设备端点之间独立传输的通道组成。

USBD根据主机软件的请求来初始化这些通道和接口。

当这些配置请求提出后,主机控制器将基于主机软件所提供的参数来提供服务。

每个通道基于数据传输模式和请求的有如下几个特性:

·数据传输的频率。

·数据是以恒定速率提供还是随机出现的。

·在数据传输前可延迟的时间。

·在传输过程中数据的丢失是否是具有灾难性。

USB设备的端口描述了与之相连接的通道的特性。

USB设备端口的特性的具体描述可参照第9章。

10.1.4收集状态及活动统计数据

作为普通的为所有主机与设备之间的控制流与数据流服务的USB系统与主机控制器,一直处于随时接收状态变化及活动信息的状态,以使软件能及时接收并处理这些状态的变化。

这里并不具体讲述需要被跟踪的状态信息及这些状态信息的特殊的格式。

10.1.5电气接口因素

主机为连在集线器上的USB设备提供能量。

一个集线器口所能提供的能量具体值在第七章有详细说明。

10.2主机控制器功能

在所有的实现中,主机控制器都必须提供基本相同的功能。

主机控制器对主机及设备来讲都必须满足一定的要求。

下面是主机控制器所提供的功能的概况。

每种功能在下面的小节中还有具体的说明。

1状态处理(StateHandling)作为主机的一部份,主机控制器报告及管理它的状态。

2串行化与反串行化对于从主机输出的数据,主机控制器将协议及数据信息从它原始形状转换为字位流。

而对于主机接收的数据主机控制器进行反向操作。

3帧产生(FrameGeneration)主机控制器以每1ms为单位产生SOF标志包。

4数据处理主机控制器处理从主机输入输出数据的请求。

5协议引擎主机控制器支持USB具体规定的协议

6传输差错控制所有的主机控制器在发现和处理已定义的错误时展现相似的行为。

7远程唤醒所有的主机控制器都应具有将总线置于挂起状态及在远程唤醒事件下重新启动的能力。

8集线器集线器提供了标准的将多个USB设备连到主机控制器的功能。

9主机系统接口主机控制器在主机系统控制器之间建立一个高速的数据通道。

下面的各节将对上面提到的各功能进行详细的讨论。

10.2.1状态处理

主机控制器具有一系列USB系统管理的状态。

另外,主机控制器为下面两个与USB有关的部份提供接口。

·状态改变传播

·根集线器

根集线器提供与其它USB设备一样的标准状态给集线器驱动器。

有关USB状态与其它之间的相互关系的详细讨论请参照第7章。

主机控制器的总的状态与根集线器及总体的USB密不可分。

任何一个对设备来说可见的状态的改变都应反映设备状态的相应改变。

从而保证主机控制器与设备之间的状态是一致的。

USB设备通过使用恢复信号请求唤醒,使设备回利已配置的状态。

主机控制器本身也可以通过同样的方法产生一个恢复事件。

主机控制器通过使用该实现系统的某种机制来通知主机的其它部份已产生了一个恢复事件。

10.2.2串行化与反串行化

通过物理上的传输是以字位流的形式出现的。

不管是作为主机的一部份,还是作为设备的一部份,串行接口引擎(STE)处理USB传输过程中的串行化与文串行化工作。

在主机上,串行接口引擎是主机控制器的一部份。

10.2.3帧产生

主机控制器有义务将USB时间划分为以1ms为单位的帧。

主机控制器以每1ms间隙产生SOF(Start-of-Frame)标识以示新的一帧的开始(如图10-3)。

SOF标识是一帧的开始部份,在SOF标识之后主机控制器在该帧的余下时间内传输其它的东西。

当主机控制器处于正常工作状态时,SOF标识必须以1ms为间隙连续的发送而不管其它的总线活动。

当总线控制器处于不给总线提供能量的状态时,它不能产生SOF标识。

当总线控制器不产生SOF标识时,它处于一种节能方式。

EOF间隙(FRAMEN-1)FRAMENFRAMEN+1

图10-3帧产生

SOF标识具有取得总线的最高的优先权。

集线器中的babblecircuit在EOF期间停止任何传输任务,为SOF标识的传输提供一条空闲的总线。

主机控制器必须允许USB每帧的时间长度相差±1bit的时间(参见10.5.3.3.4节)。

主机控制器维持着一个当前帧的序号。

帧序号具有以下各方面的作用

·用于将两帧唯一的区别开

·在每帧的结尾处加1

·对于它的后继帧有效

主机在每一个SOF标识中传输当前帧号的低11位。

当接到主机控制器的请求时,主机返回请求发生时刻的帧序号。

虽然主机控制器自身并不要求维持一个超过11位的帧序号,但是主机返回的帧序号至少是32位的,。

主机控制器在EOF期间要停止一切传输操作。

当EOF间隙产生时,所有原定在刚才那帧上传输的事务暂停。

如果主机控制器在执行传输的时候出现了EOF,主机控制器中止该项传输请求。

10.2.4数据处理

主机控制器接收来自USB系统的数据并将其传送给USB设备或从USB设备接收数据送给USB系统。

USB系统和主机控制器之间进行数据传输时的具体格式是基于具体的实现系统的,同时也要符合第5章所讲述的传输协议要求。

10.2.5协议引擎

主机控制器管理着USB协议层的接口。

在输出的数据中插入适当的协议信息,并且它将解释并去除输入数据中的协议信息。

10.2.6传输差错控制

主机控制器必须能够发现如下的几种从主机的角度定义的错误:

·超时错。

该类错误发生在目标端口没有相应的反应或传输系统被严重损坏以至于目标端口根本就没有收到信息。

·数据丢失或无效传输。

主机控制器发送或接收到较应该传输的数据包为短的数据包。

例如,一项传输超出了EOF,或缺少可使用的资源,或数据包CRC校验出错.

·协议错

——无效的握手PID,例如形式错误或不恰当的握手包。

——错误的包标志。

——位插入错。

对批传输,命令传输,中断传输,主机必须维持一个错误统计记录。

这些错误是由上述各种情况产生的,而不是由于端口不响应一个请求而产生的。

错误统计记录反映了传输过程中出现的错误的次数。

如果错误统计记录值达到三,则主机终止传输。

如果传输是由于过多的传输错而被中止的话,则最后一次出现的错误将被简要的说明。

每个同步传输事务仅进行一次,而不管结果,所以对于这种传输来说是没有被维持的错误记录。

10.2.7远程唤醒

如果USB系统希望将总线置于挂起状态,它将请求主机控制器终止任何形式的传输,包括SOF。

这使得所有的USB设备进入一种挂起状态。

在这种状态下,USB系统可以使能主机控制器响应总线唤醒事件。

这使得主机控制器能响应总线的唤醒信号,重启主机系统。

10.2.8根集线器

根集线器提供主机控制器与一个或多个USB设备的连接。

除了主机控制器及根集线器之间的硬件软件接口是由具体的硬件实现来定义的外,根集线器提供与其它的集线器一样的功能(参见11章)。

10.2.8.1端口复位(PortResets)

7.1.7.3节讲述了集线器为了保证每一个下行恢复请求都供给一个长时间的下行复位,所必须具备的条件,根集线器应能提供一个至少为50ms的复位时间。

如果复位时间是由硬件控制的,并且硬件能提供的复位时间小于50ms,则USB系统可以产生连续的几个复位信号以产生足够长时间的复位。

10.2.9主机系统接口

主机控制器提供一条高速的读出与写入系统内存的总线接口。

内存与USB电缆的物理数据的交换是在主机控制器的控制下自动进行的。

当数据缓冲区需要允满或清空时,主机控制器通知USB系统。

10.3软件功能概论

HCD与USBD提供了基于不同抽象层次的软件界面。

它们以一定的方式协同工作以实现USB系统的功能(见图10-2)。

对USB系统的功能主要表现在对USBDI所能提供的功能上。

USBD与HCD之间任务的划分没有具体的定义,但是HCDI必须要具备的一项功能就是它必须支持多种主机控制器的不同实现。

HCD提供了抽象的主机控制器,且对主机控制器所见到的USB系统的数据传输进行了抽象。

USBD提供一个抽象的设备,且对USBD客户和USB设备功能部件之间的数据传输进行抽象。

总之,USB系统简化了USBD客户与USB设备之间的数据传输过程,并且作为对USB设备的面向USB的接口进行控制的人口。

作为简化数据传输功能的一部份,USB系统提供缓冲区管理功能,并且允许根据客户及设备功能部件的需求进行实时数据传输。

USBDI的提供的功能将在下面将具体的阐述。

这些功能的具体实现将在相关的操作系统中关于HCDI及USBDI的部份找到。

通过USBDI实现数据传输所经历的过程将在下面得到简述。

10.3.1设备配置

不同的操作系统环境使用不同的软件及不同的事件序列来配置设备:

在这里,我们讲述USB系统层时,并不以某个特定的实现系统为模板。

但是USB系统的具体实现系统必须实现某一些基本的功能。

在有些操作系统中由主机软件(hostsoftware)实现这些功能,而在其它的一些操作系统中,由USB系统层实现该项功能。

USBD有一类特殊的客户,称作集线器驱动器。

集线器驱动器充当设备从特定的集线器连接与断开的清算中心(clearinghouse)。

当集线器控制器接到有设备连接与断开的信息时,它会激活其它的主机软件或其它的USBD客户配置该设备或对这些信号作出其它的反应。

上述的模型是下面讨论的基础,见图10-4

当一个设备连上某集线器的时候,集线器驱动器从集线器那儿收到一条表明集线器状态改变的消息。

集线器驱动器使用集线器提供的信息,向USBD请求设备的标志码(identifier)。

USBD为该设备建立标准的通道,并且返回该设备的身份码。

现在该设备可以被配置和使用。

对于任何一个设备,在使用之前必须要完成如下三项配置工作:

控制信息流可选信息流

图10-4设备配置信息流程图

1.设备配置:

这包括设置设备的所有参数,为设备分配所有可见的USB主机资源。

USB还允许以后更改设备的部分配置参数。

一旦设备配置完以后,以设备的观点来看,它已是可用的。

2.USB配置为了真正的创建客户可用的USBD通道,额外的对设备不可见的USB信息要由客户具体化。

这些信息被称为通道策略,它描述了客户将如何使用该通道,其中包括一个I/O请求包容许的最大数据量,客户的最大服务间隙,客户的标识码等等。

3.功能配置当设备配置与USB配置完成后,从USB的观点来看,该通道是完全可用的。

然而在客户真正使用通道之前,或许额外的供应商定义的(vendor)或有关设备类(class-specific)配置需要进行。

这些配置是客户与设备之间的私事,它并不由USBD来进行标准化。

下面的段落描述了客户配置与USB配置需要完成的工作。

配置软件完成具体的配置工作。

具体的配置软件将基于特定的操作系统实现而有所不同,但一般它包括以下几个部份。

·集线器驱动器

·其它主机软件

·设备驱动程序

配置软件首先读取设备的描述符,然后对于每一种可能的配置请求该配置的描述信息。

配置软件使用提供的信息加载特定的客户,比如设备驱动程序,由它与设备进行初始的交互。

配置软件可能要从设备驱动程序那儿输入一些信息,然后为设备选择一种配置方案。

设备配置过程设置好设备的所有端口,并且返回一组用于USBD客户传输数据的接口。

一个接口是为某个客户所拥有的一组通道。

初始配置为每个接口使用缺省的配置,为每个端口分配缺省的带宽。

USBD实现系统可能允许客户在一些可选配置中指定一种作为初始配置。

同时,USB系统会检测端口所需要的资源是否能得到满足,如果能满足的话,就为它分配所需要的资源(参见10.3.2节关于资源管理)。

至此,设备已经配置完成了,但是创建的通道还不可用。

当客户通过设置通道的使用策略为每一个通道初始化以后,USB配置也就完成了。

这些需要被具体指明的使用策略包括客户的最大服务间隙和客户的标识信息。

根据USB配置的结果,USB系统决定除了客户提供的数据缓冲区外还需的工作缓冲区的大小。

工作缓冲区的大小是根据客户的功能选择及每次事务的需求来决定的。

当I/O请求包结束的时候,或者是顺利结束,或者是由于产生了错误,客户都将收到一条通知消息。

在USB通知下,客户唤醒以检查即将到来的I/O请求包的状态。

客户可以进行一些配置的修改,比如说选择另一种可能的接口配置方案,改变已为某一通道分配的带宽。

在进行这些配置更改时,相应的接口或通道必须处以空闲状态。

10.3.2资源管理

当一个USBD为一个给定的通道进行设置的时候,USB系统将根据相应端口的描述符检查它是否能满足该通道的资源要求。

其中必须被满足的一项是通道的带宽。

在检查带宽是否能满足时中要经过两步。

首先计算每次事务的最大运行时间,其次根据帧的时间分配表检查上述的带宽要求能否满足。

USB系统的软件完成为同步传输模式及中断传输模式分配所需的带宽和判断一个特定的控制传输事务和块传输事务能否装进一个给定的帧的工作。

如果主机控制器的实际事务的执行时间超过了一帧,主机控制器有义务维护帧的完整性(参照10.2.3)。

下面的讨论叙述了USB系统应具备的功能。

为了决定带宽是否能满足,或者传输事务能否被装入特定的帧,必须计算事务最大执行时间。

在计算过程中使用到下述信息

·每包的最大数据字节数

·传输模式

·拓扑结构深度。

如果要求不是很精确的话,假定设备处于最大的拓扑深度。

上述的计算必须考虑到位传输时间,由于拓扑深度而造成的信号传输延迟,还有一些与具体实现系统有关的延迟。

比如主机控制器的准备及复位时间。

具体的计算公式请参照第5章。

10.3.3数据传输

客户与功能部件之间通信的基础是如下的接口:

与特定USB设备相联系的一串相关通道。

主机上的一个客户拥有一个给定的设备接口。

客户初始化该接口,为接口中的每个通道设定使用策略,其中包括设定一次I/O请求的最大数据量,和通道的最大服务间隙(servileinterval)。

服务间隙是以毫秒计的,它反应了在同步传输模式下每两次传输的间隙,同时它反映了在中断传输模式下轮询间隙。

当一个特定的请求处理完成以后,客户被唤醒。

客户通过管理每一个I/O请求包的大小以维持它的任务循环(dutycycle)和延迟限制(latency)。

其它的使用策略信息包括客户的通知信息等。

客户为传输事务提供数据缓冲区。

USB系统根据客户的使用策略信息决定额外的工作缓冲区大小。

客户视它的数据为一个连续的串行数据流。

客户以类似于其它总线的数据流管理方式管理这种数据流。

在内部,USB系统可能根据自己的策略及主机控制器的限制将单个请求分割成多个在USB上传输的请求。

但是当USB系统决定进行请求的分割的时候,必须要考虑到以下两点:

·将数据流分割成更小的块操作对客户是不可见的。

·USB样本(Samples)在总线传输时是不被分割的。

当客户想传输数据的时候,它将I/O请求包发送给USBD。

同时,客户将根据传输的方向提供一个空或满的数据缓冲区。

当请求完成(或是顺利完成,或是出现了错误)I/O请求包及状态都将返回给客户。

如果有必要的话,IRPS中将包括每次事务的状态。

10.3.4普通数据定义(CommonDataDefinition)

为了使客户最直接的从它的设备处取得结果,有必要使客户与设备之间传输过程中的数据拷贝及处理降至最少。

为了便于上述的实现,I/O请求包中的控制信息被标准化,以使得不同的层能直接访问到客户提供的控制信息。

数据的具体格式与操作系统上USBDI的具体实现有类。

有些数据成份可能对客户来请是不可见的,但是在客户提出请求的时候生成。

下面的数据成份定义了一次请求的相关信息。

·与该请求有关的通道标识。

通道的标识信息同样也包括了传输模式的信息。

·特定客户的通知标志码。

·数据缓冲区的位置及长度

·请求的结束状态,包括总的状态及每次事务的结束状态

·工作缓冲区的位置及长度。

这与其实现系统有关。

客户与USBD之间交互请求的机制是由操作系统定义的。

除了上面讲到的一个IRPS必须包含的请求信息外,还必须对请求的处理作出一些要求。

这些基本的处理要求在第5章有描述,读者可以参考。

另外,USD提供一套机制以指定一组同步I/O传输请求的首次传输事务出现在同一帧内。

USBD还提供了一套机制以指定一组不可被中断的厂商定义的或有关设备类的请求到标准通道。

没有其它的请求可以插入到该组非中断请求的执行流中。

如果一组中间的某些请求出现了错误,整的该组请求都被中止。

10.4主机控制器驱动器

HCD是主机控制器硬件的抽象,同时也是对主机控制器所见的数据传输的抽象。

HCDI应符合下列条件:

·提供一个抽象的主机控制器硬件。

·提供主机控制器在USB上传输数据过程的抽象。

·提供主机控制器为给定设备分配(或不分配)必需的资源过程的抽象。

·根据一般集线器的定义提供根集线器。

这包括支持集线器驱动程序与根集线器的直接交互。

具体的说,虽然一个根集线器是用硬件及软件

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 临床医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1