XHCI 1.2b 规范摘要(13)

在这里插入图片描述

系列文章目录


XHCI 1.2b 规范摘要(一)
XHCI 1.2b 规范摘要(二)
XHCI 1.2b 规范摘要(三)
XHCI 1.2b 规范摘要(四)
XHCI 1.2b 规范摘要(五)
XHCI 1.2b 规范摘要(六)
XHCI 1.2b 规范摘要(七)
XHCI 1.2b 规范摘要(八)
XHCI 1.2b 规范摘要(九)
XHCI 1.2b 规范摘要(十)
XHCI 1.2b 规范摘要(11)
XHCI 1.2b 规范摘要(12)
XHCI 1.2b 规范摘要(13)
XHCI 1.2b 规范摘要(14)
XHCI 1.2b 规范摘要(15)



7 xHCI 扩展功能

    xHCI Extended Capabilities

在这里插入图片描述

   xHC 使用类似 PCI 扩展功能的方法导出 xHCI 特定的扩展功能。如果 xHC 实现任何扩展功能,它会在 HCCPARAMS1 寄存器 (5.3.6) 的 xHCI 扩展功能指针 (xECP) 字段中指定一个非零值。此值是从 Base (基址)到 xHC MMIO 空间的偏移量,其中 Base (基址)是主机控制器的 MMIO 地址空间的开头。每个功能寄存器的格式如表 7-1 所示。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

7.1 USB 传统支持功能

    USB Legacy Support Capability

   xHC 提供的 USB 传统支持是可选的规范功能,适用于预操作系统软件 (BIOS) 和操作系统,用于协调 xHC 的所有权。

   此功能通过 xHCI 扩展功能指针 (xECP) 字段链接,并驻留在 MMIO 空间中。

在这里插入图片描述

   xECP 字段位于 HCCPARAMS1 寄存器中,请参阅第 5.3.6 节。

   注意:USB 传统支持功能寄存器位于辅助电源井中。有关复位条件,请参阅第 4.22.1 节。

7.1.1 USB 传统支持功能 (USBLEGSUP)

    USB Legacy Support Capability (USBLEGSUP)

   偏移: xECP + 00h
   属性:RO, RW
   大小:32 bits

   该寄存器是 xHCI 扩展功能(xHCI Extended Capability)寄存器。它包含一个特定功能部分和一个指向下一个 xHCI 扩展功能的指针。该寄存器由预操作系统软件 (BIOS) 和操作系统用于协调 xHC 的所有权。该寄存器位于辅助电源井(Aux Power well)中。

在这里插入图片描述

7.1.2 USB 传统支持控制/状态 (USBLEGCTLSTS)

    USB Legacy Support Control/Status (USBLEGCTLSTS)

   偏移: xECP + 04h
   属性:RO, RW, RW1C
   大小:32 bits

   预操作系统 (BIOS) 软件使用此寄存器来启用系统管理中断 (SMISystem Management Interrupts),以跟踪每个 xHCI/USB 事件。此寄存器的位 [21:16] 只是 USBSTS 寄存器 [5:0] 的影子位。此寄存器位于辅助电源井中。

在这里插入图片描述
在这里插入图片描述

注意:对于所有启用寄存器位,“1” = 启用,“0” = 禁用。
注意:SMI – 系统管理中断(System Management Interrupt)。
注意:BAR – 基址寄存器(Base Address Register)。
注意:MSE – 内存空间启用(Memory Space Enable)。
注意:SMI 与中断阈值无关。

7.2 xHCI 支持的协议功能

    xHCI Supported Protocol Capability

   所有 xHCI 实现都需要至少一个这些功能结构。支持多个总线协议的实现可以定义多个功能结构。有关更多信息,请参阅第 4.19.7 节。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7.2.1 协议速度 ID (PSI)

    Protocol Speed ID (PSI)

   在 xHCI 支持的协议功能数据结构中,协议速度 ID (PSI) Dword 紧跟偏移量为 10h 的 Dword。表 7-10 定义了 PSI Dword 的字段。

在这里插入图片描述
在这里插入图片描述

7.2.2 支持的协议

    Supported Protocols

   表 7-11 列出了本规范中定义的支持协议。

在这里插入图片描述

7.3 HCI 扩展电源管理功能

    HCI Extended Power Management Capability

   对于不支持基于 PCI 的系统接口的所有 xHC 实现,此功能都是必需的。

   xHCI 扩展电源管理功能应使用 PCI PM 规范第 3.2 节中定义的电源管理寄存器块定义格式,但有以下例外。对于 xHCI,寄存器中 “Next Capability Pointer” 字段的定义已从 PCI 定义中修改。寄存器的 “Next Capability Pointer” 非零值表示从此 32 位字到第一个扩展功能的开头的相对偏移量(以 32 位字为单位)。

   注意:有关寄存器定义和结构组织的详细信息,请参阅第 5.2.7 节。

在这里插入图片描述

7.4 xHCI 扩展消息中断功能

    xHCI Extended Message Interrupt Capability

    对于不支持基于 PCI 的系统接口的所有 xHC 实现,此功能或 xHCI 消息中断功能都是必需的。选择取决于 xHC 实现。

    xHCI 扩展消息中断功能应使用 PCI 规范第 6.8.2 节中定义的 MSI-X 功能和表结构的格式,但有以下例外。对于 xHCI,寄存器中 “Next Capability Pointer” 字段的定义已从 PCI 定义中修改。寄存器的 “Next Capability Pointer” 非零值表示从此 32 位字到第一个扩展功能的开头的相对偏移量(以 32 位字为单位)。

    注意:有关寄存器定义和结构组织的详细信息,请参阅第 5.2.8 节。

在这里插入图片描述

