2.2. 选择一个串口

2.2.1. 串口名称

Linux 依照 UNIX 传统命名其串口。第一个串口的文件名是/dev/ttyS0,第二个串口的文件名是/dev/ttyS1,依此类推。

这与 IBM PC 传统不同。第一个串口被命名为COM1,第二个串口被命名为COM2,依此类推。在 IBM PC/AT 计算机及其后继机型上最多可以有四个串口。

大多数引导加载程序还有另一种命名方案。第一个串口编号为01,依此类推。

如果你的 Linux 发行版使用 devfs 设备管理器,那么串口还有另一种名称。第一个串口是/dev/tts/0,第二个串口是/dev/tts/1,依此类推。

结果是,第一个串口在COM1IBM PC 的机箱上被标记为;被称为/dev/ttyS0Linux 中被称为;被称为/dev/tts/0在配置了 devfsLinux 中被称为;在许多引导加载程序中被称为端口0

HOWTO 中的示例使用第一个串口,因为那是大多数读者希望使用的串口。

表 2-1. 同一个串口的多种名称

IBM PCLinux 内核使用 devfsLinux 内核大多数引导加载程序
COM1/dev/ttyS0/dev/tts/00
COM2/dev/ttyS1/dev/tts/11
COM3/dev/ttyS2/dev/tts/22
COM4/dev/ttyS3/dev/tts/33

2.2.2. 不能共享用于控制台串口的中断

当串口用作控制台时,不能与另一个设备共享中断。IBM PC 设备通常按照表 2-2 所示安装。如果你使用串口/dev/ttyS0作为控制台,那么你应该避免共享中断 4,方法是不安装串口/dev/ttyS2在你的 PC 中。如果/dev/ttyS2无法物理移除,那么可以使用 setserial 命令禁用它,如图 2-1 所示。

表 2-2. 用于 IBM PC/AT RS-232 端口的中断

设备中断端口
/dev/ttyS040x3f8
/dev/ttyS130x2f8
/dev/ttyS240x3e8
/dev/ttyS330x2e8

图 2-1. 在/etc/rc.serial中使用 setserial 命令禁用串口/dev/ttyS2

# Disable /dev/ttyS2 so interrupt 4 is not shared,
# then /dev/ttyS0 can be used as a serial console.
setserial /dev/ttyS2 uart none port 0x0 irq 0

阅读源代码表明,中断共享约束适用于所有计算机架构,而不仅仅是 Intel Architecture-32。