本文基于触觉智能RK3506开发板,为大家介绍配置USB复合设备,本章节将介绍RNDIS和UAC复合设备数据交互。
RNDIS
RNDIS是一种基于USB的网络连接协议,核心作用是将USB设备虚拟成网卡,让设备通过USB Host链路实现与主机的网络通信。兼具低成本、即插即用的特点,在嵌入式、工业、消费电子等领域应用广泛。
在/kernel/arch/arm/configs/rk3506_defconfig文件中,增加如下配置:
# ush_otg_rndis CONFIG_USB_F_RNDIS=m CONFIG_USB_ETH=m CONFIG_USB_ETH_RNDIS=y
成功添加后重新编译kernel,命令如下:
cd ./build.sh kernel
编译成功后,会生成u_ether.ko、usb_f_rndis.ko,将其拷贝至开发板的任意目录下,并进行安装,命令如下:
insmod u_ether.ko insmod usb_f_rndis.ko
执行以下命令,开启RNDIS功能:
echo usb_rndis_en > /etc/init.d/.usb_config /usr/bin/usbdevice restart
完成后,输入以下命令可以看到开发板上多出一块网卡
ifconfig
结果如下:
root@rk3506-buildroot:/root# ifconfig …… usb0 Link encap:Ethernet HWaddr F2:B6:FB:22:BC:EE UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:359 errors:0 dropped:69 overruns:0 frame:0 TX packets:5 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:74588 (72.8 KiB) TX bytes:1930 (1.8 KiB)
连接开发板的PC端也能识别出一块新的网卡:

PC端:

测试是否能ping通:

看到有对应返回数据,说明已成功完成配置。
UAC
UAC全称USB Audio Class,UAC通过USB虚拟标准PCM接⼝给USB Host设备连接,实现了音频设备与主机间的数据传输及控制方式。凭借即插即用、跨平台兼容等优势,广泛应用于消费电子、专业创作、嵌入式设备等多个领域。
在/kernel/arch/arm/configs/rk3506_defconfig文件中,增加如下配置:
# usb_uac1 CONFIG_USB_F_UAC1=m CONFIG_USB_CONFIGFS_F_FS=y CONFIG_USB_CONFIGFS_F_UAC1=y
成功添加后重新编译kernel,命令如下:
cd ./build.sh kernel
编译成功后,会生成u_audio.ko、usb_f_uac1.ko,将其拷贝至开发板的任意目录下,并进行安装,命令如下:
insmod u_audio.ko insmod usb_f_uac1.ko
执行以下命令,开启UAC功能:
echo usb_uac1_en > /etc/init.d/.usb_config /usr/bin/usbdevice restart
完成后,执行usb_f_rndis.ko可以识别如下声卡:
root@rk3506-buildroot:/root# aplay -l …… card 2: UAC1Gadget [UAC1_Gadget], device 0: UAC1_PCM [UAC1_PCM] Subdevices: 1/1 Subdevice #0 : subdevice #0
连接开发板的PC端也能识别出一个新的声音设备:

PC端:选择输出设备,选中Device设备(⼀般识别为Source/Sink,设备名与Windows版本相关) , 并打开播放器,播放⾳乐。


开发板端:执行以下命令,将UAC采样到的音频文件名称为test.wav:
root@rk3506-buildroot:/root# arecord -D hw:2,0 -r 48000 -c 2 -f S16_LE test.wav Recording WAVE 'test.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo ^CAborted by signal Interrupt...
开发板接上扬声器,用触觉智能RK3506开发板自带的8388声卡播放test.wav,查看采样是否正常:
root@rk3506-buildroot:/root# aplay -Dhw:0,0 ./test.wav Playing WAVE './test.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
PC端:选择输入设备:

开启PC端自带的录音软件开始录音:

开发板端播放音频文件指定到UAC声卡,命令如下:
root@rk3506-buildroot:/root# aplay -Dhw:2,0 ./test.wav
PC端通过自带扬声设备播放录音音频,查看音频是否正常:

看到音频播放,说明已成功完成配置。
全部0条评论
快来发表一下你的评论吧 !