全志linux开发 USB接口设置
2026/6/16 7:00:58 网站建设 项目流程
USB Gadget接口配置

Linux内核在设备端提供了Gadget Framework,允许开发板虚拟成各种USB外设:串口、网卡、音频设备、U盘、摄像头等。

​ 适用平台:Linux-4.9及同架构的全志SoCT507/H616等)

  • ACM(虚拟串口)
  • NCM(以太网网卡)
  • UAC1(音频设备)
  • ADBAndroid Debug Bridge
3.1、接口类型详解

核心结构

usb_gadget/g1/ ├── idVendor → 厂商 VID ├── idProduct → 产品 PID ├── strings/0x409/ → 设备字符串(序列号、制造商、产品名) ├── configs/c.1/ → 配置集合(可以有多个) │ ├── strings/0x409/configuration │ └── f1.acm → ../functions/acm.usb0 ├── functions/ → 功能函数目录 │ ├── acm.usb0 │ ├── ncm.usb0 │ ├── uac1.gs0 │ └── ffs.adb └── UDC → 绑定到实际 USB 控制器
3.1.1、ACM (Abstract Control Model — 虚拟串口)

​ 把USB设备虚拟为CDC ACM标准的串口,PC端识别为COM口,Linux端对应/dev/ttyGS0

配置关键模块

CONFIG_USB_CONFIGFS_ACM=y/mCONFIG_USB_F_ACM=y/mCONFIG_USB_U_SERIAL=y/m

ConfigFS配置示例

mkdir-p/sys/kernel/config/usb_gadget/g1/functions/acm.usb0ln-s/sys/kernel/config/usb_gadget/g1/functions/acm.usb0 /sys/kernel/config/usb_gadget/g1/configs/c.1/

使用

  • 板端写:echo hello > /dev/ttyGS0
  • PC端读:通过串口工具打开对应COM口。
  • 典型波特率115200 ~ 921600均可,延迟< 1 ms
3.1.2、NCMNetwork Control Model— 虚拟网卡)

功能

​ 将开发板虚拟为USB网卡,实现主机与设备间的IP通信(类似RNDIS,但NCM性能更高)。

配置关键模块

CONFIG_USB_CONFIGFS_NCM=y/mCONFIG_USB_F_NCM=y/mCONFIG_USB_U_ETH=y/m

ConfigFS配置示例

mkdir-p/sys/kernel/config/usb_gadget/g1/functions/ncm.usb0echo"02:12:34:56:78:9a">/sys/kernel/config/usb_gadget/g1/functions/ncm.usb0/dev_addrecho"06:12:34:56:78:9a">/sys/kernel/config/usb_gadget/g1/functions/ncm.usb0/host_addrln-s/sys/kernel/config/usb_gadget/g1/functions/ncm.usb0 /sys/kernel/config/usb_gadget/g1/configs/c.1/

使用

设备端会生成usb0网口:

ifconfigusb0192.168.42.2 up

PC端设置静态IP 192.168.42.1,即可ping通,支持SSHSCPHTTP等通信。

优势

  • 相比RNDISNCM采用CDC规范,驱动跨平台(Windows 10+LinuxmacOS均支持)。
  • 支持多frame打包,提高带宽利用率。
3.1.3、UAC1USB Audio Class 1.0

功能

​ 让板卡虚拟成标准USB声卡,PC端识别为 “USB Audio Device”,可作为录音或播放通道。

配置关键模块

CONFIG_USB_CONFIGFS_F_UAC1=y/mCONFIG_USB_F_UAC1=y/m

ConfigFS配置示例

mkdir-p/sys/kernel/config/usb_gadget/g1/functions/uac1.gs0# 可选参数# echo 48000 > /sys/kernel/config/usb_gadget/g1/functions/uac1.gs0/p_srate# echo 2 > /sys/kernel/config/usb_gadget/g1/functions/uac1.gs0/p_chmaskln-s/sys/kernel/config/usb_gadget/g1/functions/uac1.gs0 /sys/kernel/config/usb_gadget/g1/configs/c.1/

