如何访问 PIO 板来编写驱动程序?

如何访问 PIO 板来编写驱动程序?

我正在研究编写一个驱动程序,目的是从用户空间与简单的 PIO PCI 板进行通信。

首先,我创建了一个示例字符驱动程序。内存中的简单文本字符串。创建了一个用于读取和写入的设备文件。容易明白。

接下来,我创建了另一个驱动程序,并成功地将驱动程序注册到 PCI 板卡上。我可以看到它在内核消息中全部正常工作,并且该lspci -v命令将我的测试驱动程序显示为正在使用的驱动程序。

我的问题:如何从用户空间访问 PIO PCI 驱动程序?
我是否还需要创建一个字符设备,并从本质上合并两个项目,以便我有一个“设备编号”和一个可读写的文件?这似乎是合乎逻辑的步骤,因为该 pci_driver结构没有读取或写入功能。

它是否正确?

答案1

有一本好书Linux 设备驱动程序可在以下位置免费获得:

https://lwn.net/Kernel/LDD3/

它已经有很多年历史了,所以有些东西可能已经发生了一些变化,但其中的核心内容应该仍然有帮助。

一般来说,您的驱动程序可能想要注册一个字符设备。该设备将获得动态分配的主设备号。然后,您可以在 dev 中使用该主设备号创建一个字符设备文件。该驱动程序将支持一组标准文件操作(例如,open()ioctl()read()write())。您的用户空间进程将使用open()字符设备文件并使用这些文件操作与驱动程序进行交互。驱动程序的实现会将这些操作(及其相关内容)转换为与物理设备的交互。

相关内容