我正在为 PCIe 网络设备编写驱动程序。我仍在努力学习,所以我的问题可能很简单,因为我不了解大部分内容。
从我读取的 BAR0 地址来看,内存大小约为 256MB。但我只有 128MB 可用。
所以我的问题是如何映射此 BAR 以访问 MMIO 区域。
非常感谢您的帮助。
最佳答案
内存映射的设备只响应内存地址。它不占用系统中的任何物理内存。通常内存映射设备被分配到一个不与物理内存重叠的内存地址。
典型的 x86 处理器具有 32 位地址空间 (0x00000000-0xFFFFFFFF)。如果你有 128MB 的 RAM,它占用的物理地址从 0x00000000-0x08000000(大致)。这在 0x08000000 上方为 PCI 设备留下了很多空间。
查看 PCI 设备 BAR 的地址。它们可能都是地址空间上半部分某处的值(0x80000000 或更高)。
关于linux - 当可用内存较少时映射 BAR 中提到的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22655040/