26.2. 串行通信中的术语和硬件

以下术语通常用于串行通信:

bps

每秒传输位数 (Bits per Second bps) 衡量数据传输速度。

DTE

数据终端设备DTE) 是串行通信中的两个设备之一。本例中的数据终端设备是计算机。

DCE

数据通信设备DTE) 是串行通信中的另一个终端。通常是调制解调器或串行终端。

RS-232

定义硬件串行通信的原始标准。后来更名为TIA-232

当讨论通讯数据速度的时候,这节不会使用术语 baud。Baud指电气标准传输率,它已经使用了很长时间, 而 bps (bits per second) 才是正确使用的术语。

要将串行终端连接到 FreeBSD 系统,需要计算机上的串口和连接到串行设备的适当电缆。已经熟悉串行硬件和布线的用户可以跳过此部分。

26.2.1. 序列线与端口

有几种不同的串行电缆。两种最常见的类型是空调制解调器电缆和标准RS-232电缆。硬件的说明文档应描述所需的电缆类型。

这两种类型的电缆在连接导线的方式上有所不同。每根导线表示一个信号,定义的信号在表 26.1 “RS-232C 信号名称”中汇总。标准串行电缆直接通过所有RS-232C信号。例如,电缆一端的传输数据(Transmitted Data)引脚转到另一端的传输数据(Transmitted Data)引脚。这是用于将调制解调器连接到 FreeBSD 系统的电缆类型,也适用于某些终端。

null-modem 电缆在一端切换连接器的传输数据引脚,另一端切换接收数据引脚。连接器可以是DB-25DB-9

可以使用表 26.2 “DB-25对DB-25 Null-Modem线”, 表 26.3 “DB-9 对 DB-9 Null-Modem 线”表 26.4 “DB-9 对 DB-25 Null-Modem线”中的引脚连接构造空调制解调器电缆。虽然标准要求直通引脚 1 到引脚 1保护接地(Protective Ground)线,但经常被省略。某些终端仅使用引脚 2、3 和 7 工作,而其他终端需要不同的配置。如有疑问,请参阅硬件文档。

表 26.1. RS-232C 信号名称
缩写名称
RD接收到的数据
TD已传输的数据
DTR数据终端准备就绪
DSR数据集就绪
DCD数据载波检测
SG信号接地
RTS请求发送
CTSClear To Send (允许发送)

表 26.2. DB-25对DB-25 Null-Modem线
信号针脚# 针脚#信号
SG7连接到7SG
TD2连接到3RD
RD3连接到2TD
RTS4连接到5CTS
CTS5连接到4RTS
DTR20连接到6DSR
DTR20连接到8DCD
DSR6连接到20DTR
DCD8连接到20DTR

表 26.3. DB-9 对 DB-9 Null-Modem 线
信号针脚# 针脚#信号
RD2连接到3TD
TD3连接到2RD
DTR4连接到6DSR
DTR4连接到1DCD
SG5连接到5SG
DSR6连接到4DTR
DCD1连接到4DTR
RTS7连接到8CTS
CTS8连接到7RTS

表 26.4. DB-9 对 DB-25 Null-Modem线
信号针脚# 针脚#信号
RD2连接到2TD
TD3连接到3RD
DTR4连接到6DSR
DTR4连接到8DCD
SG5连接到7SG
DSR6连接到20DTR
DCD1连接到20DTR
RTS7连接到5CTS
CTS8连接到4RTS

注意:

当某一段连接器上的一个引脚需要连接到对端的一对引脚时, 通常是将那一对引脚使用一短线连接, 而使用长线接到另一端的那个引脚。

串行端口是在 FreeBSD 主机和终端之间传输数据的设备。存在多种串行端口。在购买或构建电缆之前,请确保电缆适合终端和 FreeBSD 系统上的端口。

大多数终端都有DB-25端口。个人计算机可能具有DB-25DB-9端口。多端口串行卡可能具有RJ-12RJ-45/端口。有关端口类型的规范,请参阅硬件的说明书,或直接查看端口类型。

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

  • 调用端口(Call-in ports)被命名为/dev/ttyuN,其中N是端口号,从0开始。如果终端连接到第一个串口(COM1),请使用/dev/ttyu0来引用终端。如果终端在第二个串口(COM2),则使用/dev/ttyu1,以此类推。一般情况下,调用端口用于终端。调入端口需要串口线断言数据载波检测信号才能正常工作。

  • 在 FreeBSD 8.X 之后的系统上,呼出端口的名字是/dev/cuauN,在 FreeBSD 7.X 之前的系统上,呼出端口的名字是/dev/cuadN。 通常并不使用呼出端口作为终端, 而只用于调制解调器。 如果串口线或终端不支持载波检测信号, 则可能必须要使用呼出端口。

FreeBSD 还提供初始化设备 (/dev/tyuN.init/dev/cuauN.init/dev/cuadN.init)和锁定设备(/dev/ttyuN.lock/dev/cuauN.lock/dev/cuadN.lock)。初始化设备用于在每次打开端口时初始化通信端口参数,例如使用RTS/CTS信令进行流量控制的调制解调器的crtsct。锁定设备用于锁定端口上的标志,以防止用户或程序更改某些参数。有关终端设置、锁定和初始化设备以及设置终端选项的信息,请参阅termios(4)sio(4)stty(1)

26.2.2. 串行端口设置

默认情况下,FreeBSD 支持四个串行端口,名字通常为COM1COM2COM3COM4。FreeBSD 还支持dumb 多端口串行接口卡,如 BocaBoard 1008 和 2016,以及更智能的多端口卡,如 Digiboard 制作的卡。但是,默认内核仅查找标准COM端口。

要查看系统是否识别串行端口,请查找以uart开头的系统启动消息:

# grep uart /var/run/dmesg.boot

如果系统无法识别所有需要的串行端口,则可以向/boot/device.hints添加条目。此文件已包含COM1hint.uart.1.*条目,以及COM2的条目。为COM3添加端口条目时,请使用0x3E8COM4使用0x2E8。通用IRQ地址为5表示COM39表示COM4

要确定端口使用的默认终端I/O设置集,请指定其设备名称。本示例确定COM2上的呼叫端口的设置:

# stty -a -f /dev/ttyu1

串行设备的系统范围初始化由/etc/rc.d/serial控制。此文件影响串行设备的默认设置。要更改设备的设置,请使用stty。默认情况下,更改的设置在设备关闭和设备重新打开之前有效,它返回默认集。要永久更改默认设置,请打开并调整初始化设备的设置。例如, 要为ttyu5 打开 CLOCAL 模式,8位通讯和默认的 XON/XOFF 流控制, 输入:

# stty -f /dev/ttyu5.init clocal cs8 ixon ixoff

为防止应用程序更改某些设置,请对锁定设备进行调整。例如,要把 ttyu5 的速率锁定为 57600 bps, 输入:

# stty -f /dev/ttyu5.lock 57600

现在,一个打开ttyu5 和设法改变端口速度的应用程序将被固定在57600bit/s。很自然地, 您需要确定初始状态,然后用root帐户锁定状态设备的写入功能。

本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题,请先阅读 文档,如不能解决再联系 <questions@FreeBSD.org>.

关于本文档的问题请发信联系 <doc@FreeBSD.org>.