4.3.26. X5 USB 使用手册
4.3.26.1. 介绍
x5 usb 有两个控制器
都支持 drd 主从双角色模式
其中一个接了 usb2.0 phy, 一个接了 usb3.0 phy
故一个控制器只支持 usb2.0, 另一个支持 usb3.0
4.3.26.2. 主从切换
如何进行主从模式切换 ?
如果支持 otg 的接口 , 插入 otg 线 , 通过 usb id 管脚状态 , Linux 系统会切换 usb 模式到主机模式。
其余可以通过设备树 dr_mode 进行静态配置。
dr_mode = "otg"; // peripheral/host/otg
可以通过文件节点进行主从控制
# usb3.0 口切换到从模式 echo device > /sys/class/usb_role/35100000.usb-role-switch/role # usb3.0 口切换到主机模式 echo host > /sys/class/usb_role/35100000.usb-role-switch/role # usb2.0 口切换到从模式 echo device > /sys/class/usb_role/35300000.usb-role-switch/role # usb2.0 口切换到主机模式 echo host > /sys/class/usb_role/35300000.usb-role-switch/role
4.3.26.3. 主机模式
默认支持 U 盘 , 鼠标 , 键盘 , uvc, 以及常见 usb 转串口 , usb 转网口等外设。
如果有其他设备支持需求 , 可自行打开对应 config 配置和移植相关设备驱动。
4.3.26.4. 设备模式
请参考上文主从切换 , 确保 usb 控制器工作在设备模式。
通常和开发板接口形态有关。可参考对应硬件设计。
提供了 usb-gadget.sh 和 usb3.0-gadget.sh 脚本作为 usb 装置启动的参考脚本。
可利用该脚本启动常见如 adb, rndis 等形态设备。
如客户有定制的设备形态 , 可参考或自行开发。
常见形态装置命令
adb 设备
# 启动 usb2.0 port adb 装置 , 其实默认启动就是 usb2.0 port adb 形态。 /etc/init.d/usb-gadget.sh stop /etc/init.d/usb-gadget.sh start adb # 关闭 usb2.0 设备 , 启动 usb3.0 adb 装置 /etc/init.d/usb-gadget.sh stop /etc/init.d/usb3.0-gadget.sh stop /etc/init.d/usb3.0-gadget.sh start adb
rndis 虚拟网卡 # win10 建议用 rndis 虚拟网卡
# 开启 usb2.0 port rndis 虚拟网口设备 /etc/init.d/usb-gadget.sh stop /etc/init.d/usb-gadget.sh start rndis # 启动 usb3.0 port rndis 虚拟网卡装置 /etc/init.d/usb3.0-gadget.sh stop /etc/init.d/usb3.0-gadget.sh start rndis
ecm 虚拟网卡 # ubuntu/linux 系统建议用 ecm 等虚拟网卡
# 开启 usb2.0 port ecm 虚拟网口设备 /etc/init.d/usb-gadget.sh stop /etc/init.d/usb-gadget.sh start ecm # 启动 usb3.0 port ecm 虚拟网卡装置 /etc/init.d/usb3.0-gadget.sh stop /etc/init.d/usb3.0-gadget.sh start ecm
备注 :
目前 usb2.0 和 usb3.0 port 口分别 / 同时起装置的一些限制 目前有些设备 , 例如 adb, 有用户态的 adbd deamon 程序 , 故暂不支持同时起两路 adb 通路。 需要关闭一路设备后 , 再启动另一路设备。 其余不冲突的 , 例如两路 rndis, 或者一路 adb + 一路 rndis, 理论上是可以同时启动的。 以实际使用情况为准。
关于 rndis, ecm, ncm 等各类 usb 虚拟网卡协议 windows 主机建议使用 rndis 虚拟网卡设备 , 其他如 ecm 等 win10 驱动还没做 , 得去网上搜索并制作合适的驱动 ubuntu 或类 linux 主机可使用 ecm 等虚拟网卡装置
4.3.26.5. USB 一致性测试
USB 一致性测试是为了确保 USB 设备在设计、制造和功能上严格遵循USB标准协议(由 USB-IF 协会制定),从而保障设备间的兼容性和稳定性。该测试主要围绕物理层(信号质量、电气特性)和协议层(数据传输规范)展开,是设备获得USB认证标志(如SuperSpeed USB)的必要条件。
USB 2.0
硬件连接

软件配置
原理说明
X5 USB 2.0 Host 通过配置 portpmsc 寄存器进入 Test Packet Mode。
操作示例
X5 USB 2.0 通过拉低 USB ID 管脚,即AON_USB2_ID 管脚来进入 Host 模式。可以通过接入 USB OTG 线实现。USB OTG 线定义如下:

配置 Test Packet Mode
# usbcmd bit[1] reset assert
devmem 0x35300020 32 0x7
# 等待 1 秒
sleep 1
# usbcmd bit[1] reset de-assert
devmem 0x35300020 32 0x5
# usb2.0 portpmsc disable test mode
devmem 0x35300024 32 0x0
# usb2.0 portpmsc enable test packet mode
devmem 0x35300024 32 0x40000000
验证端口状态
cat /sys/kernel/debug/usb/xhci/xhci-hcd.4.auto/ports/port01/portsc
Powered Connected Enable Link:Test mode PortSpeed:3 Change: CSC Wake:
通过打印信息得到: USB2.0 Host 进入 Test Packet Mode
USB 3.0
硬件连接

软件配置
原理说明
USB3.0 Host 通过配置 portpmsc 寄存器进入 Compliance 模式
操作示例
USB3.0 启动后自动工作在 Host 模式
配置 Compliance 模式
# usbcmd bit[1] reset assert
devmem 0x35100020 32 0x7
# 等待 1 秒
sleep 1
# usbcmd bit[1] reset de-assert
devmem 0x35100020 32 0x5
# portpmsc set to compliance mode
devmem 0x3510c2c0 32 0x140
# pipectrl host reset
devmem 0x3510c2c0 32 0x410c0102
验证端口状态
cat /sys/kernel/debug/usb/xhci/xhci-hcd.3.auto/ports/port02/portsc
Powered-off Not-connected Disabled Link:Compliance mode PortSpeed:0 Change: Wake:
通过打印信息得到: USB3.0 Host 进入 Test Compliance Mode
USB 眼图测试
USB 眼图测试结果如下
