4.3.25. X5 USB 使用手册
4.3.25.1. 介绍
x5 usb 有
两个 控制器 都
支持 drd 主从 双 角色 模式 其中
一个 接 了 usb2.0 phy, 一个 接 了 usb3.0 phy 故
一个 控制器 只 支持 usb2.0, 另 一个 支持 usb3.0
4.3.25.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.25.3. 主机模式
默认
支持 U 盘 , 鼠标 , 键盘 , uvc, 以及 常见 usb 转 串口 , usb 转网 口 等 外设。 如果
有 其他 设备 支持 需求 , 可 自行 打开 对应 config 配置 和 移植 相关 设备 驱动。
4.3.25.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.25.5. USB 一致性测试
USB 一致性
USB 2.0
硬件连接

软件配置
原理
X5 USB 2.0 Host 通过
操作
X5 USB 2.0 通过AON_USB2_ID 管脚

配置 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 0x35300424 32 0x0
# usb2.0 portpmsc enable test packet mode
devmem 0x35300424 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:
通过
USB 3.0
硬件连接

软件配置
原理
USB3.0 Host 通过
操作
USB3.0 启动
配置 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:
通过
USB 眼图测试
USB 眼图
