串口驱动位于tty子系统。对于用户来说,访问串口与访问其它字符设备的方法一样,都是通过系统调用访问设备文件从而访问设备。对于串口来说,主要是open,read,write这三个函数。因此驱动程序中也要实现这三个实现函数,而在此之前还需要对串口进行初始化以及串口驱动程序的注册。
串口驱动中使用到的重要数据结构:
UART驱动程序结构:struct uart_driver
UART端口结构: struct uart_port
UART相关操作函数结构:struct uart_ops
UART状态结构: struct uart_state
UART信息结构:struct uart_info
其中struct uart_driver包含有struct uart_state,struct uart_state包含有struct uart_info和struct uart_port,struct uart_port包含有struct uart_ops。
一个struct uart_driver对应一个串口驱动程序,可以对应多个串口设备;
一个struct uart_port对应一个串口设备;
一个struct uart_ops包含有多个函数指针,指明了该串口可以实现的操作。
串口驱动共包含有五部分:
①驱动程序的注册
使用函数:uart_register_driver()
②初始化
③打开设备-open
④发送数据-write
⑤接收数据-read