UART子系统(十三)编写虚拟UART驱动程序_框架

简介: UART子系统(十三)编写虚拟UART驱动程序_框架

编写虚拟UART驱动程序_框架


参考代码

硬件相关:
drivers/tty/serial/imx.c
drivers/tty/serial/stm32-usart.c
串口核心层:
drivers/tty/serial/serial_core.c
TTY层:
drivers/tty/tty_io.c


本节课程源码在GIT仓库里

doc_and_source_for_drivers\IMX6ULL\source\09_UART
  04_virtual_uart_driver
doc_and_source_for_drivers\STM32MP157\source\A7\09_UART
  04_virtual_uart_driver


1. 框架回顾

1670940797029.jpg


2. 编写UART驱动要做的事


1670940806221.jpg

注册一个uart_driver:它里面有名字、主次设备号等

对于每一个port,调用uart_add_one_port,里面的核心是uart_ops,提供了硬件操作函数 * uart_add_one_port由platform_driver的probe函数调用 * 所以:

编写设备树节点

注册platform_driver


3. 虚拟的UART


1670940815988.jpg

为了做实验,我们还要创建一个虚拟文件:/proc/virt_uart_buf


要发数据给虚拟串口时,执行:echo "xxx" > /proc/virt_uart_buf

要读取虚拟串口的数据时,执行:cat /proc/virt_uart_buf


4. 编程


4.1 编写设备树

4.2 编写uart_driver

4.3 编写platform_driver

4.4 实现uart_ops

4.5 实现/proc/virt_uart_buf

相关文章
|
6月前
嵌入式开发板串口驱动框架
嵌入式开发板串口驱动框架
61 0
|
2月前
|
Linux API 芯片
GPIO子系统驱动程序 【ChatGPT】
GPIO子系统驱动程序 【ChatGPT】
|
XML 测试技术 网络安全
开发调试工具:可编程USB转IIC/I2C/SPI/UART适配器模块开发板
发个方便测试I2C、SPI、1Wire接口的工具模块 总的思路是通过USB或者UART接口发送一些协议字符串,由模块转换成上面几种接口的硬件时序电信号,实现与这几种接口芯片、设备的快速测试。
Linux驱动分析之SPI控制器
之前对SPI驱动的整体架构做了介绍,现在来分析具体的驱动程序。之前说过,SPI驱动分为设备驱动和控制器驱动。先来分析控制器驱动。我们以RockChip的控制器来作为分析。
|
缓存 Linux API
Linux驱动分析之Uart驱动架构
UART设备驱动可以使用tty驱动的框架来实现,但是因为串口之间有共性,所以Linux在tty接口上封装了一层(serial core)。后面我们再拿一篇文章来解释tty驱动,tty其实就是各种终端设备,串口其实也是终端设备。
Linux驱动分析之Uart驱动架构
|
Linux 芯片
Linux驱动分析之SPI设备
前面我们对SPI控制器驱动进行了分析,接下来来分析SPI设备驱动。我们以DS1302驱动作为分析对象。DS1302是一款RTC芯片,估计很多人在学单片机时用到过。RTC芯片算是比较简单的,也方便分析理解。
Linux驱动分析之SPI设备
LED模板驱动程序的改造:总线设备驱动模型
LED模板驱动程序的改造:总线设备驱动模型
107 0
LED模板驱动程序的改造:设备树
LED模板驱动程序的改造:设备树
118 0
|
Linux
一文搞懂 USB 设备端驱动框架
hello 大家好,今天带领大家学习一下USB 设备端驱动 内核版本:4.4.94
1143 0
UART子系统(八)UART驱动情景分析_注册
UART子系统(八)UART驱动情景分析_注册
74 1
UART子系统(八)UART驱动情景分析_注册