我需要帮助来理解 PCIe 枚举
PCIe 将 IO 映射 IO 更改为内存映射 IO。PCIe 规范引入了使用 MMIO 进行配置读取的增强机制。由于 PCIe 知道配置寄存器的内存地址,因此 PCIe 使用内存读取来执行配置读取事务。
在枚举期间,PCIe 端点未分配给内存地址。(甚至未分配给 BDF。)为了分配 BDF,CPU 会请求供应商 ID 以判断 PCIe 端点是否有效。如果 PCIe 端点发送有效的供应商 ID,则 CPU 会为 PCIe 端点分配 BDF,并将内存地址写入配置 BAR 以进行内存映射 IO。
为了获取供应商 ID,我了解 CPU 使用 IO 写入地址端口(位于 IO 映射 0x0CF8 中)和 IO 从数据端口读取(位于 IO 映射 0xCFC 中)。
但是 ARM CPU 只有内存映射(没有 IO 映射),那么它如何请求供应商 ID?使用哪种类型的 TLP 数据包?
如果您能解释一下没有 IO 映射的 PCIe 数据包中的枚举过程,我将不胜感激。