USB2.0规范(3) 数据流模型
数据流模型
本章介绍了数据是如何在 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 通信流

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Reglucis 的博客!
