ZHDA250 July 2026 TUSB7320 , TUSB7340
要在不依赖高级内核驱动程序的情况下强制 TUSB7320/TUSB7340 下行端口进入 USB 2.0 合规性模式,软件可以直接操作映射到系统存储器中的 xHCI 操作寄存器。本节利用 busybox devmem 实用程序直接对物理存储器地址执行低级读取/写入操作。
在与硬件内存空间交互之前,扫描 PCI 总线拓扑以识别系统架构分配给 Texas Instruments 控制器的特定总线、设备及功能 (BDF) 地址。
执行基本的 lspci 实用程序以列出连接到 PCI 通道的所有外围设备组件:
lspci找到目标条目(例如 01:00.0)后,使用特定的 BDF 时隙和详细的十六进制转储参数重新运行命令,以提取 64 位基址寄存器 (BAR) 映射:
sudo lspci -s <BUS:DEV.FUN> -vxx从输出字段中标识与 xHCI 操作寄存器相对应的 64 位存储器基地址。请注意,控制器分配多个存储器区域;选择使用 [size=64K] 指定的地址条目(例如,f79f0000 处的存储器)。该地址用作所有后续寄存器偏移计算的基础基地址。
在强制各个端口进入电气合规性测试模式之前,必须停止 xHCI 控制器,以防止运行的软件循环或中断例程覆盖寄存器状态。
通过将运行/停止位清除至 0,修改 USB 命令 (USBCMD) 寄存器(从基地址起偏移 0x20)。执行以下 8 位 devmem 命令:
sudo busybox devmem <Base_Address + 0x20> 8 4为了正确对端口逻辑进行下电上电并使收发器为合规性模式转换做好准备,必须取消特定下行端口的电源。
找到目标端口的端口状态和控制 (PORTSC) 寄存器偏移量。写入以使用 32 位宽度命令清除端口功率位:
sudo busybox devmem <Base_Address + Port_Offset> 32 0x0A000080成功对端口进行时序控制后,通过写入相关测试寄存器空间内的 Port Test Control 字段来选择所需的合规性测试模式(偏移量 + 0x4 来自基本端口偏移)。
要发送连续的 USB 2.0 高速测试数据包模式(电气眼图分析所必需),请执行以下 32 位命令:
sudo busybox devmem <Base_Address + Port_Offset + 0x4> 32 0x40000000成功执行后,目标端口的物理层 (PHY) 将立即启动连续图形生成。
要测试备用物理端口,请根据下表移动目标存储器地址:
| 端口 | 控制地址 | 测试命令地址 |
|---|---|---|
| 1 | 0x0420 | 0x0424 |
| 2 | 0x0430 | 0x0434 |
| 3 | 0x0440 (1) | 0x0444 (1) |
| 4 | 0x0450 (1) | 0x0454 (1) |
本节介绍了端口 1 的实际实施情况。演练是从使用标准 Ubuntu 平台的实时测试环境中捕获的。
图 4-1 PCI 地址的查找命令
图 4-2 基址命令提取的关键终端输出:
图 4-3 用于触发测试数据包的命令