第12章。配置您的调制解调器和串行端口

目录
12.1. 关于串行端口和速度能力的说明
12.2. 串行端口名称
12.3. 配置您的调制解调器
12.4. 关于串行流控制的说明
12.5. 测试您的调制解调器以进行拨号

您应该确保您的调制解调器已正确设置,并且您知道它连接到哪个串行端口。

记住...

同样值得记住的是,如果您有 4 个串行端口,标准的 PC 设置是 com1 和 com3 共享 IRQ4,而 com2 和 com4 共享 IRQ3。

如果您的标准串行端口上有设备与您的调制解调器共享 IRQ,您将会遇到问题。 您需要确保您的调制解调器串行端口具有自己唯一的 IRQ。 许多现代串行卡(和更高质量的主板串行端口)允许您移动串行端口的 IRQ。

如果您运行的是 Linux 内核 2,您可以使用以下命令检查正在使用的 IRQcat /proc/interrupts,这将产生如下输出
 0:    6766283   timer
 1:      91545   keyboard
 2:          0   cascade
 4:     156944 + serial
 7:     101764   WD8013
10:     134365 + BusLogic BT-958
13:          1   math error
15:    3671702 + serial

这显示了 IRQ4 上的一个串行端口(鼠标)和 IRQ15 上的一个串行端口(到 Internet 的永久调制解调器 PPP 链接)。 (com2 上也有一个串行端口,IRQ3,com4 在 IRQ14 上,但由于它们未使用,因此不显示)。

请注意 - 如果您要摆弄您的 IRQ,您需要知道您在做什么! 您不仅必须打开计算机,拔出卡并摆弄跳线,而且您需要知道哪个 IRQ 上有什么。 在我的情况下,这是一台完全基于 SCSI 的 PC,因此我可以禁用通常使用 IRQ14 和 15 的“主板上”的 IDE 接口!

您还应该记住,如果您的 PC 启动其他操作系统,移动 IRQ 可能会导致操作系统无法正常启动 - 甚至根本无法启动!

如果您确实将您的串行端口移动到非标准的 IRQ,那么您需要告诉 Linux 每个端口正在使用哪个 IRQ。 这是通过使用“setserial” ,最好在启动过程中在rc.localrc.serial中完成,它从rc.local或作为 SysV 初始化的一部分调用。 对于上面图示的机器,使用的命令是...
/bin/setserial -b /dev/ttyS2 IRQ 11
/bin/setserial -b /dev/ttyS3 IRQ 15

但是,如果您正在使用动态加载的串行模块,当需要时,通过kerneld进程,您不能在启动时一次性设置并忘记 IRQ(等等)。 这是因为如果卸载了串行模块,Linux 会忘记特殊设置。

因此,如果您按需加载串行模块,您将需要在每次加载模块时重新配置 IRQ(等等)。

12.1. 关于串行端口和速度能力的说明

如果您正在使用高速(外部)调制解调器(14,400 波特或更高),您的串行端口需要能够处理这种调制解调器能够产生的吞吐量,尤其是在调制解调器压缩数据时。

这要求您的串行端口使用现代 UART(通用异步接收器/发送器),例如 16550(A)。 如果您正在使用旧机器(或旧串行卡),您的串行端口很可能只有 8250 UART,当与高速调制解调器一起使用时,这将给您带来相当大的问题。

使用命令...
setserial -a /dev/ttySx

以使 Linux 向您报告您拥有的 UART 类型。 如果您没有 16550A 型 UART,请投资购买新的串行卡(价格低于 50 美元)。 当您购买新卡时,请确保您可以在其上移动 IRQ!

注意:16550 UART 芯片的第一个版本存在错误。 这很快被发现,并发布了芯片的修订版 - 16550A UART。 然而,相对少量的有缺陷的芯片确实进入了流通。 您不太可能遇到其中之一,但您应该寻找表明 16550A 的响应,尤其是在一些老旧的串行卡上。