ZHDA250 July   2026 TUSB7320 , TUSB7340

 

  1.   1
  2.   摘要
  3.   商标
  4. 1简介
  5. 2硬件配置和设置
  6. 3软件准备及环境设置
  7. 4存储器映射 I/O (MMIO) 寄存器配置
  8. 5总结
  9. 6参考资料

存储器映射 I/O (MMIO) 寄存器配置

要在不依赖高级内核驱动程序的情况下强制 TUSB7320/TUSB7340 下行端口进入 USB 2.0 合规性模式,软件可以直接操作映射到系统存储器中的 xHCI 操作寄存器。本节利用 ⁠busybox devmem⁠ 实用程序直接对物理存储器地址执行低级读取/写入操作。

执行 ⁠lspci⁠ 以在 PCI 总线上找到主机控制器

在与硬件内存空间交互之前,扫描 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 控制器

在强制各个端口进入电气合规性测试模式之前,必须停止 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

发送 USB 2.0 测试图形

成功对端口进行时序控制后,通过写入相关测试寄存器空间内的 ⁠Port Test Control⁠ 字段来选择所需的合规性测试模式(偏移量 ⁠+ 0x4⁠ 来自基本端口偏移)。

要发送连续的 USB 2.0 高速测试数据包模式(电气眼图分析所必需),请执行以下 32 位命令:

sudo busybox devmem <Base_Address + Port_Offset + 0x4> 32 0x40000000

成功执行后,目标端口的物理层 (PHY) 将立即启动连续图形生成。

物理端口地址

要测试备用物理端口,请根据下表移动目标存储器地址:

表 4-1 TUSB7320/TUSB7340 下行端口寄存器偏移
端口 控制地址 测试命令地址
1 0x0420 0x0424
2 0x0430 0x0434
3 0x0440 (1) 0x0444 (1)
4 0x0450 (1) 0x0454 (1)
  1. 仅限 TUSB7340

执行示例

本节介绍了端口 1 的实际实施情况。演练是从使用标准 Ubuntu 平台的实时测试环境中捕获的。

  1. 运行 ⁠lspci⁠ 发现命令会得到:
     PCI 地址的查找命令图 4-1 PCI 地址的查找命令
     基址命令图 4-2 基址命令

    提取的关键终端输出:

    • PCI 地址 (BDF): ⁠01:00.0
    • 64 位基址 (BAR):⁠0xf79f0000⁠(从 f79f0000的存储区开始)
  2. 完整测试数据包触发命令序列。使用提取的基址 (⁠0xf79f0000⁠),将端口 1(控制地址 ⁠0x420、测试命令地址 0x424⁠)触发到测试数据包模式的确切寄存器执行日志详情如下:
     用于触发测试数据包的命令图 4-3 用于触发测试数据包的命令