我想在内核空间中编写一个驱动程序:
我需要一些能够引导我类似的例子。有谁知道我在哪里可以找到一些来源?
答案 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控制器。