26. USB¶
本章配套视频介绍:

《26-鲁班猫USB-OTG功能切换》
https://www.bilibili.com/video/BV1Cs4y1e7Bc
26.1. USB-OTG功能切换¶
usb设备是区分主从的,其中host是主设备 device是从设备。USB-otg则能够进行主从切换。
从设备,比如u盘,它只能被控制,不能主动去控制别的usb设备。而电脑的usb接口则作为主设备,可以控制从设备。
lubancat-RK3576系列板卡的typeC口的OTG具有硬件切换电路,可以自动切换host/device,而USB A口的OTG不具有切换电路,默认做HOST,如果需要切换Device需要软件切换。
26.1.1. typeC口的OTG软件切换¶
typeC口具有硬件切换电路,不需要软件进行配置,默认可以自动进行切换,为了教程完整性以下也作软件切换说明:
不需要修改设备树,可以直接在应用层进行切换,命令如下:
1 2 3 4 5 6 7 8 | #查看当前模式
cat /sys/kernel/debug/usb/23000000.usb/mode
#设置为Host
sudo sh -c "echo host > /sys/kernel/debug/usb/23000000.usb/mode"
#设置为device
sudo sh -c "echo device > /sys/kernel/debug/usb/23000000.usb/mode"
|
26.2. USB-OTG配置功能(usb gadget)¶
26.2.1. 配置文件及参数¶
/etc/init.d/.usb_config 默认配置文件,系统启动时调用
/usr/bin/usbdevice 服务配置脚本,使用调用
/usr/bin/usbdevice {start|stop|restart}
26.2.2. 功能配置¶
可配置的功能
usb_adb_en - ADB 调试
usb_rndis_en - RNDIS USB模拟以太网
usb_acm_en - ACM USB虚拟串口
usb_ums_en - UMS 虚拟存储设备
usb_uac1_en - UAC 虚拟声卡
usb_uac2_en - UAC 虚拟声卡
26.2.3. ADB 调试¶
1 2 3 4 5 | #配置功能
echo usb_adb_en > /etc/init.d/.usb_config
#应用功能(使用下面的指令或者重启)
/usr/bin/usbdevice restart
|
26.2.4. RNDIS USB模拟以太网¶
1 2 3 4 5 | #配置功能
echo usb_rndis_en > /etc/init.d/.usb_config
#应用功能(使用下面的指令或者重启)
/usr/bin/usbdevice restart
|
26.2.5. ACM USB虚拟串口¶
使能ACM后,可以在Device上看到/dev/ttyGS0设备,PC上看到/dev/ttyACM0设备
1 2 3 4 5 | #配置功能
echo usb_acm_en > /etc/init.d/.usb_config
#应用功能-使用下面的指令或者重启
/usr/bin/usbdevice restart
|
26.2.6. UMS 虚拟存储设备¶
将板卡文件系统中的一个分区或一个img镜像挂载到PC上
推荐使用img镜像挂载,使用以下配置自动生成img文件
1 2 3 4 5 6 7 8 9 | #配置功能
echo usb_ums_en > /etc/init.d/.usb_config
echo "ums_block=/ums_shared.img" >> /etc/init.d/.usb_config
echo "ums_block_size=8" >> /etc/init.d/.usb_config
echo "ums_block_type=fat" >> /etc/init.d/.usb_config
echo "ums_block_auto_mount=on" >> /etc/init.d/.usb_config
#应用功能(使用下面的指令或者重启)
/usr/bin/usbdevice restart
|
26.2.7. UAC 虚拟声卡¶
UAC通过USB虚拟标准PCM接口给Host设备,实现Device和Host之间音频互传功能。
UAC分为UAC1和UAC2,UAC2和UAC1有以下区别: UAC2比UAC1具有更高的带宽(各平台实现略有不同,以实测为准) Windows 7及部分Windows 10系统默认不支持UAC2,需要手动安装驱动,但都支持UAC1
1 2 3 4 5 6 7 8 | #配置功能
echo usb_uac1_en > /etc/init.d/.usb_config
#或
echo usb_uac2_en > /etc/init.d/.usb_config
#应用功能(使用下面的指令或者重启)
/usr/bin/usbdevice restart
|