有任何DMA Linux内核驱动程序的例子与PCIe FPGA



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

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

我需要一些例子,使类似的东西来指导我。有人知道我在哪里能找到资料来源吗?

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内核。

Linux设备驱动程序第3版是一个很好的资源。它包含映射到PCIe设备和创建用户空间程序可以使用的设备文件所需的所有信息。它还附带了示例源代码,可以从本书附带的网站上找到。如果你打算做大量的内核模块开发,我建议你购买这本书。

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

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

最新更新