分享
 
 
 

FreeBSD handbook中文版 15 串口通讯

王朝system·作者佚名  2006-11-23
窄屏简体版  字體: |||超大  

目录

15 串口通讯

15.1 概要

15.2 介绍

15.3 终端

15.4 拨入服务

15.5 拨出服务

15.6 设置串行控制台

=============================================================

第15 章串口通讯

=============================================================

(翻译中出现的任何问题或错误,请广大读者及时反馈给我:freebsdhandbook@163.com)

15.1 概要

UNIX 都是支持串口通讯的。事实上,早期的UNIX 系统就是利用串行线来输入和输出数

据的。那时通常的“terminal”包含了一个每秒10 个字符的串行打印机和键盘时,现在这

些事情已经有所变化了。这章将介绍一些利用FreeBSD 进行串行通讯的方法。

读完这章,你将了解到:

. 如何通过终端连接到FreeBSD 系统。

. 如何使用modem 拨号到远程域。

. 如何允许远程用户通过modem 登陆到你的系统。

. 如何从串行控制台引导你的系统。

阅读这章之前,你应当了解:

. 如何配置和安装一个新的内核。(第9 章)

. 理解unix 的权限和进程。(第3 章)

. 通过网络设备访问技术参考手册。

15.2 介绍

15.2.1 术语

bps

每秒比特---数据的传输速率

DTE

数据终端设备---如你的电脑

DCE

第1 页FreeBSD 使用手册

数据通讯设备---如你的modem

RS-232

用于硬件串行通讯的EIA 标准

15.2.2 线缆和端口

要从你的FreeBSD 系统连接到一个modem 或终端,你需要有一个串行端口,和连接到你

串行设备的适当的线缆。如果你比较熟悉硬件和线缆,你可以跳过这节。

15.2.2.1 线缆

有好几种线缆。两个最普通的类型是null-modem 线缆和标准RS-232 线缆。你的硬件的

规格说明会有详细描述。

15.2.2.1.1 Null-modem 线缆

一个null-modem 线缆会直接通过象signal ground 这样的信号。如果你想自己选择线

缆,你可以做一个使用null-modem 的线缆。这个线缆在一个DB-25 连接器上会显示RS-232C

信号名和pin 号码。

Pin # Signal Signal Pin #

TxD 2 连接到3 RxD

RxD 3 连接到2 TxD

DTR 20 连接到6 DSR

DSR 6 连接到20 DTR

SG 7 连接到7 SG

DCD 8 连接到4 RTS

RTS 4 5 CTS

CTS 5 连接到8 DCD

15.2.2.1.2 标准RS-232C 线缆

一个标准的串行线缆会直接通过所有的RS-232C 信号。这是连接一个modem 到你的

FreeBSD 系统的线缆类型,线缆的类型需要针对一些终端。

第2 页FreeBSD 使用手册

15.2.2.2 端口

串行端口是FreeBSD 主机与终端传输数据的设备。这节描述了端口的种类和他们在

FreeBSD 上的地址。

15.2.2.2.1 几种端口

有好几种端口存在。你在购买和做线缆之前,你需要确定它是否适合你机器的接线端。

绝大多数的接线端有DB25 端口。个人电脑包括运行FreeBSD 的PC 机,有DB25 或DB9

端口。如果你有一个多端口的串行卡,你可以使用RJ-12 或RJ-45 端口。请仔细看看硬件

的说明。

15.2.2.2.2 端口名称

在FreeBSD 中,你可以通过/dev 目录中的一个记录来访问每个串行端口。有两种不同

的记录:

. 呼入端口被命名为/dev/ttyd N,这儿N 是端口号,从零开始。通常,你使用呼入端

口作为接线端。呼入端口要求数据线使用载波检测信号来工作。

. 呼出端口被命名为/dev/cuaa N。你通常不使用呼出端口作为接线端,只使用modem。

如果串行线或接线端不支持载波检测数据传输,你可以使用呼出端口。

如果你已经连接到了第一个串行端口,那你需要使用/dev/ttyd0 来应用接线端。如果它

是在第二个串行口,那就是/dev/ttyd1,等等。

15.2.3 内核配置

FreeBSD 默认支持4 个串行端口。在MS-DOS 下,这些是COM1:, COM2:, COM3:和COM4:。

FreeBSD 当前支持dumb 多端口串行接口卡,如BocaBoard 1008 and 2016,就象许多Digiboard

和Stallion Technologies 制造的智能多接口卡。默认的内核只会寻找标准的COM 接口。

要看看你的内核是否支持你的串口,需要在内核启动时查看一些信息,或使用

/sbin/dmesg 命令重新播出内核启动信息。特别的,寻找以sio 为特征的启动信息。

