本文基于触觉智能RV1126B核心板&开发板,为大家介绍配置USB复合设备配置实现,本章节将介绍RNDIS和UAC两种USB复合设备。
为了回馈大家对触觉智能的支持,关注触觉智能CSND公众号可获此开发板折扣。:、
RNDIS
RNDIS全称为Remote Network Driver Interface Specification,是USB设备类远程网络驱动程序接口规范中的一种。核心作用是将USB模拟成虚拟以太网适配器,让主机设备通过USB Host链路实现与主机的网络通信,如同连接物理网卡一样。广泛用于移动设备网络共享、嵌入式设备联网、虚拟网络接口等场景。
内核编译配置
在以下文件,
<SDK_TOP_PATH>/kernel-6.1/arch/arm64/configs/rockchip_linux_evb1126b_v1_defconfig
添加配置内容:
CONFIG_USB_ETH=y CONFIG_USB_F_RNDIS=y CONFIG_USB_ETH_RNDIS=y编译内核生成驱动镜像,命令如下:
cd <SDK_TOP_PATH> ./build.sh kernel编译成功后如下图,会生成uoot.ing,再将镜像烧录进开发板:
cd <SDK_TOP_PATH> ./build.sh kernel执行以下命令,开启RNDIS功能:
echo usb_rndis_en > /etc/init.d/.usb_config /usr/bin/usbdevice restart完成后,输入以下命令,可以看到开发板上多出一块网卡:
ifconfig连接开发板的,PC端也能识别出新的网卡设备:
若网卡无法识别,则需先关闭PC端的防火墙:
RNDIS功能测试
将PC和开发板端新识别出的网卡,手动配置于同一网段-192.168.1.X。
开发板端,输入命令:
ifconfig usb0 192.168.1.11PC端:
测开发板端和PC端互相能ping通网络:
看到有对应返回数据,说明已成功完成配置。
UAC
USB UAC(USB Audio Class,USB音频类)是USB设备类规范(USB-IF定义) 中专门针对音频设备的通信协议标准,用于规范USB接口的音频输入/输出设备(如麦克风、扬声器、耳机、声卡等)与主机的通信方式。UAC通过USB虚拟标准PCM接⼝给Host设备,实现Device和Host之间⾳频互传功能。
内核编译配置
在开发板
<SDK_TOP_PATH>/kernel-6.1/arch/arm64/configs/rockchip_linux_evb1126b_v1_defconfig文件中,增加如下配置:
CONFIG_USB_CONFIGFS_F_FS=y CONFIG_USB_CONFIGFS_F_UAC1=y CONFIG_USB_F_UAC1=y成功添加后重新编译内核,命令如下:
cd <SDK_TOP_PATH> ./build.sh kernel编译成功后,会生成boot.ing,烧录此内核镜像进开发板中:
执行以下命令,开启UAC功能:
echo usb_uac1_en > /etc/init.d/.usb_config /usr/bin/usbdevice restart完成后,执行aplay -l可以识别如下声卡:
连接开发板的PC端也能识别出一个新的声音设备:
UAC功能测试
PC端向开发板端播放音频文件,选择输出设备,选中Device设备(⼀般识别为Source/Sink,设备名与Windows版本相关) , 并打开播放器,播放⾳乐 。
开发板端:执行以下命令,将UAC采样到的音频文件名称为test.wav:
arecord -D hw:1,0 -r 48000 -c 2 -f S16_LE test.wav开发板接上扬声器,用触觉智能RV1126B开发板自带的8388声卡播放test.wav,查看采样是否正常:
PC端:选择输入设备:
开启PC端自带的录音软件开始录音:
开发板端播放音频文件,指定到UAC声卡,命令如下:
aplay -Dhw:1,0 ./test.wavPC端通过自带扬声设备播放录音音频,查看音频是否正常: