从零开始学USB(八、USB的数据流模型)

时间:2024-04-02 09:34:35

一、实施者观点

USB在主机和连接的USB设备之间提供通信服务。 但是,简单查看最终用户看到将一个或多个USB设备连接到主机,如图5-1所示,实际上是一点点实施起来比图中所示更复杂。 需要系统的不同视图从不同实施者的角度解释具体的USB要求。 几个重要的必须支持概念和功能,以便为最终用户提供所需的可靠操作今天的个人电脑。 USB以分层的方式呈现,以便于解释和允许特定USB产品的实施者专注于与其产品相关的细节。

从零开始学USB(八、USB的数据流模型)

图5-2显示了USB的更深入概述,标识了系统的不同层,将在其余部分中更详细地描述。特别是,有四个重点实施领域:

  • USB物理设备:USB电缆末端的一块硬件,可执行一些有用的最终用户功能。
  • 客户端软件:在主机上执行的软件,对应于USB设备。此客户端软件通常随操作系统提供,或与USB设备一起提供。
  • USB系统软件:在特定操作系统中支持USB的软件。 USB系统软件通常随操作系统一起提供,独立于特定的USB设备或客户端软件。
  • USB主机控制器(主机端总线接口):允许USB设备连接到主机的硬件和软件。

 

从零开始学USB(八、USB的数据流模型)

四个USB系统组件之间共享权利和责任。本规范的其余部分描述了支持功能与其客户端之间稳健,可靠的通信流所需的详细信息。

正如上图5-2所示,一个主机和一个USB设备之间的简单链接需要一些分层和实体之间的交互。USB总线接口增为主机和设备提供了物理/信令/分组连接。USB设备层是USB系统软件中用于对一个USB设备执行通常的USB操作的部分。而功能层通过一个适当匹配的客户软件层向主机提供一些附加的功能。对于USB设备和功能层而言,这两层都有其层间的逻辑通信,而这种逻辑通信实际上是通过USB总线接口层来完成其数据传输的。

 

二、总线拓扑

USB拓扑有四个主要部分:

  • 主机和设备:USB系统的主要组件
  • 物理拓扑:USB元素的连接方式
  • 逻辑拓扑:各种USB元素的角色和职责以及USB的方式从主机和设备的角度出现
  • 客户端软件到功能的关系:USB设备上的客户端软件及其相关功能接口如何相互查看

2.1 USB主机

主机的逻辑组成如图5-3所示,包括以下内容:

  • USB主机控制器
  • USB整体系统软件(USB驱动,主控制器驱动和主机软件)
  • 客户端

从零开始学USB(八、USB的数据流模型)

USB主机是USB中唯一的一个用于协调工作的实体。除了它的特殊物理位置,对于USB和与之相连接的设备而言,主机还有一些特殊的责任。对USB的访问都由主机控制,只有当主机允许其访问时,一个USB设备才能获得对总线的访问权。另外,主机还负责监视整个USB的构成情况。

2.2 USB设备

USB物理设备的逻辑组成如图5-4所示,包括以下内容:

  • USB总线接口
  • USB逻辑设备
  • 功能

USB物理设备为主机提供附加功能。 USB设备提供的功能类型差异很大。 但是,所有USB逻辑设备都向主机提供相同的基本接口。 这允许主机以相同的方式管理不同USB设备的USB相关方面。
为了帮助主机识别和配置USB设备,每个设备都携带并报告与配置相关的信息。 报告的一些信息在所有逻辑设备中都很常见。 其他信息特定于设备提供的功能。 此信息变量的详细格式,具体取决于设备的设备类。

从零开始学USB(八、USB的数据流模型)

 

2.3 物理总线拓扑
USB上的设备通过分层星形拓扑物理连接到主机,如图5-5所示。 USB连接点由称为集线器的特殊类USB设备提供。 集线器提供的附加连接点称为端口。 主机包括称为根集线器的嵌入式集线器。 主机通过根集线器提供一个或多个附着点。 为主机提供附加功能的USB设备称为功能。 为了防止圆形附件,对USB的星形拓扑施加分层排序。 这导致图5-5中所示的树状配置

从零开始学USB(八、USB的数据流模型)

 

2.4逻辑总线拓扑
当设备在分层星形拓扑中物理连接到USB时,主机与每个逻辑设备进行通信,就像它直接连接到根端口一样。 这将创建图5-7中所示的逻辑视图,该视图对应于图5-5中所示的物理拓扑。 集线器也是逻辑设备,但为了简化图片,未在图5-7中显示。 即使大多数主机/逻辑设备活动使用此逻辑透视图,主机仍会保持对物理拓扑的了解,以支持处理集线器的删除。 删除集线器后,必须从主机的逻辑拓扑视图中删除连接到集线器的所有设备。

从零开始学USB(八、USB的数据流模型)

 

2.5客户端软件与功能的关系
尽管USB的物理和逻辑拓扑反映了总线的共享特性,但是操作USB功能接口的客户端软件(CSw)被呈现为仅处理其感兴趣的接口。 用于USB功能的客户端软件必须使用USB软件编程接口来操纵它们的功能,而不是像通过其他总线(例如,PCI,EISA,PCMCIA等)通过存储器或I / O访问直接操作它们的功能。 在操作期间,客户端软件应独立于可能连接到USB的其他设备。 这允许设备和客户端软件的设计者专注于硬件/软件交互设计细节。 图5-8显示了器件设计人员对客户端软件和USB功能与USB关系的看法图5-7的逻辑拓扑。
 

从零开始学USB(八、USB的数据流模型)

三、USB的通信流

USB为主机的软件和客户的软件USB功能模块之间提供了同行服务。功能模块会对通信流有不同的要求,需要不同的客户来实现互相作用。通过允许将不同的USB功能模块的不同通信流分离开来,USB提供了更好的整体总线利用率。每个通信流否要使用某一总线访问来完成客户和功能模块之间的通信,并且终止于设备上某一个端点。设备端点用于区别任意的通信流。

图5-8对图5-2进行了详细的解释。图5-2中一个完整的通信流支持逻辑设备和功能增之前的通信流。而这些实际的通信流要经过若干个接口。

  • 主机控制器驱动程序(HCD):USB主机控制器和USB系统软件之间的软件接口。 此接口允许一系列主机控制器实现,而不需要所有主机软件都依赖于任何特定实现。 一个USB驱动程序可以支持不同的主机控制器,而无需具体了解主机控制器实现。主机控制器实现者提供支持主机控制器的HCD实现。
  • USB驱动程序(USBD):USB系统软件和客户端软件之间的接口。 该界面为客户提供了操作USB设备的便捷功能。

 

从零开始学USB(八、USB的数据流模型)

USB逻辑设备在USB系统中显示为端点集合。 端点分组为实现接口的端点集。 接口是函数的视图。 USB系统软件使用默认控制管道管理设备。 客户端软件使用管道束(与端点集关联)管理接口。 客户端软件请求在主机上的缓冲区和USB设备上的端点之间通过USB移动数据。 主机控制器(或USB设备,取决于传输方向)将数据打包以将其移动到USB上。 主机控制器还协调何时使用总线访问来通过USB移动数据包。

图5-10说明了如何通过端点和主机端内存缓冲区之间的管道传输通信流。 以下部分更详细地描述了端点,管道和通信流。

从零开始学USB(八、USB的数据流模型)

 

主机上的软件通过一组通信流与逻辑设备通信。 该组通信流由设备软件/硬件设计者选择,以有效地将设备的通信要求与USB提供的传输特性相匹配。

 

 

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
    原文链接:https://blog.csdn.net/qq_16777851/article/details/85107726