提示:要看看带有sio 的信息,可以使用下面的命令:

# /sbin/dmesg | grep 'sio'

第3 页FreeBSD 使用手册

例如,在一个带有4 个串行口的系统上,这些是串行口特定的内核启动信息:

sio0 at 0x3f8-0x3ff irq 4 on isa

sio0: type 16550A

sio1 at 0x2f8-0x2ff irq 3 on isa

sio1: type 16550A

sio2 at 0x3e8-0x3ef irq 5 on isa

sio2: type 16550A

sio3 at 0x2e8-0x2ef irq 9 on isa

sio3: type 16550A

如果你的内核没有认出你的所有串行口,你需要为你的系统定制一个内核。更多有关配

置内核的细节,可以看看第9 章。

在你的内核配置文件中相关的设备行是这样的:

device sio0 at isa? port "IO_COM1" tty irq 4 vector siointr

device sio1 at isa? port "IO_COM2" tty irq 3 vector siointr

device sio2 at isa? port "IO_COM3" tty irq 5 vector siointr

device sio3 at isa? port "IO_COM4" tty irq 9 vector siointr

你可以注释掉或完全删除你没有的设备。请看看sio 的有关如何为你的多端口主板写入

配置信息的联机手册。如果你使用了一个不同版本的FreeBSD 的配置文件,请小心点,因为

设备的标记在两个版本之间已经改变了。

15.2.4 设备指定文件

内核中的绝大多数设备可以通过device special files 来访问,它就在/dev 目录下。

Sio 设备通过/dev/ttyd N (dial-in)和/dev/cuaa N (call-out)来访问。FreeBSD 也提供了初

始化的设备(/dev/ttyid N and /dev/cuai0 N) 和锁定的设备(/dev/ttyld N and

第4 页FreeBSD 使用手册

/dev/cual0 N)。初始化的设备在每次端口被打开时被用来初始化设备通讯端口参数。例如使

用CTS/RTS 的流控制信号的crtscts。锁定设备被用来锁定端口的标记以阻止用户或程序改

变某个参数;看看termios, sio, and stty 的联机手册了解更多信息。

15.2.4.1 编译设备指定文件

注意:FreeBSD 5.0 已把自动创建设备接点的devfs 文件系统作为是必需的。如果你在

运行启用devfs 的FreeBSD 版本,你就可以跳过这一节。

一个在/dev 目录下的叫做MAKEDEV 的shell 脚本管理着设备的特殊文件。要使用

MAKEDEV 来编译拨号设备,以使用COM1:(port 0),cd 进入/dev,然后执行命令MAKEDEV

ttyd0。同样地,要编译拨号设备以使用COM2:(port 1),可以执行MAKEDEV ttyd1。MAKEDEV

不仅仅创建/dev/ttyd N设备特殊文件,也创建/dev/cuaa N, /dev/cuaia N, /dev/cuala N,

/dev/ttyld N, 和/dev/ttyid N节点。

编译完支持新设备的特殊文件之后,需要检查文件的权限来确定谁可以在这些文件上读

写—你可能不想让普通的用户来使用你的modem 吧。默认的在/dev/cua*上的权限应当比较

充分:

crw-rw---- 1 uucp dialer 28, 129 Feb 15 14:38 /dev/cuaa1

crw-rw---- 1 uucp dialer 28, 161 Feb 15 14:38 /dev/cuaia1

crw-rw---- 1 uucp dialer 28, 193 Feb 15 14:38 /dev/cuala1

这些许可允许用户uucp 和在组拨号上的用户使用呼出设备。

15.2.5 串行端口配置

ttyd N (或cuaa N)设备是你要打开你的应用程序的规则设备。当一个进程打开某个设备,

它将有一个终端I/O 的默认设置。你可以在命令行看这些设置:

# stty -a -f /dev/ttyd1

当你修改了这个设备的设置,这个设置会生效,除非设备被关闭。当它被重新打开时,

它将回到默认设置。要修改默认设置,你可以打开和调整initial state 设备的设置。例如,

要打开CLOCAL 模式,8 位通讯,默认的XON/XOFF 流控制,键入:

第5 页FreeBSD 使用手册

# stty -f /dev/ttyid5 clocal cs8 ixon ixoff

系统的串行设备的初试化可以在/etc/rc.serial 中被控制。这个文件影响了串行设备

的默认设置。

要防止某个设置被一个应用程序所修改,需要调整lock state 设备。例如,要锁定ttyd5

的速度为57600 bps,键入:

# stty -f /dev/ttyld5 57600

现在,一个打开ttyd5 和设法改变端口速度的应用程序将被固定在57600 bps。很自然

地,你需要确定初始情形,和锁定设备的写入状态,只有root 才能写。

15.3 终端

