我正在尝试访问内存位置“/dev/xdma_h2c_0”。我已经使用系统读/写功能实现了读/写。现在我尝试使用 mmap 执行相同操作。但我收到 No such device 错误。有没有一种快速方法可以判断位置/文件描述符是否是 mmap(可)的?(此内存位置可在使用 Xilinx 驱动程序的 Xilinx Virtex FPGA 板上使用)
答案1
根据您的评论,/dev/xdma_h2c_0
是一个字符设备,因此无法mmap()
在其上使用 - 这根本没有意义,主要是因为它不是一个可寻址的设备(您也不能使用lseek()
/ fseek()
)。
如果 FPGA 的地址空间是通过 PCI / PCIe 呈现的,那么您可能很幸运地使用它lspci
来定位其内存区域、打开/dev/mem
并使用mmap()
它......尽管这伴随着所有相关的安全问题和警告......即:不要在真实产品中或实验室/家庭外这样做。
但更理想的情况是,您应该编写适当的驱动器来公开您在 FPGA 中提供的任何功能。
根据您的后续评论,您是能够lseek()
调用该设备,这对于字符设备来说并不常见。
这file_operations
结构概述了什么“特征“可从设备或节点获取。
这是因为地址空间是通过 Xilinx PCIe 驱动程序呈现的吗?
查看主线内核,我无法立即看到驱动程序,但如果 FPGA 的接口确实是 PCIe,并且没有使用某种奇怪的窗口机制,那么我会想象有一些可用的内存标志区域,因此有一种在其中查找的方法。