USB 驱动框架分析
USB 控制器作为 Host
(USB 主机控制器)时,使用 USB 主机控制器驱动。 USB 控制器作为 device
(USB 设备控制器)的时候驱动框架分别为:Gadget Function 驱动、Gadget Function API、Composite 及 UDC (usb device controller) 驱动。
- 上层
Gadget Function
驱动(代表具体设备驱动),比如存储设备:移动硬盘、U 盘设备;通讯设备:USB 串口、USB 虚拟网卡等;UAC 驱动:USB 声卡 USB 音频设备。 Gadget function API(抽象层)
,向上和向下提供统一标准 API 接口。composite(中间层)
支持多种功能的设备(USB 符合设备驱动的开发)。UDC驱动
直接访问硬件,控制 USB 设备与 USB 主机之间的通信。
Gadget Function
Gadget Function
驱动使用 usb_function_driver
数据结构进行描述:
Gadget Function API
上层为 function
驱动使用 function api
注册和注销,下层为 composite
驱动使用 function api
和 function
驱动绑定和匹配。function
驱动要实现 usb_function_driver
数据结构并向 function api
层注册。具体的 API 操作如下:
UDC
中断处理程序分析
- USB 设备控制器使用
struct dwc3_event
,这个数据结构用来描述usb
设备控制器事件。具体内核如下:
- 事件缓冲区使用数据结构
dwc3_event_buffer
来描述:
评论