第十章 USB主机:硬件与软件
USB的互连支持数据在USB主机与USB设备之间的流动.这一章主要讲述为了简化主机上的 客户软件(Software client)与设备的功能部件(function)之间的通信而必须的主机接口(host interface).在本章中所涉及的具体实现部份并不是必要的,这些实现部份是作为例子来阐述在响应USB设备请求时的主机系统的行为.只要USB设备并不感觉到主机行为的改变,USB主机完全可以提供一个不同的软件系统实现方法.
10.1 USB主机概况
10.1.1 概论
图10-1展示了USB通信模型之间基本的信息流与互连关系:
逻辑的信息流 实际的信息流
图 10-1通信模型层次关系图
由图10-1可见,主机与设备都被划分成不同的层次.主机上垂直的箭头是实际的信息流.设备上对应的接口是基于不同实现的.在主机与设备之间的所有通信最终都是通过USB的电缆进行,然而,在上层的水平层之间存在逻辑的主机—设备信息流.主机上的客户软件和设备功能部件之间的通信是基于实际的应用需求及设备所能提供的能力.
客户软件与功能部件之间的透明通信的要求,决定主机和设备下层部件的功能以及它们的界面(interface)
这一章从主机的角度来描述上述的通信模型,图10-2描述了从主机角度看到的它与设备的连接.
主机在整个USB系统中是唯一的,它包括如下几个层次.
·USB总线接口
·USB系统(USB System)
·USB客户(Client)
其中,USB总线接口处理电气及协议层的互连(详见第7章及第8章).从互连的角度看,USB设备和USB主机都提供类似的USB总线接口,如串行接口引擎(Serial Interface Engine SIE).由于主机在USB系统中的特殊性,USB主机上的总线接口还必须具备主机控制器的功能(Host Controller),主机控制器具有一个内集成的集线器(根集线器)提供与USB电缆的连接.
USB系统(USB System)使用主机控制器来管理主机与USB设备的数据传输.USB系统与主机控制器之间的界面基于主机控制器的硬件特性.USB系统层相对于主机控制器而言,处理的是以客户观点见到的数据传输及客户与设备的交互.这包括附加的USB信息,比如协议头(Protocol Wrappers).USB系统还必须管理USB的系统资源,以使得客户的访问成为可能.
通道组(到某一接口)
IRPS 配置信息
标准通道(到缺省端口地址)
硬件定义
USB 电缆
通道,代表相应层之间连接的抽象
图10-2 主机通信图
USB系统有三个主要组成部份:
·主机控制器驱动(Host Controller Driver)
·USB驱动 (USB Driver)
·主机软件 (host software)
主机控制器驱动的存在,方便地将各种不同的主机控制器实现映射到USB系统,客户可以不必知道设备到底接在哪个主机控制器上就能同设备进行通信.USB驱动提供了基本的面向客户的主机界面.在HCD与USB之间的接口称为主机控制器驱动接口(Host Controller Driver Interface HCDI).这层接口不能被客户直接访问,所以也不是由USB具体来完成的.一个典型的HCDI是由支撑各种不同主机控制器的操作系统来定义的.
USBD提供I/O请求包(I/O Request Packets)形式的数据传输,以某一特定通道来传输数据.另外,USBD为它的客户提供一个容易被支配及配置的抽象的设备.作为这种抽象的一部份,USBD拥有标准通道(参见第5章及第9章)对设备进行一些标准的控制.这标准通道实现了USBD与抽象设备之间的逻辑通信.(见图10-2)
在有些操作系统中,提供了额外的非USB系统软件以支持设备的配置及设备驱动程序的加载.在这样的操作系统中,设备驱动程序应使用提供的主机软件接口而不是直接访问USBDI.
客户层描述的是直接与USB设备进行交互所需要的软件包.当所有的设备都已连上系统时,这些客户就可以直接通设备进行通信.一个客户不能直接访问设备的硬件.
该言之,主机可提供如下的功能
·检测USB设备的连接与断开.
·管理主机与设备之间的标准控制流.
下一页