【发布时间】:2018-06-25 10:45:59
【问题描述】:
PCIe ECAM 是否与仅映射到内存而不是 I/O 的“PCI-Compatible Configuration Registers”完全相同?
在我看来,PCIe 使用与传统 PCI 相同的配置机制:[1]
| 31 | 30 - 24 | 23 - 16 | 15 - 11 | 10 - 8 | 7 - 2 | 1 - 0 |
| Enable | Reserved | Bus Nr | Device Nr | Function Nr | Register Nr | 00 |
但在 PCIe 中,您可以使用保留字节来寻址函数的更多寄存器。 这是正确的吗?
在第 7.2.1 [2] 节中,ECAM 被定义为:
| 27 - 20 | 19 - 15 | 14 - 12 | 11 - 8 | 7 - 2 | 1 - 0 |
| Bus Nr | Dev Nr | Function Nr | Ext. Register Nr | Register Nr | Byte Enable |
它看起来与常规配置非常相似。 只有保留位被转移到它们在 PCIe 中扩展的寄存器号。 但我可以像旧的一样使用它们吗?只在内存空间而不是IO空间中寻址?
[1]https://wiki.osdev.o/PCI#Configuration_Space_Access_Mechanism_.231 [2] 在 PCI Express Base Specification, Rev. 4.0 Version 1.0
【问题讨论】:
标签: pci pci-e memory-mapping