数据流模型

本章介绍了数据是如何在 USB 上移动的。

开发者视角

USB 提供了主机和设备之间的通信服务。与普通用户看到的关系不同的是,实际上 USB 是个更复杂的模型,如下图所示。有四个需要重点关注的区域:

  • USB Physical Device:通过 USB 连接的可实现某些功能的设备。
  • Client Software:在上位机上运行的与 USB 设备相对应的客户端程序。下文称之为客户端。
  • USB System Software:特定操作系统中支持 USB 的软件。下文称之为 USB 驱动 。
  • USB Host Controller(Host Side Bus Interface):允许 USB 设备连接到主机上上的软/硬件。下文称之为主机控制器。

总线拓扑

一共有四种主要总线拓扑:

  • 主机和设备拓扑。
  • 物理拓扑。
  • 逻辑拓扑。
  • 客户端软件到功能关系。

USB 主机拓扑:

如下图所示,USB 主机逻辑上的拓扑包括

  • 上位机
  • 一系列驱动
  • 主机控制器。
    主机扮演了一个独一无二的角色——协调 USB 中全部的实体。具体来说
  • 主机控制器控制着对总线的访问权限,只有主机授予了权限,设备才可以访问总线。
  • 主机监控着总线结构。

USB 设备拓扑:

如下图所示,USB 设备物理上的拓扑包括

  • 总线接口
  • 逻辑设备
  • Function

后续 Function 均不翻译,翻译过来感觉怪怪的,还是作为专有名词保留吧。

USB 物理设备为主机提供了额外的功能。尽管这些功能的类型千差万别,但为主机提供的接口却是统一的。
所有设备都带有配置信息来帮助主机正确配置 USB 设备。

物理总线拓扑

USB 物理结构为分层的星型拓扑,由 hub 提供的接入点被称为 port 。主机作为整个拓扑的根结构,所有设备以主机附带的 root hub 为核心逐层扩散。单个主机控制器最多支持连接 127 个 USB 设备。
一个物理设备可以包含多个 function ,比如一个耳机包含有一个扬声器和麦克风。这种包含有多个功能的单一物理设备有两种模式

  • 组合设备(Compound Device)
    组合设备可被认为是一个虚拟的内部 hub 连接了多个不同的设备,因此每个功能都会有一个单独的设备地址。
  • 复合设备(Composite Device)
    复合设备则是一个设备实现多个功能,所有功能共享一个设备地址。

Hub 还扮演了将高速总线与全速/低速总线隔离的角色。

逻辑总线拓扑

尽管设备以分层星型结构连接到主机,但在通信时主机会直接与每个设备通信。

注意:尽管 hub 也是逻辑设备,但下图并未简化。

客户端软件到功能关系

使用 USB 功能的客户端软件(Client Software, CSw)必须使用 USB 软件编程接口来操纵其功能,而非通过内存或与其他总线(PCI,EISA,PCMCIA)直接操纵其功能。

USB 通信流