本 HOWTO 涵盖了关于串行端口的基本信息,这种端口在新式个人电脑上已经消失,但在最近的嵌入式系统以及路由器、销售点设备等中仍然被使用。它包括多端口串行卡。本文档编写于串行端口是连接 PC 与调制解调器和打印机等主要端口的时代,本文的风格也反映了这一点。如果您在串行端口方面遇到问题,想要了解其工作原理,或者在学习串行编程之前需要对其进行详细的介绍,那么这里是找到相关信息的地方。
本 HOWTO 是关于使用 UART 芯片的原始串行端口,有时被称为 “UART 串行端口”,以区别于新型串行设备:通用串行总线或火线。与新型串行设备相比,它速度较慢,但发送文本的速度仍然比您阅读的速度快几倍。关于使用串行端口的设备的具体信息:模拟调制解调器、文本终端、红外设备和一些打印机,可在 Modem-HOWTO、Text-Terminal-HOWTO、Infrared-HOWTO 和 Printing-HOWTO 中找到。关于 getty(运行登录进程或类似进程的程序)的信息也已移至其他相关的 HOWTO,因为 mgetty 和 uugetty 最适合调制解调器,而 agetty 最适合文本终端。如果您正在处理调制解调器、文本终端、红外设备或打印机,那么您可能不需要查阅本 HOWTO。但是,如果您正在将串行端口用于其他设备、使用多端口串行卡、对串行端口本身进行故障排除,或者想要了解串行端口的更多技术细节,那么您可能需要使用本 HOWTO 以及其他一些 HOWTO。(请参阅 相关 HOWTO)本 HOWTO 列出了关于各种多端口串行卡的信息。本 HOWTO 针对运行在 PC(ISA 和/或 PCI 总线)上的 Linux,尽管它可能也适用于其他架构。
版权所有 (c) 1993-1997 Greg Hankins,(c) 1998-2005 David S. Lawyer mailto:dave@lafn.org
请以任何格式自由复制和分发(出售或赠送)本文档。请将任何更正和意见发送给文档维护者。您可以创建衍生作品并分发它,前提是您
如果您正在考虑制作除翻译以外的衍生作品,则请求您与当前的维护者讨论您的计划。
虽然我没有故意误导您,但本文档中可能存在许多错误。请告知我这些错误。由于这是免费文档,因此显而易见,我对任何错误不承担法律责任。
任何品牌名称(以大写字母开头,例如 MS Windows)都应被视为商标。此类商标属于其各自的所有者。
最初的 Serial-HOWTO 的大部分内容由 Greg Hankins 编写。 mailto:gregh@twoguys.org 他还重写了许多其他人的贡献,以保持写作风格和流程的连贯性。他写道:“感谢所有做出贡献或评论的人,人员名单已经太长而无法一一列出(大约一百多人)。特别感谢 Ted Ts'o 回答有关串行驱动程序的问题。” v2.00 大约一半来自 Greg Hankins HOWTO,另一半是 David Lawyer 的补充。Ted Ts'o 一直乐于助人。在 2006 年 1 月,“Charles Brockman” 审查了其中的错别字,从而修复了许多错别字。
新版本可能会每隔一两年发布一次。它们将在 LDP 镜像站点上提供浏览和/或下载,请参阅:http://www.tldp.org/mirrors.html。提供各种格式。如果您只想快速查看最新版本的日期,请查看 http://www.tldp.org/HOWTO/Serial-HOWTO.html 并将其与此版本进行比较:v2.27 2011 年 2 月。
有关追溯到我开始维护本 HOWTO 的完整修订历史,请参阅源文件(linuxdoc 格式):(cvs) Serial-HOWTO.sgml
调制解调器、文本终端、一些打印机和其他外围设备通常使用串行端口。从最近的镜像站点获取这些 HOWTO,如上所述。
Modem-HOWTO
是关于安装和配置调制解调器的Printing-HOWTO
包含使用旧 lpr 命令的串行打印机的信息LPRng-HOWTO
(不是 LDP HOWTO,可能随附软件)包含关于 “下一代” lpr 的串行打印的信息Serial-Programming-HOWTO
帮助您编写 C 程序,以读取和写入串行端口和/或检查/设置其状态。Vern Hoxie 编写但未提交给 LDP 的版本位于 Internet 部分。Text-Terminal-HOWTO
是关于它们的工作原理、如何安装配置和维修它们。它包括关于 “使终端成为控制台” 的部分,这对于使用远程终端控制服务器(通过串行端口)很有用。Remote-Serial-Console-HOWTO
是关于使文本终端成为控制台,以便它可以显示启动时消息等。请向我发送任何建议、更正或补充材料。告诉我您不理解的内容或可以更清楚的内容。您可以通过电子邮件 mailto:dave@lafn.org
与我联系。
传统的串行端口(不是较新的 USB 端口或火线端口)是一个非常古老的 I/O(输入/输出)端口。直到大约 2006 年,大多数新台式 PC 都配备了一个,而 1990 年代的旧 PC 有时配备了 2 个。大多数笔记本电脑在台式机之前就放弃了它们。1998 年年中之后的 Mac(苹果电脑)只有 USB 端口。但是,可以将传统的串行端口设备放在所有现代 PC 上的 USB 总线上。
每个串行端口在 /dev 目录中都有一个与之关联的 “文件”。它实际上不是文件,但看起来像一个文件。例如,/dev/ttyS0。其他串行端口是 /dev/ttyS1、/dev/ttyS2 等。但是 USB 总线、多端口卡等上的端口具有不同的名称。
传统串行端口的通用规范是 RS-232(或 RS-232)。因此,它通常被称为 “RS-232 串行端口”。串行端口的连接器通常被视为 PC 背面的一个或两个 9 针连接器(在某些情况下为 25 针)。但是串行端口不仅仅是连接器。它包括相关的电子设备,这些电子设备必须产生符合 RS-232 规范的信号。请参阅 电压波形。一个引脚用于发送数据字节,另一个引脚用于接收数据字节。另一个引脚是公共信号地。其他 “有用” 的引脚主要用于信令目的,稳定的负电压表示 “关”,稳定的正电压表示 “开”。
UART(通用异步接收器-发送器)芯片完成了大部分工作。如今,此芯片的功能通常内置于另一个芯片中。请参阅 什么是 UART? 这些芯片随着时间的推移而得到改进,旧型号(例如 1994 年之前的型号)通常非常过时。
串行端口最初设计用于将外部调制解调器连接到 PC,但它也用于连接许多其他设备,例如鼠标、文本终端、一些打印机等。您只需使用正确的电缆将这些设备插入串行端口即可。许多内置调制解调器卡都有内置的串行端口,因此当您在 PC 内部安装一个时,就好像您只是在 PC 中安装了另一个串行端口。