从一般的角度来看,我试图弄清楚如何从用户空间访问平台设备。更具体地说,我有一个 EMIF 控制器和 SoC,我已将其添加到我的设备树中,我相信它已正确绑定到预先编写的 EMIF 平台设备驱动程序。现在我想弄清楚如何从用户空间应用程序访问这个 EMIF 设备。我遇到了几个不同的主题,这些主题似乎与这个问题有一些联系,但我不太清楚它们之间的关系。
1)当我读到似乎大多数 I/O 是通过使用由创建的设备节点完成的mknod()
,我是否需要创建一个设备节点才能访问该设备?
2)我读过一些关于编写内核模块(字符?块?)的线程,该模块可以与用户空间和平台设备驱动程序接口,并将其用作中介。
3) 我已经阅读了关于使用mmap()
将我的平台设备的内存映射到我的虚拟内存空间的可能性。这可能吗?
4)似乎当EMIF驱动被实例化时,它调用了probe()
函数。用户空间应用程序会在驱动程序中调用哪些函数?