linux - 当可用内存较少时映射 BAR 中提到的内存

标签 linux pci

我正在为 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/

相关文章:

io - 了解 PCI 地址映射

windows - 使用 Win32 API 访问 PCI 配置空间

osdev - PCI 地址空间

c++ - 关于linux shell函数与C函数的关系()

regex - 从两种类型的列表中提取 URL

linux - Unix 中的强制锁定

linux - 在 Linux 中对 2 列进行排序

linux - 检查文件是否存在于给定目录中,而不是子目录中

python - 使用 mmap 对象写入物理地址

linux - pci_user_write_config_word在哪里实现的?