raw-gadget - USB Raw Gadget-Linux USB Gadget子系统的底层接口

Created at: 2020-02-07 00:38:23
Language: C

原始小工具

注意:最有可能需要GadgetFS,而不是Raw Gadget。在这里看到差异。

USB Raw Gadget是Linux USB Gadget子系统的底层接口。它可以用于模拟具有特殊硬件的物理USB设备,也可以用于与Dummy HCD / UDC虚拟的硬件设备(对于正在运行的内核)。该存储库包含有关使用Raw Gadget的说明和示例

Raw Gadget已在合并到Mainline Linux内核中

5.7
。无需使用
5.7+
内核,请参阅dummy_hcdraw_gadget,以获取有关如何
insmod
在较早的内核上构建以及相应模块的信息。这些模块应与最低至的内核版本兼容
4.14
,请参见下表。

构建内核模块需要内核头文件。在桌面Ubuntu上,您可以通过安装安装它们

linux-headers-`uname -r`
。在Raspberry Pi Zero上,请遵循以下说明

USB设备控制器

USB Raw Gadget要求用户提供UDC设备和驱动程序名称,请参见示例

UDC设备名称可以在以下位置找到

/sys/class/udc/

$ ls /sys/class/udc/
dummy_udc.0

UDC驱动程序名称通常存在于

/sys/class/udc/$UDC/uevent

$ cat /sys/class/udc/dummy_udc.0/uevent
USB_UDC_NAME=dummy_udc

下表中的“工作”表示UDC通过了所提供的测试,该测试仅涵盖部分功能,因此存在局限性

硬件 核心 司机 设备 作品?
5.3.0-45-generic
dummy_udc
dummy_udc.0
树莓派零
4.14.97+
20980000.usb
20980000.usb
dwc2
BeagleBone黑色
4.19.94-ti-r42
musb-hdrc
musb-hdrc.0
大概
BeagleBone AI
4.14.108-ti-r131
48890000.usb
dwc3-gadget
还没
EC3380-AB
5.3.0-45-generic
net2280
0000:04:00.0
(例如)
不,
net2280
越野车
Odroid C2
3.14.79-116
dwc_otg_pcd
dwc2_a
不,内核太旧
海基960

去做

要研究的其他潜在修复/改进:

  • ep->maxburst
    ep->mult
    ep->maxpacket
    在小工具的驱动程序。
  • OTG支持。
  • 设置
    ep->dev
    ep
    分配。
  • 千万不要错过
    ep0_status
    ep_status
    通过
    dev
    ,从得到
    req
    代替。