停更好久,重新梳理一下usb 知识体系
1. USB 硬件框架
一个 USB 系统 由三部分来描述:
USB interconnect 是指USB 设备连接到主机并与主机通信的方式。这包括以下内容:
- 总线拓扑:USB device 和 host 之间的连接模型。
1.1. 总线拓扑
在USB 系统中有两个硬件的概念:
- USB host:它跟处理器相连,处理器通过USB Host跟各类USB设备通信。USB Host中集成有一个root hub
- Function:就是普通的USB设备,比如U盘、声卡等
USB 总线拓扑如下:
- Compound Device:组合设备,包含一个hub 和 一个或多个func
USB 总线拓扑最上层一定是host, 最后一级只能是func, 因此hub 级联最多5级;
1.2. USB host
- 在任何USB 系统中只有一个主机,主机的每个USB控制器(Host Controller)对应一条USB总线。与主机计算机系统相连的USB接口被称为主机控制器。
- 根集线器(root hub)集成在主机系统内以提供一个或多个连接点。
- USB Host通过 Host Controller 与 USB device 交互。
Host主要负责:
1.3. USB device
USB device 分为 USB hub 和 USB Function。
USB hub (集线器):
- root hub:一般与主机控制器连接在一起,提供一个或者多个端口。
- 支持速率转换:低速/全速设备,可连接在高速hub 上。
USB function 设备:
- Composite Device:复合设备。一个设备地址,1个 或者 多个function 接口组成
- Compound Device:组合设备。多个设备地址,一个hub 和 一个或者多个func 组成。
比如:键盘,鼠标,摄像头等。
1.4. USB 数据流
USB主机和USB设备之间的通信是通过管道(Pipe)进行的。
在USB协议中,管道是一个逻辑概念,
- 在USB主机端实际上就是一组缓冲区,用于管道中数据的收发。
- 在USB设备端,管道对应一个特定的端点,每一个端点都是一个由索引和方向确定的,USB设备最多支持16个双向端点(8个in/8个out)。
- USB设备地址、端点索引和端点方向的组合可以唯一确定USB主机和USB设备间的通信。
2. USB 软件框架
2.1. USB 数据流模型
USB 简化传输模型如下图所示,实际上要比这个复杂的多。主要包含以下部分:
- USB 物理设备:USB电缆终端的一块硬件,执行一些有用的终端用户功能。
- 客户端软件:在主机上执行的软件,对应于一个USB设备。此客户端软件通常与操作系统一起提供,或与USB设备一起提供。
- USB 系统软件:在一个特定的操作系统中支持USB的软件。USB系统软件通常与操作系统一起提供,独立于特定的USB设备或客户端软件。
- USB Host Controller (Host Side Bus Interface):允许将USB设备连接到主机上的硬件和软件。
2.2. USB 软件模型
实际的通信数据流:usb host control 和 USB 总线接口。虚拟的通信方式:主机端客户端软件和 物理设备fucntion 直接通信。
USB host:
- USB 系统软件:USB 驱动,HOST controller 驱动 和 host 软件
USB device:
USB物理设备为主机提供了额外的功能。USB设备提供的功能类型差别很大。但是,所有的USB逻辑设备都为主机提供相同的基本接口。这允许主机以相同的方式管理不同USB设备。
为了帮助主机识别和配置USB设备,每个设备都会携带和报告与配置相关的信息。所报告的一些信息在所有逻辑设备中都是常见的。其他信息是特定于该设备提供的功能的。此信息的详细类型根据设备的设备类别而有所不同。
详细软件模型
抽象为熟悉的软件模型
对于一个 usb 设备驱动,大多时候我们其实只需要关心function driver,不同的设备向上只有function 或者接口区分,对于底层而言都是一样的,最终通过SIE (串行总线)和主机通信。
3. 总结
本文主要介绍了,USB 系统的体系结构。一个USB 系统包含核心的三部分:
- USB interconnect:通过PIPE 互联传输
并简要阐述其软件模型。
参考文献:《usb_20.pdf》 chapter4/chapter5