linux配置串口驱动程序,[Linux 驱动] -- Linux 驱动之串口(UART)

本文介绍了Linux系统中串口驱动的组成,包括UART驱动程序的三个关键部分:uart_driver、uart_port和uart_ops。阐述了uart_driver与tty_driver的关系,以及如何注册和注销这两个驱动。此外,详细解析了uart_port结构体,用于描述串口端口的I/O信息。最后,讨论了串口驱动在Linux中的应用,如串口终端(/dev/ttyS*)、控制台终端和虚拟终端,并指出串口驱动需要实现的主要工作,包括初始化结构体和实现uart_ops中的操作函数。
摘要由CSDN通过智能技术生成

一、UART 驱动程序概述

在嵌入式 Linux 系统中,串口被看成终端设备,终端设备(tty)的驱动程序分为三个部分:

tty_core

tty_disicipline

tty_driver

包括3个结构体:

uart_driver

uart_port

uart_ops( include/serial_core.h)

因此实现一个平台的 UART 驱动程序只需要实现这3个结构体即可。

二、uart_drvier 与 tty_driver 之间的关系

25691ede19e75b3d934dab33e8a86cda.png

uart_driver 结构体:

uart_driver 结构体包含了串口设备名、串口驱动名、主次设备号、串口控制台(可选)等信息,还封装了 tty_driver(底层串口驱动,无需关心 tty_driver)。

struct uart_driver

{

struct module *owner; //拥有该uart_driver的模块,一般为THIS_MODULE

const char *driver_name; //串口驱动名,串口设备文件名以驱动名为基础

const char *dev_name; //串口设备名

int major; //主设备号

int minor; //次设备号

int nr; //该 uart_driver 支持的最大串口个数

struct console *cons; //其对应的console。若该uart_driver支持serial console,否则为NULL

...........................

struct uart_state *state;

struct tty_driver *tty_driver; //uart_driver 封装了 tty_driver,使底层uart驱动不用关心tty_driver。

};

一个 tty 驱动程序必须注册/注销 tty_driver;

一个 uart 驱动则变为注册/注销 uart_driver;

使用如下接口:

int uart_register_driver(struct uart_driver *drv);

void uart_unregister_driver(struct uart_drvier *drv);

int tty_register_driver(struct tty_driver *drv);

void tty_unregister_driver(struct tty_driver *drv);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值