当你不在电脑控制台或不在一个连接的网络上时,终端提供了一个方便和低成本的访问

你的FreeBSD 系统的方法。这节描述了如何在FreeBSD 上使用终端。

15.3.1 终端的用法和类型

早期的UNIX 系统没有控制台。人们通过将终端连接到电脑的串行口来登陆和使用程序。

它很象用一个modem 和一些终端软件来拨号进入一个远程的系统只执行文本的工作。

今天的PC 已经可以使用高质量的图形了,但与今天的其他UNIX 操作系统一样,建立一

个登陆的能力仍然存在;通过使用一个终端连接到一个没有使用的串行口,你就能登陆和运

行任何文本程序或在X Window System 中运行一个xterm 窗口程序。

对于商业用户,你可以配上任何终端到FreeBSD 系统,然后把它们放在员工的桌面上。

对于一个家庭用户,可以使用一台比较老的IBM PC 或Macintosh 运行一个终端连接到一台

运行FreeBSD 的高性能机器上。

对于FreeBSD,有三种终端:

. Dumb 终端

. 充当终端的PCs

. X 终端

第6 页FreeBSD 使用手册

下面的小节将描述每一种。

15.3.1.1 Dumb 终端

Dumb 终端可以适应好几种硬件,让你通过串行线连接到电脑。他们被叫做dumb 是因为

他们只能够用来显示、发送和接受文本。你不能在它上面运行任何程序。

有好几百种dumb 终端被制造,包括Digital Equipment Corporation's VT-100 和

Wyse's WY-75。只有几种可以在FreeBSD 上工作。一些高端的终端可以显示图形,但只有某

软件包可以使用这些高级特性。

15.3.1.2 充当终端的PCs

如果一个dumb 终端有足够的能力来显示、发送和接受文本,那这些个人电脑可以作为

一个dumb 终端。你所需要的只是适当的线缆和一些终端模拟软件

这样一个配置被广泛运用于家庭。例如,如果你的妻子忙于在你的FreeBSD 系统控制台

上工作,你也可以从一台低档的个人电脑登陆到FreeBSD 系统执行一些文本的工作。

15.3.1.3 X 终端

X 终端是最复杂的终端系统。它们通常需要使用以太网来连接。他们能显示任何X 应用

程序。我们介绍X 终端只是为了感兴趣。然而,这章不会涉及X 终端的安装、配置或使用。

15.3.2 配置

这节描述了你在一个终端上启用一个登陆活动,需要你在FreeBSD 系统上配置些什么。

假设你已经配置好了你的内核来支持串行端口,你就可以连接了。

回想起第7 章,init 进程依赖于系统启动时所有的处理控制和初始化。通过init 来执

行的一些任务将先读取/etc/ttys 文件,然后在可用的终端上启用一个getty 进程。getty

进程可用来阅读一个登陆名和启动登陆程序。

然而,要配置你FreeBSD 系统的终端,你需要以root 来执行下面的步骤:

1. 如果它不在那儿,你需要为串行端口在/dev 目录下添加一行记录到/etc/ttys。

2. 指定/usr/libexec/getty 在端口上运行,然后从/etc/gettytab 文件指定适当的

getty类型。

第7 页FreeBSD 使用手册

3. 指定默认的终端类型。

4. 设置端口为on。

5. 确定端口是否为secure。

6. 迫使init 重新读取/etc/ttys 文件。

作为可选的步骤,你可以通过在/etc/gettytab 中建立一个记录,在第2 步创建一个定

制的getty类型来使用。这章不会介绍如何做;你可以看看gettytab 和getty 的联机手册

了解更多信息。

15.3.2.1 添加一个记录到/etc/ttys

/etc/ttys 文件列出了你FreeBSD 系统上允许登陆的所有端口。例如,第一个虚拟控制

台ttyv0 在这个文件中有一个记录。你可以使用这个记录登陆进控制台。这个文件也包含其

他虚拟控制台的记录、串行口、和伪-ttys。对于一个硬连线的终端,只要列出串行端口的

/dev 记录。

默认的FreeBSD 安装包括了支持最初四个串行口ttyd0 到ttyd3 的/etc/ttys 文件。如

果你从那些端口来使用终端,你不需要添加另一个记录。

例15-1.添加终端记录到/etc/ttys

建议我们连接两个终端给系统:一个Wyse-50 和一个老的运行Procomm 终端软件模拟一

个VT-100 终端的286IBM PC。在/etc/ttys 文件中的相应的记录是这样的:

"/usr/libexec/getty std.38400" wy50 on insecure ttyd1

ttyd5 "/usr/libexec/getty std.19200" vt100 on insecure

,第一部分指定了终端特殊文件的名称,它可以在/dev 中找到。

