USB设备应用场景非常多,就是因为方便,而且很多还免驱。一般我们产品如果仅需要一种USB功能,如UAC、HID、ADB、MASS等系统都是直接支持的,直接配置下就可以轻松实现。
即使需要实现一些常用的组合设备功能,如CDC + MASS STORAGE linux系统也提供了对应的驱动。但如果我们想实现自定义USB的组合设备,就需要自己编写驱动了。本文将介绍如何实现USB AUDIO + CDC ACM组合设备功能,也就是UAC+ UART
说明:本文基于usb gadget legacy驱动方式实现
一、修改Kconfig 和 Makefile添加我们的配置
kernel\drivers\usb\gadget\legacy\Kconfig
在if TTY 和 endif 中添加
+config USB_G_ACM_UAC1
+ bool "USB AUDIO + CDC Serial"
+ depends on SND
+ default n
+ select USB_LIBCOMPOSITE
+ select USB_U_SERIAL
+ select USB_F_ACM
+ select SND_PCM
+ select GADGET_UAC1
+ select USB_F_UAC1_IAD
+ select USB_U_AUDIO
+ help
+ This option enables a configuration with UAC1, CDC
+ Serial functions available in the Multifunction
+ Composite Gadget.
+