Usr*_*sr1 1 memory-mapping pci pci-e
例如,假设 PCIe 端点请求 1 MB (MMIO) 内存,BIOS 在枚举过程中将其映射到系统内存映射(内存地址空间)。
因此,每当 CPU 访问该内存区域时,它将被定向到端点设备。我是 PCIe 新手,这是我对如何使用 MMIO(来自系统内存映射)定位 PCIe 设备的理解。
我在某处读到 PCIe 总线使用 PCI 地址空间。那么 PCI 地址空间到底在这个过程中发挥什么作用呢?PCI 地址空间存在于哪里?
举例说明会更有帮助。
PCI 支持 3 个地址空间:
1. PCI 配置空间
2. I/O 空间
3. MMIO 空间
访问每个地址空间的方法取决于 PCI 总线所连接的系统。
在 x86 系统上,CPU 使用编程到设备 BAR 中的相同物理地址直接访问 PCI MMIO。在这种情况下,PCI 地址空间与CPU 物理地址空间相匹配。
x86 系统上的 PCI 配置空间可以通过软件通过以下两种方式访问:
1. 将 PCI 配置空间寄存器地址写入 I/O 端口 0cf8h,并使用 I/O 端口 0cfch 读取或写入寄存器值。
2. 在任何最新的系统上,通过使用直接 MMIO 到特定于平台的地址。在这种情况下,PCI寄存器地址被添加到MMIO区域的基址上以形成CPU使用的物理地址。
在其他类型的系统上,访问每个 PCI 地址空间的方法可能不同。例如,CPU 可能需要使用 CPU 物理地址空间中的间隙来访问 PCI MMIO 空间,类似于 x86 系统上 PCI 配置空间访问的方式。在这样的系统上,PCI 地址空间与CPU 物理地址空间不同。
| 归档时间: |
|
| 查看次数: |
4407 次 |
| 最近记录: |