,第二部分是在这行执行的命令,通常是getty。Getty 初始化然后打开一行,设置

速度,用户名的命令和执行登陆程序。

getty 程序在它的命令行接收一个参数, getty类型。一个getty类型会在终端行描述

一个特征,象bps rate 和parity。getty 程序从/etc/gettytab 文件读取这些字符。文件

/etc/gettytab 包含了许多老的和新的终端线的记录。在很多例子中,启动文本std 的记录

第8 页FreeBSD 使用手册

将用硬连线终端来工作。这些记录忽略了奇偶性。这是一个从110 到115200 的每bps 的std

记录。当然,你可以添加你自己的记录到这个文件。Gettytab 的联机手册提供了更多的信

息。

当在/etc/ttys 中设置getty类型的时候,确信在终端上的通讯设置匹配。

在我们的例子中,Wyse-50 不使用奇偶性,用38400 bps 来连接。286 PC 不使用奇偶性,

用19200bps 来连接。

,第三部分是通常连接到那个tty 线的终端类型。对于拨号端口,不知名的或拨出的

通常被用在这个地方。对于硬连线的终端,终端类型不会改变,所以你可以从termcap 数据

库文件中放置一个真正的终端类型。

在我们的例子中,Wyse-50 使用真正的终端类型,而运行Procomm 的286 PC 将被设置成

在VT-100 上的模拟。

,如果端口被启用,可以指定第四个部分。在第二部分,把它放在这儿将执行初始化

进程来启动程序getty。如果你在这部分推迟,将没有getty,在端口上因此就没有登陆。

,最后部分被用来指定端口是否安全。标记一个安全的端口意味着你信任它允许用root

帐户从哪个端口登陆。不安全的端口不允许root 登陆。在一个不安全的端口上,用户必须

用无特权的帐户登陆,然后使用su 或一个相似的机制来获得超级用户的权限。

15.3.2.2 重新读取/etc/ttys 来强制初始化

对/etc/ttys 文件做一个必要的修改后,你必须发送一个SIGHUP 信号给初始化进程来

迫使它重新读取它的配置文件,例如:

# kill -HUP 1

如果能够被正确设置,所有的线缆都是适当的,终端将可以启用了,然后一个getty

进程将在每个终端被运行,你将在你的终端上看到登陆命令行。

15.3.3 你的连接可能出现的问题

即使你小心翼翼地注意细节,你仍然可能会在设置终端时出错。这儿有一个有关问题的

现象和解决办法的列表:

第9 页FreeBSD 使用手册

1,没有登陆命令出现:

确定终端被嵌入和打开了。如果把一台个人电脑充当一个终端,确信终端模拟软件运行

在正确的串口上。

确信线缆被稳固地连接在终端和FreeBSD 电脑上。确信用了正确的电缆。

确定终端和FreeBSD 的传输速率和奇偶设置已经一致了。如果你有一个图象显示终端,

确信对比度已经调节好了。如果它是一个可打印的终端,确信纸张和墨水已经准备好了。

确定一个getty 进程正在运行和服务终端。例如,可以用ps 命令来得到运行getty 程

序的列表,键入:

# ps -axww|grep getty

你将看到一个终端的记录。例如,下面的显示表明一个getty 正在第二个串行端口ttyd1

运行,正在/etc/gettytab 中使用std.38400 的记录:

22189 d1 Is+ 0:00.03 /usr/libexec/getty std.38400 ttyd1

如果没有getty 进程运行,确信你已经在/etc/ttys 中启用了端口。在修改完ttys 文

件后,记得运行kill -HUP 1 。

2,出现一个“垃圾”而不是一个登陆命令行

确信终端和FreeBSD 使用相同的bps 传输率和奇偶校验设置。检查一下getty 进程确信

当前使用的正确的getty 类型。如果没有,编辑/etc/ttys 然后运行kill -HUP 1。

3,当键入密码时,字符两个两个出现

将终端(或终端模拟软件)从“half duplex”或“local echo”换成“full duplex”。

15.4 拨入服务

配置FreeBSD 系统来用拨入服务与连接到终端是非常相似的,除非你正在使用modem

来拨号。

15.4.1 外置和内置modem

外置modem 看起来很容易拨号。因为,外置modem 可以通过储存在非易失性的RAM 中的

第10 页FreeBSD 使用手册

参数来配置,他们通常提供指示器来显示重要的RS-232 信号的状态。不停闪光的信号灯能

给用户留下比较深刻的印象,而且指示器也可以用来查看modem 是否正常地工作。

内置modem 通常缺乏非易失性的RAM,所以对它们的配置可能被限制在通过DIP 开关来

设置。如果你的内置modem 有指示灯,你也很难看得到。

15.4.1.

[1] [2] [3] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有