Linux 串口编程一 一些背景

在大部分讲解 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/403075.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 终端概述与分类

该博文已经迁移到其他博客&#xff0c;参见&#xff1a; Linux 终端IO概念与背景介绍

Linux tty驱动程序一 架构

tty 核心概览如下图所示&#xff1a; 可以看到&#xff0c;tty 架构的划分层次&#xff0c;由下至上的逻辑关系为&#xff1a;硬件 -> tty 驱动 -> tty 线路规程&#xff08;也译为行规程&#xff09;-> tty 核心 -> 用户层。 内核负责控制 tty 设备的数据流&…

Linux 串口编程二 深入了解 termios

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

Libusb开发教程三 USB设备程序开发

首先&#xff0c;需要指出本篇博客的基础仍然是基于 libusb V1.0 以下。主要考虑到保持与之前博客的连贯性&#xff0c;在上一篇博客中介绍了老版本中可以被调用的 API 以及功能介绍&#xff0c;对于库中 API 接口函数的使用相信读者会一目了然&#xff0c;不需要刻意记忆&…

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

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

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

Linux 串口编程和程序相对来说是很简单的&#xff0c;之所以用博客连载来展示&#xff0c;主要是想在学会使用的基础上掌握相关背景&#xff0c;原理以及注意事项。相信在遇到问题的时候&#xff0c;我们就不会对于技术的概念和 API 的使用浅尝辄止了。下面进入具体应用案例&am…

POSIX 串口编程指南

介绍 POSIX 串口编程指南将教会你在你的 UNIX 工作站或者 PC 上面如何成功、有效以及可移植性的对串口编程。每一章提供了使用 POSIX 终端控制函数的编程例程&#xff0c;可以基本不经修改地工作在 IRIX, HP-UX, SunOS, Solaris, Digital UNIX, Linux 以及其他大多数 UNIX 操作…

串口流控

流控作用 这里讲到的“流”&#xff0c;指的是数据流。数据在两个串口之间传输时&#xff0c;当通讯双方速率不匹配时&#xff0c;常常会出现丢失数据的现象。如台式机与单片机之间的通讯&#xff0c;若接收端数据缓冲区已满&#xff0c;继续发送来的数据就会丢失。在早期网络…

电容的分类及作用

旁路 旁路电容是为本地器件提供能量的储能器件&#xff0c;它能使稳压器的输出均匀化&#xff0c;降低负载需求。就像小型可充电电池一样&#xff0c;旁路电容能够被充电&#xff0c;并向器件进行放电。为尽量减少阻抗&#xff0c;旁路电容要尽量靠近负载器件的供电电源管脚和…

快速解决 Android SDK Manager 无法下载或者下载速度慢

在这里以 Windows 下的 Android SDK Manager 为例&#xff0c;其他系统下与此类似&#xff0c;只会存在部分工具栏名称不同的情况&#xff0c;不明之处可以追问。下面就进入具体配置流程&#xff1a; 1. 选择 Tools->Options 进入代理设置。 代理设置选项&#xff0c;在 H…

安卓之USB主机(Host)与配件(Accessory)模式

安卓设备与USB硬件通讯时有两种模式可以选择&#xff1a;USB Host 模式与 USB Accessory 模式。从 USB 逻辑角色来说&#xff0c;USB Host 模式是指安卓设备作为 USB 主机&#xff0c;所有活动均由安卓设备发起&#xff1b;USB Accessory 模式是指安卓设备作为 USB 设备&#x…

安卓USB开发教程 一 USB Host 与 Accessory

安卓通过两种模式&#xff1a;USB Accessory 与 USB Host 模式支持多种 USB 外设与安卓 USB 配件&#xff08;实现安卓配件协议的硬件&#xff09;。在 USB 配件模式下&#xff0c;外部 USB 硬件充当 USB 主机。配件实例可能包含机器人控制器、扩展坞、诊断和音乐设备、售货亭、…

安卓USB开发教程 二 USB Host

USB Host&#xff08;主机模式&#xff09; 当 Android 设备处于 USB 主机模式时&#xff0c;它充当 USB 主机&#xff0c;为总线供电&#xff0c;并枚举连接的 USB 设备。Android 3.1 及更高版本支持 USB 主机模式。 API 概述 在开始之前&#xff0c;理解需要使用的类是很重…

安卓USB开发教程 三 USB Accessory

USB Accessory&#xff08;配件模式&#xff09; USB 配件模式允许用户连接专为 Android 设备设计的 USB 主机硬件。配件必须遵守 Android Accessory Development Kit 文档中列出的 Android 配件协议。 这使得 Android 设备无法充当 USB 主机时仍然可以与 USB 硬件交互。 当 A…

Android ADB

Android 调试桥 本文内容 adb 的工作方式在您的设备上启用 adb 调试通过 WLAN 连接到设备查询设备将命令发送至特定设备安装应用设置端口转发将文件复制到设备/从设备复制文件停止 adb 服务器adb 命令参考发出 shell 命令 调用 Activity Manager (am)调用软件包管理器 (pm)进行…

轻松访问 Android 系统源码与下载

有时研究 Android 某个特性或者协议的时候需要参阅安卓系统源代码中代码实现或者协议文档等。通过正常的建立 repo&#xff0c;git 获取十分耗时&#xff0c;并且速度很慢&#xff0c;除非是需要重新编译系统&#xff0c;定制系统才需要这样做。因此&#xff0c;推荐一个 Andro…

安卓系统源代码下载(官方教程)

下载源代码 Android 源代码树位于由 Google 托管的 Git 代码库中。Git 代码库中包含 Android 源代码的元数据&#xff0c;其中包括与对源代码进行的更改以及更改日期相关的元数据。本文档介绍了如何下载特定 Android 代码流水线的源代码树。 要从特定设备的出厂映像开始&#x…

Cygwin 下载极速源推荐

Cygwin 默认列表中的源下载速度太慢&#xff0c;国内使用时常用以下几个源&#xff0c;经过实际使用速度很快&#xff0c;下载时不妨几者都尝试下&#xff1a; 如上图所示&#xff0c;下载时在此栏填写 URL 地址即可&#xff0c;推荐地址&#xff1a; http://mirrors.sohu.com…

安卓USB开发教程 四 安卓 AOA

Android 开放性配件协议&#xff08;AOA&#xff09; Android 开放性配件协议&#xff08;AOA&#xff09;支持允许外部 USB 硬件&#xff08;Android USB 配件&#xff09;与工作在配件模式下的 Android 设备进行交互。当处于配件模式的 Android 设备被供电&#xff0c;所连接…

安卓USB开发教程 五 安卓 AOA 1.0

Android Open Accessory Protocol 1.0&#xff08;AOA 协议 1.0&#xff09; Android USB 配件必须遵从 Android Open Accessory&#xff08;AOA&#xff09;协议&#xff0c;该协议定义了配件如何检测和建立与 Android 设备的通信。配件应执行以下步骤&#xff1a; 1. 等待并…