7.5 xHCI 消息中断能力

    xHCI Message Interrupt Capability

    对于不支持基于 PCI 的系统接口的所有 xHC 实现,此功能或 xHCI 消息中断功能都是必需的。选择取决于 xHC 实现。

    xHCI 消息中断功能应使用 PCI 规范第 6.8.1 节中定义的 MSI 功能结构的格式,但有以下例外。对于 xHCI,寄存器中 “Next Capability Pointer” 字段的定义已从 PCI 定义中修改。寄存器的 “Next Capability Pointer” 非零值表示从此 32 位字到第一个扩展功能的开头的相对偏移量(以 32 位字为单位)。

    注意:有关寄存器定义和结构组织的详细信息,请参阅第 5.2.8 节。

在这里插入图片描述

7.6 调试功能 (DbC)

    Debug Capability (DbC)

   xHC 提供的 USB 调试功能是一项可选功能,可通过 USB 进行低级系统调试。xHCI 调试功能提供了一种连接两个系统的方法,其中一个系统是调试主机,另一个是调试目标(被测系统)。

   本节介绍调试目标用于向调试主机呈现调试设备的 xHCI USB 调试功能。调试设备完全符合 USB 框架。调试设备在调试主机和调试目标之间提供相当于高性能全双工串行链路的功能。

   USB 调试功能提供的接口完全独立于本规范其他部分中描述的 xHCI 接口。本节介绍作为 xHCI 兼容控制器的一部分的 USB3 调试功能所需的实现和行为。 xHCI USB 调试功能的具体功能如下:

  • xHCI USB 调试功能提供的接口独立于操作系统使用的标准 xHCI 接口,例如,USBCMD 寄存器 R/S 标志对调试功能的操作没有影响。

  • 如果 DbC 系统总线复位 (SBR) = ‘0’,则芯片硬件复位或主机控制器复位 (HCRST = ‘1’) 或轻型主机控制器复位 (LHCRST = ‘1’) 的断言应复位调试功能,或者如果 SBR = ‘1’,则芯片硬件复位、系统总线(例如,PCI RST# 的断言)或从 PCI PM D3hot 状态到 D0 状态的转换应复位 DbC。

  • 仅适用于支持增强型超高速的主机。

  • 调试功能会自动分配给第一个 xHCI 根集线器端口,该端口可检测到具有增强型超高速功能的根集线器或外部集线器的下游端口的连接。

  • 分配给调试功能的根集线器端口通过 xHCI 显示为功能齐全的根集线器端口,永远不会看到设备连接。

  • 只要端口未挂起且主机控制器处于 D0 电源状态,调试功能即可运行。

  • 调试功能通过标准 USB3 集线器工作,允许使用单个主机调试大量系统。

  • 支持高带宽数据传输。

    此功能通过 xHCI 扩展功能指针 (xECP) 字段链接,并驻留在 MMIO 空间中。只要有可能,调试功能就会尝试重用为 xHCI 架构定义的逻辑块。例如,调试功能事件环管理寄存器块的操作和定义与第 5.5.2.3 节中定义的 xHCI 事件环寄存器相同,只是它提供了专用于调试功能的事件环。

    由于调试功能为 USB 提供了一个“设备端”接口,用于管理设备的上游端口,而不是根集线器的下游端口,因此调试功能中的某些寄存器定义可能看起来与 xHCI 中的非常相似,但它们可能存在细微的差异以支持“设备端”操作。例如,调试功能 DCPORTSC 寄存器中的许多字段与 xHCI PORTSC 寄存器中的字段同名,但它们的工作方式不同,因为 DCPORTSC 寄存器应管理“设备端”操作。

    调试功能还利用 xHCI 端点上下文数据结构;但是,它们的组织与 xHCI 不同。

    注意:阅读以下部分中的寄存器定义时,请记住调试功能的“设备端”差异。


   
 




### XHCI USB 断开解决方案 #### 问题分析 RK3588 芯片在使用过程中遇到的 USB 3.0 xHCI-HCD 控制器外接5G通讯模块偶尔挂死的问题,主要表现为 USB 设备失去响应且无法自动恢复,需重启系统才能恢复正常工作[^1]。 #### 解决方法 ##### 临时解决措施 对于暂时性的 USB 端口失效情况,可以通过重新加载内核模块的方式尝试解决问题: ```bash sudo modprobe -r xhci_hcd sudo modprobe xhci_hcd ``` 这会卸载并重新加载 xHCI 主机控制器驱动程序,可能使失灵的 USB 端口恢复正常功能。 ##### 持久化配置调整 为了防止此类问题频繁发生,建议修改系统的持久化设置,在 `/etc/modprobe.d/xhci.conf` 文件中加入以下参数: ```bash options xhci_hcd link_state=0 ``` 上述配置可以禁用链接状态管理 (Link State Management),从而减少因低功耗模式切换引起的不稳定现象。 另外,还可以考虑增加 `reset_on_resume=1` 参数以确保从休眠唤醒时重置 HCD: ```bash options xhci_hcd reset_on_resume=1 ``` ##### 日志监控与调试 启用更详细的日志记录有助于诊断潜在原因。编辑 GRUB 配置文件 (`/etc/default/grub`) 并添加或修改 kernel 行如下: ```bash GRUB_CMDLINE_LINUX="... pci=noaer loglevel=7" ``` 更新引导装载程序配置后执行 `update-grub` 命令保存更改,并查看 dmesg 输出寻找异常信息。 ##### 固件升级 如果硬件本身存在缺陷,则应联系制造商获取最新版本的固件更新包,并按照官方指南完成刷写过程[^3]。 ##### 替代方案 当以上手段均未能有效改善状况时,评估更换其他品牌型号的扩展卡或者转接头作为替代选项;同时检查主板BIOS/UEFI 设置是否存在影响USB性能的相关项[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值