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

相关文章
|
7月前
嵌入式开发板串口驱动框架
嵌入式开发板串口驱动框架
72 0
|
Linux
Linux驱动开发(使用I2C总线设备驱动模型编写AT24C02驱动程序)
Linux驱动开发(使用I2C总线设备驱动模型编写AT24C02驱动程序)
156 0
|
7月前
|
Perl
【ZYNQ】SPI 简介及 EMIO 模拟 SPI 驱动示例
【ZYNQ】SPI 简介及 EMIO 模拟 SPI 驱动示例
681 0
Linux驱动分析之SPI控制器
之前对SPI驱动的整体架构做了介绍,现在来分析具体的驱动程序。之前说过,SPI驱动分为设备驱动和控制器驱动。先来分析控制器驱动。我们以RockChip的控制器来作为分析。
|
Linux 芯片
Linux驱动分析之SPI设备
前面我们对SPI控制器驱动进行了分析,接下来来分析SPI设备驱动。我们以DS1302驱动作为分析对象。DS1302是一款RTC芯片,估计很多人在学单片机时用到过。RTC芯片算是比较简单的,也方便分析理解。
Linux驱动分析之SPI设备
LED模板驱动程序的改造:总线设备驱动模型
LED模板驱动程序的改造:总线设备驱动模型
116 0
|
Linux 开发工具 git
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(三十)LED模板驱动程序的改造:总线设备驱动模型
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(三十)LED模板驱动程序的改造:总线设备驱动模型
233 1
嵌入式linux/鸿蒙开发板(IMX6ULL)开发(三十)LED模板驱动程序的改造:总线设备驱动模型
UART子系统(八)UART驱动情景分析_注册
UART子系统(八)UART驱动情景分析_注册
80 1
UART子系统(八)UART驱动情景分析_注册
|
Linux
一文搞懂 USB 设备端驱动框架
hello 大家好,今天带领大家学习一下USB 设备端驱动 内核版本:4.4.94
1192 0
|
传感器 定位技术 数据处理
ARM裸板开发——UART通信方式及使用(一)
ARM裸板开发——UART通信方式及使用
298 0
ARM裸板开发——UART通信方式及使用(一)