协议栈粗略解读
USB 都 好几代了,从 USB1.0 USB1.1 USB2.0
到 USB3.x 5G 10G 20G
到 USB4.x 40G 80G
每一代都有类似的协议文档
1. USB 总线文档 Universal Serial Bus Specification
2. USB 标准host文档 OHCI_Specification/EHCI_Specification/XHCI_Specification
3. 无 USB标准device文档
协议栈图解
- usb 1.1 协议栈
- usb 2.0 协议栈
- usb 3.0 协议栈

USB 层次数据包
USB数据是由二进制数字串构成的,数据会发送到端点(可以认为是一个缓冲区)上
level 1 : 二进制数据 0 1
level 2 : 域
level 3 : 包Packet
level 4 : 事务Transaction
level 5 : 传输Transfer
level 6 : 管道Pipe
USB控制器侧 协议栈
基本上每一层上下都有标准,你按照标准设计就可以了.
但是 xHCD 和 xHC 中间没有标准,这个要靠制造商来cover
USB设备 上面有标准(XHCI),下面没有标准,是正常的.
因为 USB设备按照 标准(XHCI) 动作就可以了.
应用软件。
该软件使用一个或多个USB设备提供的服务。应用软件通过类驱动程序提供的标准化接口与USB设备 交互
-------------------------------- posix 标准
类驱动程序软件。
该软件在主机PC上执行,对应于特定的USB设备“类”(大容量存储、人机界面、音频等)。
类驱动程序软件通常是操作系统的一部分或随USB设备提供。
-------------------------------- USBDI 标准
USB驱动程序(USBD)。
USBD是一种系统软件总线驱动程序,它为特定操作系统抽象了特定主机控制器驱动程序的细节。
USBD提供给系统的通用USB接口称为USB驱动程序接口或USBDI。
--------------------------- HCDI
主机控制器驱动程序(xHCD)。
xHCD提供了主机控制器硬件和USBD之间的软件层。主机控制器驱动程序的详细信息取决于主机控制器硬件寄存器接口定义。
--------------------------- XHCI 固定接口 标准
XHCI标准(该标准上下层接口都是固定的)
主机控制器(xHC)
主机控制器是主机控制器体系结构的特定硬件实现。USB 3主机控制器有一个主机控制器规范,支持低速、全速、高速、超高速和超高速Plus设备。
xHC向系统提供的接口称为可扩展主机控制器接口或xHCI。
--------------------------- USB 总线协议
USB设备。
这是一种扩展总线拓扑(集线器)或执行有用的最终用户功能的硬件设备。
与USB设备的交互从应用程序通过软件和硬件层流向USB设备。