首页 > 系统相关 >Linux串口应用编程:从UART到GPS模块及字符设备驱动

Linux串口应用编程:从UART到GPS模块及字符设备驱动

时间:2024-11-22 11:14:09浏览次数:3  
标签:驱动程序 UART 串口 read 专栏 模块 Linux 设备 GPS

往期内容

本专栏往期内容:Uart子系统

  1. UART串口硬件介绍
  2. 深入理解TTY体系:设备节点与驱动程序框架详解

interrupt子系统专栏:

  1. 专栏地址:interrupt子系统
  2. Linux 链式与层级中断控制器讲解:原理与驱动开发
    – 末片,有专栏内容观看顺序

pinctrl和gpio子系统专栏:

  1. 专栏地址:pinctrl和gpio子系统

  2. 编写虚拟的GPIO控制器的驱动程序:和pinctrl的交互使用

    – 末片,有专栏内容观看顺序

input子系统专栏:

  1. 专栏地址:input子系统
  2. input角度:I2C触摸屏驱动分析和编写一个简单的I2C驱动程序
    – 末片,有专栏内容观看顺序

I2C子系统专栏:

  1. 专栏地址:IIC子系统
  2. 具体芯片的IIC控制器驱动程序分析:i2c-imx.c-CSDN博客
    – 末篇,有专栏内容观看顺序

总线和设备树专栏:

  1. 专栏地址:总线和设备树
  2. 设备树与 Linux 内核设备驱动模型的整合-CSDN博客
    – 末篇,有专栏内容观看顺序

img

目录

前言

建议先看下本专栏前两篇对串口基础知识的讲解

本文详细讲解了Linux设备编程的核心知识点,涵盖了UART通信、GPS模块数据处理和字符设备驱动开发的两种注册方法。在UART通信部分,介绍了设备操作的基本流程以及如何通过termios结构体配置串口参数。在GPS模块实验中,解析了NMEA0183数据格式,展示了如何提取关键定位信息及实现硬件通信。在字符设备驱动开发部分,阐述了传统register_chrdev和改进的cdev注册方法,结合实例代码和流程图,分析了资源分配和驱动管理的优化策略。

1.回环实验_自发自收

img
在Linux系统中,操作设备的统一接口就是:open/ioctl/read/write。

对于UART,又在ioctl之上封装了很多函数,主要是用来设置行规程。

所以对于UART,编程的套路就是:

  • open
  • 设置行规程,比如波特率、数据位、停止位、检验位、RAW模式、一有数据就返回
  • read/write

1.1 API和结构体

怎么设置行规程?行规程的参数用结构体termios来表示
img

这些函数在名称上有一些惯例:

  • tc:terminal contorl
  • cf: control flag

下面列出一些函数:

函数名作用
tcgetattrget terminal attributes,获得终端的属性
tcsetattrset terminal attributes,修改终端参数
tcflush清空终端未完成的输入/输出请求及数据
cfsetispeedsets the input baud rate,设置输入波特率
cfsetospeedsets the output baud rate,设置输出波特率
cfsetspeed同时设置输入、输出波特率

函数不多,主要是需要设置好termios中的参数。

1.2 收发实验

标签:驱动程序,UART,串口,read,专栏,模块,Linux,设备,GPS
From: https://blog.csdn.net/caiji0169/article/details/143958337

相关文章

  • LInux基础——裸金属宿主机挂载后端存储数据盘丢失
    裸金属宿主机挂载后端存储数据盘丢失1、问题描述物理机批量底层块设备丢失问题; 2、问题分析i.物理卷、卷组、逻辑卷发现块设备打开失败;检查物理卷状态:pvscan检查卷组状态:vgscan检查逻辑卷状态:lvscan初步判断问题原因:查看物理卷pv、卷组vg、逻辑卷lvs报错“Nosuchdevic......
  • Linux常用基础指令-mv指令
      mv命令,用来移动文件和目录,实现文件或目录的重命名。相比于cp命令(用于复制文件),mv直接对文件位置或名称进行更改,不创建副本。1.`mv`命令的基本语法mv[选项]源文件目标文件mv[选项]源文件...目标目录mv[选项]-t目标目录源文件...源文件:要移动或重命......
  • 泷羽Sec学习笔记:linux基础之病毒编写
    Linux目录介绍:1. /bin : 二进制可执行命令2. /etc :系统管理和配置文件3. /etc.rc.d :启动的配置文件和脚本4. /home :用户主目录的基点5. /lib :标准程序设计库,又叫动态链接的共享库6. /sbin :超级管理命令,这里存放的是系统管理员使用的......
  • 泷羽Sec学习笔记:linux基础
    opensslpasswd-1123opensslpasswd-1123 openssl是一个开源的加密工具包,提供了各种加密,解密,签名,验证等功能 passwd表示该命令是对密码进行相关的操作 -1参数指定使用MD5加密算法对密码123进行加密处理,使用这个命令可以将密码“123”变为MD5加密后的密文。open......
  • Linux内核中unlikely宏的作用
    Linux内核中unlikely宏的作用在Linux内核中,unlikely宏是一个非常重要的工具,它主要用于指导编译器进行代码优化,以提高程序的执行效率。unlikely宏的定义与作用定义:unlikely宏通常定义为__builtin_expect(!!(x),0),其中x是你要判断的表达式。作用:告诉编译器,表达式x的结果......
  • Linux内核中的PAGE_SHIFT
    Linux内核中的PAGE_SHIFT什么是PAGE_SHIFT?在Linux内核中,PAGE_SHIFT是一个非常重要的宏,它定义了一个页的大小,通常是2的幂次方。这个值表示了虚拟地址空间中一个页的偏移量占用了多少位。换句话说,它告诉我们一个页的大小是多少字节。PAGE_SHIFT的作用页大小的确定:PAGE_SHIFT......
  • [Linux]进程控制
    进程控制进程创建fork函数作用fork函数的作用是用来创建一个新进程,新进程被称为子进程,而原来的进程称为父进程。返回值fork函数有两个返回值,给父进程返回子进程pid,给子进程返回0。为什么有两个返回值?在执行fork函数的时候,当fork函数的核心逻辑已经执行完成,准备return时,......
  • Linux下 GDB调试器的使用
    文章目录1.可执行程序的Debug版和Release版区别一、编译选项与目的二、性能与体积三、功能与特性四、查看可执行文件2.GDB相关命令GDB常用命令1.可执行程序的Debug版和Release版区别一、编译选项与目的Debug版:编译选项:通常使用包含调试信息的编译选项,如/MDd......
  • 使用再生龙CloneZilla进行Linux系统的镜像完全封装和还原
    写文章  使用再生龙CloneZilla进行Linux系统的镜像完全封装和还原巴布改不掉晚睡的咸鱼​关注 71人赞同了该文章CloneZilla可以将Linux完整移植到另一台机器中,保证数据,分区,挂载,启动项。。所有的一切完全一致注意:进行还原的机器需要......
  • Linux基础——yum downgrade和yum localinstall降级安装
    一、问题描述需求:租户需要从openssl-1.1.1t-11降级安装openssl-1.1.1f-36,安装包相关依赖问题;报错:rpm安装提示依赖问题 报错:yumlocalinstall本地rpm包无法安装; 二、解决办法1、方法一:yumdowngrade降级#通过本地rpm包或在线yum源安装,加上参数“--allowerasing”允许......