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