有PCIe for FPGA的DMA Linux内核驱动程序示例吗?

时间:2015-09-15 18:01:52

标签: linux linux-kernel driver fpga dma

我想在内核空间中编写一个驱动程序:

  • 在嵌入式系统(使用powerPC)中通信PCIe连接的FPGA。
  • 它使用DMA将信息从FPGA传输到RAM。
  • 用户程序必须访问此信息。

我需要一些能够引导我类似的例子。有谁知道我在哪里可以找到一些来源?

2 个答案:

答案 0 :(得分:1)

Connectal(http://www.connectal.org)是一个开源框架,支持用户空间软件与Xilinx或Altera FPGA通信。实际上,很少有这种通信涉及设备驱动程序。

Connectal支持通过内存映射硬件FIFO在软件和硬件之间传递消息,并通过来自FPGA的DMA支持共享内存。

设备驱动程序设计为独立于架构,但PCIe通信仅在x86上进行了测试。

Connectal还支持Zynq,因此您将遇到的一些问题(非窥探I / O)已经过调试。

Connectal的硬件目前在Bluespec Systems Verilog中实现,并使用Xilinx或Altera PCIe内核。

答案 1 :(得分:0)

Linux Device Drivers 3rd Edition是一个很好的资源。它包含在PCIe设备中映射所需的所有信息,并创建用户空间程序可以使用的设备文件。它还附带了示例源代码,可以从本书的website that accompanies找到。如果您计划进行大量的内核模块开发,我建议您购买本书。

至于让FPGA执行DMA ...以下是我的一些假设: *你有硬件部分,因为你只提到需要内核驱动程序的帮助 *你有一个PCIe PLB桥(也假设Virtex 5与PowerPC) *您的FPGA中还有一个映射到PCIe地址空间的硬件DMA控制器

我会创建一个具有IOCTL的设备驱动程序来设置DMA的源/目标地址。这样,您的用户空间程序就可以执行IOCTL来编程FPGA中的DMA控制器。