USB(Universal Serial Bus,通用串行总线)子系统是Linux内核中负责管理和控制USB设备的核心组件。它提供了一套完整的框架,用于识别、管理和操作连接到系统的各类USB设备。
发展历程:
在Linux 4.9内核中,USB子系统已发展为一个成熟的架构,支持USB 1.0、2.0和3.0/3.1设备,并提供了完整的驱动框架。
应用领域:
USB子系统架构
graph TD
A[用户空间应用] -->|ioctl/read/write| B[字符设备接口]
A -->|libusb| C[USB设备文件系统]
B --> D[USB核心]
C --> D
D --> E[USB主机控制器驱动]
D --> F[USB设备驱动]
E -->|HW通信| G[USB主机控制器硬件]
F -->|协议通信| D
G -->|物理连接| H[USB设备]
subgraph "USB Core"
D
end
subgraph "Driver Layer"
E
F
end
subgraph "Hardware Layer"
G
H
end
USB设备的发现与初始化流程
sequenceDiagram
participant Hardware as USB硬件
participant HCD as 主机控制器驱动
participant Core as USB核心
participant Driver as 设备驱动
participant Sysfs as sysfs
Hardware->>HCD: 设备插入中断
HCD->>Core: hub_irq()
Core->>Core: hub_port_connect_change()
Core->>Core: usb_new_device()
Core->>Core: usb_set_address()
Core->>Core: usb_get_device_descriptor()
Core->>Core: usb_get_configuration()
Core->>Sysfs: 创建设备节点
Core->>Driver: 寻找匹配驱动
Driver->>Driver: probe()
Driver->>Core: usb_register_dev()
Core->>Sysfs: 创建接口节点