C 如何在不使用TTY的情况下在UART中编写写函数?

C 如何在不使用TTY的情况下在UART中编写写函数?,c,embedded,driver,embedded-linux,uart,C,Embedded,Driver,Embedded Linux,Uart,出于几个原因(在上下文中提供带外支持),我正在从头开始为嵌入式linux开发UART驱动程序 据我所知:一个是TTY层,它处理设备文件,一个是serial_core.c,它管理串行通信,然后是特定于硬件的驱动程序。如果我是正确的,serial_core也为编写特定于硬件的代码提供了API 现在,由于所有这些都没有本机带外支持,我的目标是:编写一个字符设备驱动程序来完成这一切:处理设备文件(如TTY),设置并能够从UART写入和读取,同时作为一个硬件特定的软件 到目前为止,我一直在努力:创建一个设

出于几个原因(在上下文中提供带外支持),我正在从头开始为嵌入式linux开发UART驱动程序

据我所知:一个是TTY层,它处理设备文件,一个是serial_core.c,它管理串行通信,然后是特定于硬件的驱动程序。如果我是正确的,serial_core也为编写特定于硬件的代码提供了API

现在,由于所有这些都没有本机带外支持,我的目标是:编写一个字符设备驱动程序来完成这一切:处理设备文件(如TTY),设置并能够从UART写入和读取,同时作为一个硬件特定的软件

到目前为止,我一直在努力:创建一个设备驱动程序,从设备树中识别设备,调用探测函数并注册设备。有了它,我就可以手动创建一个设备文件mknod,并且设备文件按照预期与我的驱动程序交互(即,当我写入设备文件时,我的驱动程序调用它的write函数,依此类推)

现在,我不知道如何进行。在过去,我已经为UART编写了类似裸机的函数,比如putchar和init,它们基本上只是写在寄存器上。我想在这里做一些类似的事情,但是很难找到关于这个主题的任何文档。TTY层和serial_core.c的代码注释很少,很难理解。到目前为止,当我在设备文件中写入某些内容时,我的write函数只向内核打印“write function have called”

问题:如何在不使用Linux内核中提供的API的情况下为UART开发写函数

整个开发都是用C语言完成的,因此使用了标签