Linux用户空间PCI驱动程序
我正在尝试编写一个在用户空间中运行的PCI设备驱动程序。不是我的主意,客户想要什么。Target是一个嵌入式Linux板,其用户永远不会超过一个。我是一名经验丰富的C程序员,了解Linux,只是不熟悉Linux驱动程序开发 这真的是一个设备驱动程序还是一个库?我是否需要使用典型的calls pci_register_驱动程序等,或者我可以使用fopen访问设备,然后使用mmap和ioperm访问它 中断将使用MSI模型完成。还需要处理DMA传输。该设备将向用户传输大量数据 关于这一主题的信息并不多,LDD3只花了几页的篇幅,在这方面我找不到任何其他信息Linux用户空间PCI驱动程序,linux,driver,usermode,Linux,Driver,Usermode,我正在尝试编写一个在用户空间中运行的PCI设备驱动程序。不是我的主意,客户想要什么。Target是一个嵌入式Linux板,其用户永远不会超过一个。我是一名经验丰富的C程序员,了解Linux,只是不熟悉Linux驱动程序开发 这真的是一个设备驱动程序还是一个库?我是否需要使用典型的calls pci_register_驱动程序等,或者我可以使用fopen访问设备,然后使用mmap和ioperm访问它 中断将使用MSI模型完成。还需要处理DMA传输。该设备将向用户传输大量数据 关于这一主题的信息并不
提前谢谢 如果没有处理PCI卡的驱动程序,则可以使用ioperm(或iopl-取决于地址)访问PCI卡,前提是只需要端口访问 如果没有内核模式驱动程序,使用DMA和中断是绝对不可能的 通过谷歌搜索,我发现了一些关于“通用内核模式驱动程序”的文字,它允许编写用户模式驱动程序(包括DMA和中断)
您应该询问您的客户Linux板上安装了哪种用于访问PCI卡的内核模式驱动程序。现在有一种合适的方法来实现高性能用户空间PCI驱动程序,称为vfio。这里没有太多文档,但是请参阅内核文档和头文件/usr/include/linux.vfio.h。它从Linux 3.6开始提供。谢谢您的回答。我找到了可以链接到用户程序的libpci-dev包,它确实提供了一些有限的功能。但正如您所说,DMA和中断处理丢失了。dev pci库几乎只允许您读取/写入pci配置寄存器。