在大部分讲解 Linux 编程书籍的时候会发现没有单独的串口编程章节,实际上串口编程已经被概括在了“终端”或者“终端IO”章节里面。在上一篇博客中对经常出现的几个容易混淆的概念进行简单描述:tty,串口,控制台与驱动程序。后面会在实际使用过程中对几种设备的原理与使用进行详解。

在系统下面通过执行 "ls /dev" 或者 "cat /proc/tty/drivers" 可以看到经常碰到的一些术语以及分类,如下所示:

对开发者而言,比较熟悉的有 console 控制台、tty 终端、ttyS serial串口设备、pty 伪终端等。由于 pty 成对使用,所以又细分为了主从两类。这些设备类对应的系统设备文件名参见第二列,可以输入 "ls /dev" 进行查看。

需要理清这些概念的关系就需要追溯早起计算机的使用历史,最初计算机成本高昂,通常需要连接多套键盘显示器供多人使用,因此就出现了这样一种专门连接计算机的设备,它只有显示器和键盘,外加简单处理电路。用户可以通过这套设备连接到计算机上(通常是通过串口连接),然后登录系统,并对计算机进行操作。这样一台只有输入、显示器件并能连接到计算机的设备就称为终端。tty 设备的名称是从过去的电传打字机(Teletype)缩写而来,也是最早出现的一种终端设备,因此现在在 Linux 系统中,就用 tty 来表示 “终端”。而 console 控制台,pty 伪终端等可以理解为虚拟 tty。总之,在 Unix 系统中 tty 就可以理解为连接到系统的物理或者虚拟终端

“console”控制台用于用户和系统进行交互的设备,与终端作用类似。该虚拟 tty 与普通终端相比,多了一些功能:如显示系统内核消息,后台服务日志等。从硬件上看,控制台与终端等都是具备输入显示功能的设备,没有区别。实际上他们表达的意思相同。控制台与终端的区别体现在软件上,在启动 Linux 内核前传入的命令行参数 "console=..." 就是用来指定具体的控制台。控制台在 tty 驱动初始化之前就可以使用了,最开始被用来显示内核消息。我们在计算机或者嵌入式系统中经常会看到 "console = ttySAC0"、"console = ttyS1" 等语句,实际就是选取某个虚拟或者物理终端作为控制台与用户交互。

当 tty 驱动初始化结束,用户程序就可以通过 tty 驱动的接口来操作各类终端设备,包括控制台。而后面要介绍的应用程序操作接口也由此而来。

关于 Linux 串口编程的其他文章,可以移步至以下链接:

  1. 《Linux 串口编程<一> 一些背景》
  2. 《Linux 串口编程<二> 深入了解 termios》
  3. 《Linux 串口编程<三> 使用termios与API 进行串口程序开发》
  4. 《Linux 串口编程<四> 串口设备程序开发》

如果有想法或者疑问可以给我邮件或者评论,觉得有用就点赞吧~:-D