使用

  • aplay -l中会出现 “USB Audio Device”。
  • 可用ALSA接口读取或播放音频流。
  • 常用于语音输入/输出、AI语音网关、视频会议终端。

注意

  • 声道和采样率受限于USB带宽。
  • 若需双向音频,可启用p_*c_*参数分别控制Playback/Capture
3.1.4、ADBAndroid Debug Bridge,基于FunctionFS

功能

​ 通过USB实现主机ADB调试通道,用于Android或 基于Android系统的Linux设备。

配置关键模块

CONFIG_USB_CONFIGFS_F_FS=y/mCONFIG_USB_F_FS=y/m

ConfigFS配置示例

mkdir-p/dev/usb-ffs/adbmount-tfunctionfs adb /dev/usb-ffs/adbmkdir-p/sys/kernel/config/usb_gadget/g1/functions/ffs.adbln-s/sys/kernel/config/usb_gadget/g1/functions/ffs.adb /sys/kernel/config/usb_gadget/g1/configs/c.1/

使用

板端启动adbd

/usr/bin/adbd&

PC端执行:

adb devices

即可识别到设备。

特性

  • 通信层基于FunctionFS,速度快、稳定。
  • 可同时与ACMNCM并存。
3.1.5、配置方式
  1. 打开kernel配置页面

    cdcdkernel/linux-4.9/makeARCH=arm64 menuconfig
  2. 修改usb虚拟串口相关配置

    路径:Device Drivers → USB support → USB Gadget Support

    <M>USB Gadget Drivers(Serial Gadget(with CDC ACM and CDC OBEX support))--->

    路径:Device Drivers → USB support → USB Serial Converter support

    <M>USB driverforGSM and CDMA modems
  3. 保存并退出

  4. 编译并打包

    ./build.sh kernel&&./build.sh pack
3.2、复合设备(Composite Gadget

Linux 4.9ConfigFS支持多功能并存,只需在 同一gadget下创建多个function并链接到 同一个config

典型结构

functions/ ├── acm.usb0 ├── ncm.usb0 ├── uac1.gs0 └── ffs.adb configs/c.1/ ├── f1.acm ->../functions/acm.usb0 ├── f2.ncm ->../functions/ncm.usb0 ├── f3.uac1 ->../functions/uac1.gs0 └── f4.adb ->../functions/ffs.adb

内核通过Composite Framework自动合并接口描述符,主机端会看到多接口复合设备。

3.3、工作流程与启动顺序
  1. 加载核心模块
    modprobe libcomposite(加载ConfigFS支撑)

  2. 挂载configfs
    mount -t configfs none /sys/kernel/config

  3. 创建gadget目录
    /sys/kernel/config/usb_gadget/g1

  4. 设置VID/PID、字符串信息
    写入idVendoridProduct;创建strings/0x409/

  5. 创建configs/c.1并设定MaxPower等参数。

  6. 创建所需functionsacm/ncm/uac1/ffs.adb)。

  7. 符号链接 到config

  8. 绑定UDCUSB控制器):

    ls/sys/class/udc/echomusb-hdrc.1.auto>/sys/kernel/config/usb_gadget/g1/UDC

解绑时:

echo"">/sys/kernel/config/usb_gadget/g1/UDC
3.4、主机侧识别情况
FunctionWindows识别Linux识别节点macOS识别
ACMUSB Serial(COM x)/dev/ttyACM0/dev/tty.usbmodem
NCMUSB以太网适配器usb0支持
UAC1USB Audio DeviceALSA:card X支持
ADBAndroid Composite ADB Interface/dev/bus/usb/...支持

性能与延迟参考

模块吞吐延迟(典型)备注
ACM1–3 MB/s< 1 ms控制台调试、AT通信
NCM40–100 Mbps1–2 ms远程SSH/ADB复合
UAC144.1/48 kHz 16bit< 10 ms语音通道
ADB10–30 MB/s1–3 ms调试、文件传输

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询