Linux内核或BIOS如何将PCIe 端点设备内存映射到systems 空间?有什么API可以实现吗?假设在为PCIe端点设备编写Linux设备驱动程序时,如何将PCIe设备内存映射到MMIO空间?还是在枚举期间,设备已经被BIOS映射到MMIO,而我需要做的就是使用ioremap()将设备MMIO重新映射到内核虚拟地址的空间?
平台: Linux on x86
非常肯定,我已经知道这个问题的答案了,因为已经有相关的问题了(、和,以及是有用的),但是在深入内核空间驱动程序之前,我想绝对肯定(以前从未去过)。
我有一个PCIe设备,我需要通过linux用户空间中的应用程序与它进行通信(反之亦然)。通过打开/dev/mem,然后打开mmap'ing,我已经能够编写一个建立在之上的用户空间驱动程序,该驱动程序允许我对条形图进行mmap,并成功地将数据写入设备。现在,我们需要通信从PCIe设备到linux用户应用程序,向另一个方向发展。为了使其工作,我们相信我们将需要一大块(~100 to )物理连续内存,这些内存永远不会被分页/交换。一旦分配好该地址