发布日期:2015-09-18 15:20 来源: 标签: Linux教程 串行设备 访问串行设备 访问串行
内核为访问串行设备所提供的设备一般称为tty 。其完整称呼是teletype,它一度是早期Unix时代的主要终端产品。今天,这个术语代表的是任何一种基于字符的数据终端。本章中,我们用它来代表内核设备。
1、串行设备概述 
       内核为访问串行设备所提供的设备一般称为 t t y 。其完整称呼是t e l e t y p e ,它一度是早期U n i x 时代的主要终端产品。今天,这个术语代表的是任何一种基于字符的数据终端。本章中,我们用它来代表内核设备。 
       L i n u x将t t y分为三类:(虚拟)控制台、伪终端(类似于一个双向管道,供X 11之类的应用 程序使用)和串行设备。后者也被算做 t t y,因为它们允许终端或远程计算机通过串行链路实现交互式会话。 
        t t y 的配置参数较多,可利用i o c t l ( 2 )系统方法调用来设定这些参数。多数参数都只适用于 串行设备,因为它们需要更大的灵活性来处理不同类型的连接。 最突出的线路参数是line speed       (线路速率)和p a r i t y (奇偶校验)。另外还有一些标记用于大小写转换、回车到链接速率的转换。t t y驱动程序还支持不同的line disciplines(线路规则,即线路协议),线路规则会令设备驱动程序的行为截然不同。例如, S L I P驱动程序就是通过一条特殊的线路规则来实施的。 
       应该怎样来描述线路速率呢?最恰当的术语是“位速率”(bit rate )。数据通信中,通过 通信线路传输二进制位的速度。通常用每秒位数或比特/秒表示( b p s )。有时,也会听到有 人称之为“波特率”(baud rate ),其实这种称呼是很不恰当的。两个术语不能互换。波特率指的是某个串行设备的物理特性,即时钟频率,是每秒钟传送的信息位数量。而位速率,代表的是两个通信点之间的现有串行连接当前所处的状态,即每秒钟内传送的平均信息位数量。记住这两个值不同是很重要的,因为多数设备在每个电子脉冲处理的位数不止一位。 
2、访问串行设备 
        像系统内所有的设备一样,对串行端口的访问是通过特定的设备文件(位于 / d e v 目录下)来完成的。有两类与串行驱动程序相关的设备文件,每个端口都有自己的设备文件。采用的 文件不同,设备的行为也会有所不同。 
        第一类用于端口拨号时;它有一个主要的编号4,其文件名分别为t t y S 0、t t y S 1等等。第二类 用于通过端口拨出时;其文件名为c u a 0、c u a 1等等,其主要编号是5               (L i n u x设备有一个主编号和副编号。在做一个很长的目录清单(l s - 1)时,也需列出设备编号。我们将在清单4 - 1 中向大家展示一个示例。主编号是5,副编号在64到67之间)。 
        两种类型的副编号完全相同。如果你的m o d e m在端口C O M 1到C O M 4之间的其中一个端口上,其副编号就会是C O M端口号再加上6 3。如果你的设置与此不符,比如使用的是一张支持多串行线路的网卡,就有必要查看Serial HOWTO来了解详情。 
       现在,我们假设你的m o d e m位于C O M 2端口上。因此,其副编号是6 5,主编号是5,用于拨出。另外还应该有一个拥有这些编号的设备 c u a 1 。然后,列出/ d e v 目录中所有的t t y 。第5和第6列将分别展示主编号和副编号,如清单4 - 1所示。 

                       清单4-1   设备c u a 1中的主编号和副编号

 如果没有此类的设备,必须建立一个:become super-user and type 

 有人建议令/ d e v / m o d e m作为一个象征性的链接,链接到自己的 m o d e m设备,以便临时性的用户无须去记住颇费脑筋的c u a 1 。但是,没有人愿意在这个程序使用 m o d e m ,又在另一个程序内去取真正的设备文件名。正因为此,这类程序通常采用一个所谓的“锁文件”(l o c k f i l e s )来表示设备正在使用中。按照惯例,c u a 1的锁文件名一般是L C K . . c u a 1 。针对同一个端口,使用不同的设备文件将意味着程序不能识别彼此的锁文件,因而两者都会同时采用这个设备。其结果是两个应用程序根本不能运行。



相关评论

专题信息
    Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。