USB 子系统(四)USB Gadget 驱动
USB 控制器可以呈现出两种不同的状态。USB 控制器作为 Host 时,称为 USB 主机控制器,使用 USB 主机控制器驱动。USB 控制器作为 Device 时,称为 USB 设备控制器,使用 UDC(usb device controller)驱动。
USB 控制器作为 Device 时,最上层的是 Gadget Function 驱动,代表了具体设备的驱动,如 U 盘、USB 串口、USB 虚拟网卡、UAC 驱动。Composite 层是一个可选的中间层,可通过一种配置或多种配置高效的支持多种功能的设备,简化了 USB 复合设备驱动的开发。目前最流行的是使用基于 Composite 和 configfs 实现的 USB gadget configfs,可在用户空间灵活的配置 USB 设备。UDC 驱动直接访问硬件,控制 USB 设备与 USB 主机之间的通信。