Linux 串口编程一 一些背景相关推荐

  1. Linux 串口编程四 串口设备程序开发

    Linux 串口编程和程序相对来说是很简单的,之所以用博客连载来展示,主要是想在学会使用的基础上掌握相关背景,原理以及注意事项.相信在遇到问题的时候,我们就不会对于技术的概念和 API 的使用浅尝辄止 ...

  2. Linux 串口编程三 使用termios与API进行串口程序开发

    在 termios 结构体以及内部终端控制标志中,并非所有的参数对于实际的物理串口都是有效的,在使用过程中也不需要对于所有标志的作用都有所理解.事实上,快速掌握一项技术的核心点也是一种学习能力.对于使 ...

  3. Linux 串口编程二 深入了解 termios

    前言 这一系列串口编程重点在应用层编程,但是在讲解原理与相关概念时需要对驱动框架有个基础的认识.如果只是浅尝辄止,以后在遇到串口驱动与应用层程序调试难免遇到瓶颈.关于 tty驱动架构参见我的其他博客: ...

  4. Linux串口编程_termios

    1.1 Linux串口编程主要是设置structtermios结构体的个成员值.Termios是在POSIX规范中定义的标准接口,表示终端设备(包括虚拟终端丶串口等),串口是一种终端设备,一般通过终端 ...

  5. Linux串口编程详解

    Linux串口编程详解(阻塞模式.非阻塞模式.select函数) 之前一直觉得串口编程很简单,这两天仔细研究后发现串口里的各种参数还挺复杂,稍不注意就容易出错,这里总结一下网上的各种文章及自己的理解与 ...

  6. Linux串口编程 —— 发送的数据无法被接收,且被原封不动返回

    Linux串口编程--发送的数据无法被接收,且被原封不动返回 问题描述 使用 #include <fcntl.h> /*文件控制定义*/ #include <termios.h> ...

  7. linux串口编程-termios结构

    linux串口编程简单起来可以十分简单,但是复杂起来,也可以异常复杂.因为linux串口不仅仅是个串口,它跟终端联系起来.一般串口编程,绕不开的是struct termios结构体,其定义如下: #d ...

  8. 嵌入式Linux 串口编程系列2--termios的VMIN和VTIME深入理解

    在上一篇文章中,我们介绍了串口的一些基本知识.串口配置接口 termios结构体的概念,串口的配置参数有n多个,这里面不用都背下来,什么时候使用,翻看手册即可,但是有两个 参数是一定要理解的,就是VM ...

  9. 嵌入式Linux 串口编程系列3——通过VTIM、VMIN、select实现串口不定长数据接收功能

    上一篇文章中,我们详细分析了VTIM和VMIN的功能, <嵌入式Linux 串口编程系列2--termios的VMIN和VTIME深入理解> 也明白了这两个参数设计的初衷和使用方法,接下来 ...

最新文章

  1. 30个最常用css选择器解析
  2. iptables加载顺序问题及优化方法
  3. SecureCRT设置背景颜色和目录(文件夹)颜色
  4. SAP Cloud for Customer UI Designer里如何消费Object Value Selector(OVS)
  5. C#中使用jieba.NET、WordCloudSharp制作词云图
  6. 水晶报表常见问题整理之一(20050417)
  7. 如何在 CentOS 中设置 NTP 服务器
  8. 数据库主从延迟导致查询不准确的解决思路
  9. Thread 线程基础之-线程相关知识
  10. mysql续型_mysql续集(查询部分)
  11. 华为根本没有鸿蒙系统,【图片】你看不明白的鸿蒙系统,才是华为缔造未来的“伟大”!华为并没有把系统划分为手机操作系统,我们就能知道华为想的并不是那么简单【手机吧】_百度贴吧...
  12. alfred 4 (mac提升效率工具)
  13. 关于软件工程的课程建议
  14. Bridge(桥接)-对象结构型模式
  15. 电脑(PC)端独立截图软件
  16. 无盘服务器 安装客户机程序,顺网云服务端和客户端安装
  17. 程序员的系统桌面应该是这样的
  18. 如何在把微信公众号生成链接
  19. Java课程设计-图书借阅管理系统
  20. wParam和lParam消息

热门文章

  1. Mybatis—注解开发
  2. leetcode413. 等差数列划分(动态规划)
  3. 怎么注销笔记本icloud_如何在笔记本电脑或台式机的Web浏览器中在线查看Apple iCloud照片
  4. r软件时间序列分析论文_高度比较的时间序列分析-一篇论文评论
  5. Flutter 36: 图解自定义 View 之 Canvas (三)
  6. [转]FFMPEG调节音频的音量大小,混音
  7. 【BZOJ4300】—绝世好题(二进制dp)
  8. Pytest高级进阶之Fixture
  9. js中判断值不等于undefined
  10. PowerShell使用教程