我读到每个PCI设备功能都有一组称为配置空间的寄存器,这个配置空间有256字节长。您可以使用以下两个端口映射的 I/O 地址来访问这些寄存器:
CONFIG_ADDRESS 0x3f8
CONFIG_DATA 0x3fc
Run Code Online (Sandbox Code Playgroud)
我的问题是,configuration space寄存器是否也映射到内存空间或IO空间?或者访问它们的唯一方法是通过0x3f8和0x3fc?
小智 5
PCI 配置地址空间确实是每个设备 256 字节。对于 PCIe,它已扩展到每个设备 2K 寄存器,而旧格式的寄存器没有用于地址位的空间。
PCIe 强制要求增强配置访问机制,该机制必须是 PC 兼容 x86 上的“用于访问设备配置寄存器的平坦内存映射地址空间”。MCFG ACPI 表提供配置寄存器映射的基地址,并在 PCI 固件规范中进行了描述。
实际上,固件会选择较大的地址空间块(通常需要 256M 来映射所有可能的 256 条总线),并相应地配置北桥。Intel 提供了非核心 CPU 的公共处理器数据表,您可以在其中查找详细信息。
为了向后兼容,初始配置访问或对传统 (<= 255) 配置寄存器的访问可以通过 CONFIG_A/D io 端口执行。
| 归档时间: |
|
| 查看次数: |
2587 次 |
| 最近记录: |