RJS*_*h92 3 memory bios cpu-architecture pci
简单的问题,我正在阅读有关 PCI 的 OSDev Wiki 页面,它说了以下内容 -
“基地址寄存器(或 BAR)可用于保存设备使用的内存地址,或端口地址的偏移量。通常,内存地址 BAR 需要位于物理 RAM 中,而 I/O 空间 BAR 可以驻留在任何内存地址(甚至超出物理记忆)。”
我不明白哪里说内存地址 BAR 需要位于物理 RAM 中?MMIO 的全部意义在于,当它被分配一个内存地址时,它将被路由到设备而不是物理 RAM。它需要位于物理 RAM 中是什么意思?
难道它不只是 3GB - 4GB 地址空间之间的地址,无论安装了多少物理 RAM?
这是 OSDev 网站上的错误还是我误解了?
谢谢。
OSDev 网站没问题。他们从 PCI 设备的角度而不是从主机的角度描述内存/IO BARS。OSDev 所说的内存 BAR 可以(但不一定)映射到 PCI 设备上的物理 RAM。而 IO BAR 通常是其他东西(寄存器、FIFO 等等)。
另请注意,不鼓励使用 IO BAR。最好只使用内存 BAR。通常,您将有一个小内存 BAR,用于对所有寄存器进行分组。其他 BAR 会暴露 PCI 设备的 RAM 片段。
| 归档时间: | 
 | 
| 查看次数: | 2799 次 | 
| 最近记录: |