在前面几个章节,我们学习了tty子系统,并借助tty子系统完成了一个虚拟串口控制器驱动,并增加了两个虚拟串口。而在串口子系统中,为了让串口的开发更加简单,串口子系统又进行了一层框架搭建,构建了串口子系统,本章我们就介绍串口子系统框架。
老规矩,在了解一个子系统之前,我们先熟悉其数据结构及数据结构间的关联,这可有助于我们快速理解该子系统的大致结构,所要实现的功能有哪些等等。。。
相关数据结构说明
针对uart子系统,其又抽象了uart_driver、uart_port、uart_state、uart_ops几个数据结构,其中uart_driver也是表示一个串口控制器驱动的抽象,内部包含了tty_driver类型的成员变量,同时也包含了该串口控制器所支持的所有串口对应uart_state(可以理解为一个uart port相关的资源的数据结构);而uart_port是针对一个串口的抽象,其内部包含一个tty_port类型的成员变量,而uart_state可以理解该串口的资源信息,其完成了与uart_driver、uart_port、tty_struct的关联,其功能也类似于tty_struct,而uart_ops则定义了一个串口支持的操作接口。下面我们分别说明每一个数据结构的内容。
struct uart_driver
Uart_driver的定义如下,其中dev_name即为串口对应字符设备文件名的前缀,而major、minor则为串口对应主设备号以及次设备号起始位置(若不设置主设备号,则动态申请,一般不设置这两个变量);state为该串口控制器下串