Linux用户空间PCI驱动程序

时间:2013-09-26 13:54:35

标签: linux driver usermode

我正在尝试编写一个在用户空间中运行的PCI设备驱动程序。不是我的想法,客户想要什么。 Target是一个嵌入式Linux主板,永远不会只有一个用户。我是一名经验丰富的C程序员,熟悉Linux,不熟悉Linux驱动程序开发。

这真的是设备驱动程序还是只是一个库?我是否需要使用典型的调用pci_register_driver等,或者我可以使用fopen访问设备,并使用mmap和ioperm来访问它?

将使用MSI模型完成中断。还需要处理DMA传输。该设备将向用户传输大量数据。

关于这个问题没有太多信息,LDD3只用了几页,而且我在这里找不到任何其他内容。

提前致谢!

2 个答案:

答案 0 :(得分:1)

如果没有处理PCI卡的驱动程序,如果只需要端口访问,则可以使用ioperm(或iopl - 取决于地址)访问它。

如果没有内核模式驱动程序,绝对不可能使用DMA和中断。

通过googleing,我发现了一些类似“通用内核模式驱动程序”的文本,允许编写用户模式驱动程序(包括DMA和中断)。

您应该问您的客户Linux板上安装了哪种内核模式驱动程序用于访问PCI卡。

答案 1 :(得分:1)

现在有一种正确的方法来执行高性能用户空间PCI驱动程序,称为vfio。文档不多,但请参阅内核文档http://lxr.free-electrons.com/source/Documentation/vfio.txt和头文件/usr/include/linux.vfio.h。它从Linux 3.6开始提供。