您现在的位置: USB开发网 > USB技术文档 > USB专题 > USB1.1协议中文完整在线版
USB1.1协议中文完整在线版

10.3 USB软件功能概论

------分隔线----------------------------

10.3 USB软件功能概论

  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系统的具体实现系统必须实现某一些基本的功能。在有些操作系统中由主机软件(host software)实现这些功能,而在其它的一些操作系统中,由USB系统层实现该项功能。

  USBD有一类特殊的客户,称作集线器驱动器。集线器驱动器充当设备从特定的集线器连接与断开的清算中心(clearing house)。当集线器控制器接到有设备连接与断开的信息时,它会激活其它的主机软件或其它的USBD客户配置该设备或对这些信号作出其它的反应。上述的模型是下面讨论的基础,见图10-4

 

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

  当一个设备连上某集线器的时候,集线器驱动器从集线器那儿收到一条表明集线器状态改变的消息。集线器驱动器使用集线器提供的信息,向USBD请求设备的标志码(identifier)。USBD为该设备建立标准的通道,并且返回该设备的身份码。现在该设备可以被配置和使用。对于任何一个设备,在使用之前必须要完成如下三项配置工作:

  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请求的最大数据量,和通道的最大服务间隙(servile interval)。服务间隙是以毫秒计的,它反应了在同步传输模式下每两次传输的间隙,同时它反映了在中断传输模式下轮询间隙。当一个特定的请求处理完成以后,客户被唤醒。客户通过管理每一个I/O请求包的大小以维持它的任务循环(duty cycle)和延迟限制(latency)。其它的使用策略信息包括客户的通知信息等。

  客户为传输事务提供数据缓冲区。USB系统根据客户的使用策略信息决定额外的工作缓冲区大小。

  客户视它的数据为一个连续的串行数据流。客户以类似于其它总线的数据流管理方式管理这种数据流。在内部,USB系统可能根据自己的策略及主机控制器的限制将单个请求分割成多个在USB上传输的请求。但是当USB系统决定进行请求的分割的时候,必须要考虑到以下两点:

  • 将数据流分割成更小的块操作对客户是不可见的。
  • USB样本(Samples)在总线传输时是不被分割的。

  当客户想传输数据的时候,它将I/O请求包发送给USBD。同时,客户将根据传输的方向提供一个空或满的数据缓冲区。当请求完成(或是顺利完成,或是出现了错误)I/O请求包及状态都将返回给客户。如果有必要的话,IRPS中将包括每次事务的状态。

10.3.4 普通数据定义(Common Data Definition)

  为了使客户最直接的从它的设备处取得结果,有必要使客户与设备之间传输过程中的数据拷贝及处理降至最少。为了便于上述的实现,I/O请求包中的控制信息被标准化,以使得不同的层能直接访问到客户提供的控制信息。数据的具体格式与操作系统上USBDI的具体实现有类。有些数据成份可能对客户来请是不可见的,但是在客户提出请求的时候生成。

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

  • 与该请求有关的通道标识。通道的标识信息同样也包括了传输模式的信息。
  • 特定客户的通知标志码。
  • 数据缓冲区的位置及长度
  • 请求的结束状态,包括总的状态及每次事务的结束状态
  • 工作缓冲区的位置及长度。这与其实现系统有关。

  客户与USBD之间交互请求的机制是由操作系统定义的。除了上面讲到的一个IRPS必须包含的请求信息外,还必须对请求的处理作出一些要求。这些基本的处理要求在第5章有描述,读者可以参考。另外,USD提供一套机制以指定一组同步I/O传输请求的首次传输事务出现在同一帧内。USBD还提供了一套机制以指定一组不可被中断的厂商定义的或有关设备类的请求到标准通道。没有其它的请求可以插入到该组非中断请求的执行流中。如果一组中间的某些请求出现了错误,整的该组请求都被中止。

------分隔线----------------------------
USB开源项目
联系我们
  • Q Q: 1148374829 点击这里给我发消息
  • 旺旺:jhoneqhsieh 点击这里给我发消息
  • 电话:(0)15923141204
  • 淘宝网店