linux UART驱动
目录
一、UART驱动关键结构体
二、UART驱动分析
三、UART驱动编写
一、UART驱动关键结构体
1、uart_driver 结构体
(1) uart_driver 结构体表示 UART 驱动, uart_driver 定义在 include/linux/serial_core.h 文件中,内容如下:
(2) 每个串口驱动都需要定义一个 uart_driver,加载驱动的时候通过 uart_register_driver 函数向
系统注册这个 uart_driver,此函数原型如下:
(3) 注销驱动的时候也需要注销掉前面注册的 uart_driver,需要用到 uart_unregister_driver 函数,
函数原型如下:
2、uart_port 结构体
(1) uart_port 表示一个具体的 port, uart_port 定义在 include/linux/serial_core.h 文件,内容如下(有省略):
(2) 每个 UART 都有一个 uart_port,uart_port 通过uart_add_one_port 函数与uart_driver 结合起来:
(3) 卸载 UART 驱动的时候也需要将 uart_port 从相应的 uart_driver 中移除,需要用到
uart_remove_one_port 函数,函数原型如下:
(4)uart_ops 结构体: ops 包含了针对 UART 具体的驱动函数, Linux 系统收发数据最终调用的都是 ops 中的函数。ops 是 uart_ops类型的结构体指针变量, uart_ops 定义在 include/linux/serial_core.h 文件中,内容如下:
uart_ops 是最底层的 UART 驱动接口,是实实在在的和 UART 寄存器打交道的。
二、UART驱动分析
1、UART 本质上是一个 platform 驱动;
2、打开 imx6ull.dtsi 文件,找到 UART3 对应的子节点,子节点内容如下所示:
3、通过 compatible 属性值找到对应的 UART 驱动文件,此文件为 drivers/tty/serial/imx.c:
(1) imx_serial_init 函数中向 Linux 内核注册了 imx_reg, imx_reg 就是 uart_driver 类型的结
构体变量:
(2) 设备,总线匹配
(3) probe函数的实现
三、UART驱动编写
1、直接修改设备树配置即可
(1) 创建 uart 对应的 pinctrl 子节点
(2) 添加 uart 节点
linux UART驱动相关推荐
- Linux uart驱动框架
Linux uart驱动框架 串口驱动框架包括两部分 struct uart_driver int uart_register_driver(struct uart_driver *uart); vo ...
- 关于linux UART驱动和tty架构的理解
关于linux UART驱动和tty架构的理解 最近要开发一个驱动程序,需要用到串口和SPI接口.平台的串口驱动程序本身在开发板中已经被实现了,也可以就这样直接使用,但是这样分开使用的结果就是在串口和 ...
- i.MX6ULL驱动开发 | 15 - Linux UART 驱动框架
Linux UART 驱动框架比较简单,不需要设备驱动,只需要UART设备驱动即可. 一.Linux UART驱动框架 1. uart_driver结构体 Linux将 UART 驱动抽象为 uart ...
- Linux UART驱动分析及测试
1.Linux TTY驱动程序框架 Linux TTY驱动程序代码位于/drivers/tty下面.TTY的层次接口包括TTY应用层.TTY文件层.TTY线路规程层.TTY驱动层.TTY设备驱动层.T ...
- Linux uart驱动文件,linux终端设备uart驱动分析
一:前言 接着前面的终端控制台分析,接下来分析serial的驱动.在linux中,serial也对应着终端,通常被称为串口终端.在shell上,我们看到的/dev/ttyS*就是串口终端所对应的设备节 ...
- linux UART驱动_应用程序例程
系列文章 I.MX6ULL 手册查找使用方法 实战点亮LED(寄存器版) I.MX6ULL 手册查找使用方法 实战点亮LED(固件库版本) linux 字符设备驱动实战 linux LED设备驱动文件 ...
- Linux uart 驱动
一.串口驱动框架简介 Linux 提供了串口驱动框架.串口驱动没有主机端和设备端之分,就只有一个串口驱动,而且这个驱动也是由处理器厂家编写好了. 我们真正要做的就是在设备树中添加所要使用的串口节点信息 ...
- Linux设备驱动之UART驱动结构
一.对于串口驱动Linux系统中UART驱动属于终端设备驱动,应该说是实现串口驱动和终端驱动来实现串口终端设备的驱动.要了解串口终端的驱动在Linux系统的结构就先要了解终端设备驱动在Linux系统中 ...
- linux设备驱动之串口移植,Linux设备驱动之UART驱动结构
一.对于串口驱动Linux系统中UART驱动属于终端设备驱动,应该说是实现串口驱动和终端驱动来实现串口终端设备的驱动.要了解串口终端的驱动在Linux系统的结构就先要了解终端设备驱动在Linux系统中 ...
最新文章
- 微课丨华为的18条军规
- linux ln 权限不够,每次执行./都会出现权限不够,已经是root了 已解决!
- 组件间数据交互——父组件向子组件传值( props属性值类型) 子组件向父组件传值-携带参数 || 非父子组件间传值
- 解决TypeError: Tensor is unhashable if Tensor equality is enabled. Instead, use tensor.experimental_re
- cf1556A. A Variety of Operations
- java quartz 数据库_SpringBoot+Quartz+数据库存储
- 配置github的SSH key及GitHub项目上传方式一——使用终端命令行
- 常用排序算法(三)直接插入排序
- google protobuf_websoket解析protobuf协议
- AutoCAD中的Spline曲线算法分析(二)
- rtmp直播推流软件推荐
- linux操作系统和ucos操作系统,嵌入式操作系统ucos与linux比较
- redis雪崩击穿穿透
- 《Internet-常见域名后缀大全》
- PaddleOCR 识别器数据增强
- 关于ajax同步状态及sucess,complete的顺序的理解
- 基于微信小程序电子产品商城系统(springboot+ mybatis-plus+mysql+原生微信小程序)
- 解决Unknown column ‘xxx‘ in ‘where clause‘问题!!(泪的教训!!)
- 「AI芯片公司」比特大陆的路线图上,除了四款TPU还有在这三个产业落地的野心
- 视频和PPT已公开 | 第八届中国互联网测试大会·2021 MTSC 上海站