13. USB

下表为LubanCat-H618系列板卡的usb资源。

usb

板卡名

USB3.0

USB2.0

USB2.0-OTG

LubanCat-A1

Type-A x 3

Type-C x 1 或Type-A x 1

13.1. USB速度测试

usb2.0速度测试

板卡名

写速度

读速度

LubanCat-A1

39.3MB/s

41.9MB/s

13.2. USB-OTG功能切换

usb设备是区分主从的,其中host是主设备,device是从设备。

从设备,比如u盘,他只能被控制,不能主动去控制别的usb设备。而电脑的usb接口则作为主设备,可以控制从设备。

  • LubanCat-A1系列未配备自动切换电路,是因为LubanCat-A1系列的其中一个usb口和电源type-c接口复用。

13.2.1. USB-OTG手动切换(LubanCat-A1、LubanCat-A1 IO)

LubanCat-A1/A1 IO想要使用以下红框内的Type-C接口或Type-A接口功能,需要拨动开关进行手动切换,拨码位于Type-A接口的背面。其余Type-A接口接口默认都是作为host设备。下图以LubanCat-A1为例

重要

USB-OTG切换开关可以理解成物理接口的切换开关。切换到Type-A接口方向时,主控的USB0信号通往Type-A接口;切换到Type-C接口方向时,主控的USB0信号通往Type-C接口。

注意

默认状态下,OTG控制器的模式是根据USB-OTG切换开关电平信号(USB_ID)来切换的。即,USB-OTG切换开关拨到Type-A接口方向表示开启Type-A Host功能,拨到Type-C接口方向表示开启Type-C Device功能。

../../../_images/USB-OTG.jpg

可以输入以下命令查看OTG的启用情况:

1
2
3
cat /sys/devices/platform/soc@3000000/soc@3000000\:usbc0@0/otg_role
#默认模式下,如果返回的是usb_device,表示开启了Type-C Device功能
#默认模式下,如果返回的是usb_host,表示开启了Type-A Host功能

13.2.2. 手动切换OTG控制器模式

下面是手动切换OTG控制器模式的操作。

危险

手动切换OTG控制器模式后,将无法像默认模式一样根据USB_ID切换OTG模式,请谨慎操作。

1
2
3
4
#开启OTG Device功能
echo usb_device > /sys/devices/platform/soc@3000000/soc@3000000\:usbc0@0/otg_role
#开启OTG Host功能
echo usb_host > /sys/devices/platform/soc@3000000/soc@3000000\:usbc0@0/otg_role

注意

以上命令仅切换OTG控制器的模式,具体OTG控制器的功能应用到哪个物理接口,请根据USB-OTG拨码切换开关位置来确定。

13.3. USB-OTG配置功能(usb gadget)

13.3.1. 配置文件及参数

  1. /etc/init.d/.usb_config 默认配置文件,系统启动时调用

  2. /tmp/.usb_config 默认配置文件的复制文件,系统启动后优先级高于默认配置文件,重启后失效

  3. /usr/bin/usbdevice 服务配置脚本,使用调用 /usr/bin/usbdevice {start|stop|restart}

13.3.2. 功能配置

可配置的功能

  • usb_adb_en - ADB 调试

  • usb_acm_en - ACM USB虚拟串口

13.3.3. ADB 调试

1
2
3
4
5
#配置功能
echo usb_adb_en > /etc/init.d/.usb_config

#应用功能(使用下面的指令或者重启)
/usr/bin/usbdevice restart

13.3.4. ACM USB虚拟串口

使能ACM后,可以在Device上看到/dev/ttyGS0设备,PC上看到/dev/ttyACM0设备

13.3.4.1. 临时配置(重启后功能消失)

1
2
3
4
5
#配置功能
echo usb_acm_en > /tmp/.usb_config

#应用功能
/usr/bin/usbdevice restart

13.3.4.2. 永久配置

1
2
3
4
5
#配置功能
echo usb_acm_en > /etc/init.d/.usb_config

#应用功能-使用下面的指令或者重启
/usr/bin/usbdevice restart