简介

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: 创建接口节点