
对于一个USB设备,如下图:

每个USB设备包括多个Interface;每个Interface包括多个EndPoint。
每个USB Endpoint:
1)控制传输(Control Transfer) 双向 端点0 ;通过交互,了解设备有多少个接口、多少个端点等信息;
2)中断传输(Interrupt Transfer) 单向 ;主机采取定时轮询的方式
3) 批量传输(块传输)(Bulk Transfer)单向
4)实时传输(同步传输、等时传输)(Isochronous Transfer)单向 , 不可靠
USB Core 会处理USB Endpoint 的驱动;
USB 主控器驱动功能:(USB 主控器驱动一般由厂商实现)
1、 解析和维护URB
2、 负责不同USB传输类型的调度工作
3、 负责USB 数据的实际传输工作
4、 实现虚拟根Hub的功能;
"USB 接口":
是逻辑上的 USB 设备,编写的 usb_driver 驱动程序,支持的是"USB 接口"。
- 1: USB 控制器或 Hub 识别出 USB 设备后,会创建、注册 usb_device
- 2: usb_device 被"drivers\usb\core\generic.c" 驱动认领后,会选择、设置某个配置
- 3: 这个配置下面的接口,都会分配、设置、注册一个 usb_interface
- 4: 左边的 usb_driver 和右边的 usb_interface 如果匹配,则调用 usb_driver.probe
