实验二:PCIe 读取 xhci 控制器

PCIe 主桥枚举连接到总线上的设备,发现 USB 3.0 主机控制器设备

  • 执行 PCIe 总线扫描以检测连接到总线上的所有设备。通常通过读取配置空间中的特定寄存器来实现。
  • 对于检测到的设备,需要解析其配置空间以获取设备的厂商 ID、设备 ID、类别码等重要信息。
  • USB 3.0 主机控制器设备的类别码通常是 0x0C(Serial bus controller)。

枚举并记录已连接设备

  1. 初始化根端口:PCIe桥首先会初始化其自身作为根端口,将其配置为根端口的相关寄存器。

  2. 遍历子端口:PCIe桥会依次访问其下方的子端口。这些子端口可以是其他PCIe桥或直接连接的PCI设备。

  3. 检测链接状态:对于每个子端口,PCIe桥会检测其链路状态,以确定是否有设备连接到该端口上。

  4. 链接重播(Link Retraining):如果有设备连接到子端口上,并且链路状态正常,则PCIe桥可能会执行链接重播操作,以确保链路稳定和可靠。

  5. 记录已连接设备:当PCIe桥确定子端口连接了一个PCI设备时,它会记录该设备的信息,如设备ID、厂商ID等。

  6. 递归遍历:如果子端口连接的是另一个PCIe桥,那么PCIe桥会递归地遍历该子桥的子端口,以继续检测更深层次的PCI设备。