多端口串行卡安装在 PC 的 ISA 或 PCI 总线的插槽中。它们也被称为“...适配器”或“...板卡”。每张这样的卡都为您提供多个串行端口。如今,它们通常用于控制外部设备(包括工业和家庭自动化)。它们可以连接到计算机服务器,以便从远程位置监控/控制服务器。它们曾经主要用于将许多哑终端和/或调制解调器连接到串行端口。如今,哑终端的使用已经下降,并且现在可以将多个调制解调器(或数字调制解调器)内置到内部卡中。因此,多端口串行卡不像以前那样重要了。
每个多端口卡都有多个外部连接器(DB-25 或 RJ45),以便可以连接多个设备(调制解调器、终端等)。然后,每个这样的物理设备都将连接到其自己的串行端口。由于卡外部facing部分的空间有限,通常没有足够的空间容纳所有串行端口连接器。为了解决这个问题,连接器可能位于从卡(章鱼电缆)外部引出的电缆末端。或者它们可能位于一个外部盒子(可能是机架式)上,该盒子通过电缆连接到多端口卡。
哑多端口卡与普通串行端口没有太大区别。它们是中断驱动的,计算机的 CPU 完成大部分服务它们的工作。它们通常有一个为所有端口共享单个中断的系统。这不会减少 CPU 的负载,因为每次任何一个端口需要服务时,都会向 CPU 发送单个中断。此类设备通常需要特殊的驱动程序,您必须将其编译到内核中或用作模块。
智能板卡可以使用普通的 UART,但在板卡内部处理来自 UART 的大部分中断。这使 CPU 从处理所有这些中断的负担中解放出来。该板卡可能会在其大型内部 FIFO 中保存字节,并可能一次性将 1k 字节传输到主内存中的串行缓冲区。它可以使用 32 位的完整总线宽度来进行到主内存的数据传输(而不是像哑串行卡那样仅传输 8 位字节)。并非所有“智能”板卡都同样高效。如今,许多板卡都是即插即用的。
为了使多端口板卡工作,必须使用其专用驱动程序。该驱动程序可以内置到内核源代码中,也可以作为模块提供。对于 2.6 及更高版本的内核,大多数驱动程序都以两种方式提供:作为模块或可以内置到内核中。注意不要同时将支持内置到内核中并强制模块加载用于某个串行卡。对于旧内核,通常没有用于哑串行多端口板卡的模块,因此支持是内置到内核中的。
预编译的内核可能没有内置多端口卡的驱动程序。因此,您必须自己编译内核并内置正确的驱动程序,或者确保模块可用并加载。当然,如果驱动程序不是以两种方式提供(作为编译时选项和作为模块),您就没有这样的选择。
如果您想查看现有工作内核中已编译的内容,请转到 /boot 目录(或已编译内核所在的任何位置)并在 config... 文件中查找。
在 2.6 内核中,配置文件中有许多选项可供选择进行编译。添加对某些多端口卡的支持在“字符设备”或“串行驱动程序”标题下列出。旧的多端口卡的支持是串行驱动程序的一部分,可以在“串行驱动程序”下找到。更高级的卡有自己的驱动程序,可以在“字符设备”下找到
对于编译内核 2.6,您应该选择“CONFIG_SERIAL_8250_EXTENDED”。(或者对于 2.4 仅选择“CONFIG_SERIAL_EXTENDED”)。然后您将被问到更多关于您的串行端口的问题,并有更多选项可供选择。如果生成的配置不太正确,那么您可能需要手动编辑内核配置文件。
预编译的内核可能带有板卡的预编译模块,因此您不需要重新编译内核。必须加载此模块才能使用它,并且如果有驱动程序的安装软件,它还应该设置 Linux 以加载模块(可能在启动时)。一些在启动时加载的模块列在 /etc/modules 或 /etc/modules.conf 中。此外,可能需要通过这些文件中的条目或通过 lilo 的 “append” 命令或通过 grub 的 “kernel” 命令将某些参数传递给驱动程序。对于内核 2.6(和 2.4),(未加载的)模块应在 /lib/modules/.../kernel/drivers/char.
中找到。
板卡制造商应该在其网站上提供信息。不幸的是,旧板卡的信息有时不在那里,但可能会在互联网上的其他地方找到(包括讨论组)。您可能还想查看 /usr/share/doc/linux-doc...(以前在 2.6 之前的内核中为 kernel-doc)中的内核文档。有关在编译之前配置内核或模块的信息,请参阅:Configure.help 并搜索“serial”等。还有一些用于特定板卡的内核文档文件,包括 computone、hayes-esp、moxa-smartio、riscom8、specialix、stallion 和 sx (specialix)。
您的多端口板卡使用的串行端口取决于您拥有的板卡类型。有些有自己的设备名称,例如 /dev/ttyE27 (Stallion) 或 /dev/ttyD2 (Digiboard) 等。对于其他各种品牌,请参阅内核文档中的 devices.txt。有些使用标准名称,例如 /dev/ttyS14,并且可以在用作 setserial
参数的配置文件中找到。此类文件可能包含在 setserial 或 serial 包中。
安装脚本可能会为您执行此操作。但如果没有,这里有一些在 /dev 目录中创建设备名称的示例。如果您使用 udev,MAKEDEV 将不会在设备目录中创建设备,因为该目录仅在内存中,并且在您关闭计算机时会丢失。相反,它将在dev/.static/dev 目录中创建设备。
对于 ttyS.. 以外的其他类型的串行端口的名称和编号,请参阅内核文档中的 devices.txt。可以使用 mknod
命令或 MAKEDEV
脚本。键入 “man makedev” 可能会显示有关使用它的说明。
使用 MAKEDEV
脚本,您首先成为超级用户 (root) 并键入(例如)以下任一项
linux# MAKEDEV ttyS17
或者,如果以上方法不起作用,请在给出以上命令之前 cd 到 /dev 目录>。将 ttyS17 替换为您端口的任何名称。
使用 mknod
是一种更复杂的选项,因为您需要知道主设备号和次设备号。这些数字在内核文档的 “devices” 文件中。对于 ttyS 串行端口,次设备号为:64 + 端口号(对于下面的示例 = 81)。请注意,对于 ttyS 设备, “主” 设备号始终为 4(对于过时的 cua 设备为 5)。因此,如果您想使用 mknod
为 ttyS17
创建设备,您将键入
linux# mknod -m 666 /dev/ttyS17 c 4 81
在过去,PC 出厂时就安装了串行卡。后来,串行功能被放在硬盘驱动器接口卡上。在 20 世纪 90 年代和 21 世纪初,通常在主板(板载)中内置一到两个串行端口。它们中的大多数(截至 2002 年)使用 16550,但有些使用 16650(32 字节 FIFO)。但是,如果他们需要更多串行端口,仍然可以购买单独的 PC 串行卡。它们可以用于连接外部串行设备(调制解调器、串行鼠标等...)。只有极少数零售计算机商店销售此类卡。但是可以在互联网上购买它们。在为 PCI 总线购买一个之前,请确保 Linux 支持它。
以下是一些流行的品牌列表
注意:由于地址冲突,您可能无法同时使用 /dev/ttyS3 和 IBM8514 视频卡(以及其他一些)。请参阅 避免与某些视频板卡的 IO 地址冲突
它们也称为 “串行适配器”。每个端口都有自己的地址。它们通常有一种特殊的中断共享方法,这需要您将对它们的支持编译到内核中。
* => 在 Debian 中运行 setserial 的文件显示了一些配置的详细信息
# => 请参阅下面有关此板卡的注释
总的来说,Linux 将支持任何使用 8250、16450、16550、16550A、16650、16650V2、16654、16750、16850、16950 和 16954 UART 的串行板卡。有关更完整的列表,请参阅最新的 “setserial” 手册页。
注释
AST Fourport:您可能需要在 rc.serial
中指定 skip_test
。
BB-1004 和 BB-1008 不支持 DCD 和 RI 线路,因此不能用于拨入调制解调器。它们可以很好地用于所有其他目的。
Digi PC/8 中断状态寄存器位于 0x140。
SIIG IO1812 手册中 COM5-COM8 的列表是错误的。它们应该是 COM5=0x250、COM6=0x258、COM7=0x260 和 COM8=0x268。
确保 Linux 兼容的驱动程序可用,并阅读随附的信息。这些板卡使用特殊的设备(在 /dev 目录中),而不是标准的 ttyS 设备。此信息因您的硬件而异。如果您有应在此处显示的更新信息,请通过电子邮件发送给我。
Linux 驱动程序模块的名称为 *.ko(内核 2.6 之前为 *.o),但这些模块可能不适用于显示的所有型号。请参阅 模块(主要用于智能板卡)。所需的模块可能已随您的 Linux 发行版提供。此外,参数(例如 io 和 irq)通常需要提供给模块,因此您需要找到有关此方面的说明(可能在源代码树中)。
有许多不同的品牌,每个品牌通常提供许多不同的卡。目前尚无尝试在此处列出所有卡(并且列出的许多卡已过时,并且指向它们的互联网链接已损坏,需要修复)。但是,所有主要品牌和网站都应在此处显示,因此如果缺少某些内容,请告诉我。转到显示的网页以获取更多信息。这些网站通常还提供有关相关硬件(如调制解调器池、远程访问服务器 (RAS) 和终端服务器)的信息(广告)。如果没有网页,则这些卡可能已过时。如果您想整理一份更好的列表,请告诉我。
http://www.perle.com
http://www.comtrol.com
ftp://tsx-11.mit.edu/pub/linux/packages/comtrol
http://www.connecttech.com/
http://www.cyclades.com/products/svrbas/zseries.php
ftp://ftp.cyclades.com/pub/cyclades
,自 Linux 内核 1.1.75 版本以来包含在其中:cyclades.o mailto:info@cendio.se
ftp://ftp.cendio.se/pub/pccom8
http://www.dgii.com
ftp://ftp.dgii.com/drivers/linux
,自 Linux 内核 2.0 版本以来包含在其中。epca.o si@wimpol.demon.co.uk
http://www.equinox.com
ftp://ftp.equinox.com/library/sst
http://www.gtek.com
ftp://ftp.gtek.com/pub
http://www.nyx.net/~arobinso
http://www.nyx.net/~arobinso
http://www.maxpeed.com
ftp://maxpeed.com/pub/ss
http://www.moxa.com
http://www.moxa.com/support/download/download.php3>
ftp://ftp.moxa.com/drivers/linux
(也来自台湾的 www.moxa.com.tw/...,其中 ... 与上面相同) http://www.sdlcomm.com
ftp://ftp.sdlcomm.com/pub/drivers
sales@stallion.com
或 http://www.stallion.com
ftp://ftp.stallion.com/drivers/ata5/Linux
,自 linux 内核 1.3.27 以来包含在其中。已移动:现在位于?。1995 年 6 月的 Linux Journal 刊登了对 Comtrol、Cyclades、Digi 和 Stallion 产品的评论。该文章可在 评论:智能多端口串行卡 中找到。除了本 HOWTO 上面找到的各种多端口品牌列表外,还有 Gary 的百科全书 - 串行卡。它并不完整,但可能有一些不同的链接。
截至 2000 年 1 月 1 日,以下以前制造具有 Linux 支持的板卡的品牌均未提及任何 Linux 支持。如果这种情况发生变化,请告诉我。