内核如何与驱动程序和设备树交互?

内核如何与驱动程序和设备树交互?

我有一个在板上运行的嵌入式Linux系统。我在设备树中有一个 uart 设备,还有一个驱动程序。在这种情况下,启动后,我可以在 /dev/ 文件夹中看到 /dev/ttymxc0 “文件”。由于我需要将 UART 用于其他目的,因此我评论了设备树中的该部分,并且我可以看到现在该文件不再位于 /dev/ 文件夹中(我现在使用 ssh 与板交互)。

现在,我(出于其他原因)必须为内核中内置的 UART 创建一个新的、更简单的驱动程序,我计划在寄存器上进行写入来与 UART 交互。我的计划是开发一个驱动程序,以便在用户空间中,我可以通过函数 ioctl() 和 read() 与 UART 交互。

然而,我非常不知道该做什么以及如何开始。我在驱动程序中的任何地方都找不到引用或调用 mknode 来创建设备文件的东西,所以我怀疑内核以某种方式创建了它,也许是在它在设备树中查找之后?问题是,在原始源代码中,我在设备树中、驱动程序代码中都找不到任何提及“ttymxc0”的内容。

我不确定什么是司机实际上应该做。我读了很多书,我知道它将指导内核与硬件的交互。我已经在这个网站上阅读了很多问题,但我仍然不确定每个东西如何链接、交互和相加在实践中

太长了;博士:我想为 UART 编写一个简单的驱动程序,以便我可以使用 ioctl 和 read 等函数从用户空间进行交互,但我不知道驱动程序代码到底应该包含什么,它如何与内核和设备树交互,以及它如何调用mknode在/dev/中创建设备文件。

相关内容