mmap()是一种非常有用但随意的方式从用户空间访问PCIe设备.
我注意到你传递0作为mmap的第一个参数.在我插入x86计算机的FPGA卡的情况下,我打电话给lspci以获取pcie插槽中卡的物理地址.然后我使用该物理地址作为mmap的第一个参数.我知道你在设备的配置空间中写了BAR,但也许用lspci仔细检查.
$sudo lspci -s 02:00 -v
02:00.0 Memory controller: Xilinx Corporation Device 8028
Subsystem: Xilinx Corporation Device 0007
Flags: bus master, fast devsel, latency 0, IRQ 11
Memory at f7e00000 (32-bit, non-prefetchable) [size=1M]
Capabilities: [80] Power Management version 3
Capabilities: [90] MSI: Enable- Count=1/1 Maskable- 64bit+
Capabilities: [c0] Express Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting