SETSERIAL(8) | System Manager's Manual | SETSERIAL(8) |
setserial - 取得/设置 Linux 串行口的信息
setserial [ -abqvVWZ] 设备 [ 命令参数一 [ 设备变元参数 ] ] ... setserial -g [ -abGv ] 设备一 ...
setserial 是一个用来设置和取得与一个串行口有关的信息与设置的程序。这些信 息包括某个串行口正在使用的I/o地址与中断号,以及break键是否被当 做引起安全注意的键,等等。
在通常的引导的过程中,只有端口
COM1至COM4被初始化,并使用默认的
I/O地址和中断号,正如以下所列。为了初始化其它的串行口,或者是把
COM1至COM4中的设置改为一个非标准的设置。就必须使用
setserial
程序。一般这个程序会在
rc.serial
脚本中使用,此脚本通常会在
/etc/rc.local.
中被执行
设备
由变元参数定义的需要设置的串行设备。它们通常具有以下形式:
/dev/cua[0-3].
如果没有设定命令参数,
setserial
将打印出此端口的类型(如,8250,16450
,14330,16550A,等等),
硬件I/O地址,各硬件中也断号,波特数,和一些可操作或更改的标识。
如果选择 -g 选项,命令将列出所给出的设备参数的一些基本信息。
如果没有指定参数 -g 命令所指定的第一个设备变元将被当作修改或者是显示内容的目标设备, 而其它的设备变元参数将被当作命令参数赋于目标设备。
对于大多数情况,需要有系统管理员的权限才能设置串行口。当然有一 些串行口的参数,也可由普通用户设置,这些参数在本手册中会有另有 说明。
Setserial 可接受下列参数:
以下命令参数可以赋于一个串行口.
所有的参数值都被假定为一个八进制数,除非值前标有"0x".
一些内猫标注着"16650A UART带有1K缓冲",这是骗人的.它们没有真正 兼容 16550A的UART;相反的它们只有 一个16450兼容的带1K接收缓冲 UART,以防止接 收时溢出.这是非常重要的,因为它们没有一个没有一 个可传导的FIFO.因此,他们与16650A UART 并不兼容,自动配置过程将 正确的识别它们为16450 类型。如果你想强行使用,需要 uart 参数,这样你在传输文件时会发现有字符遗失.这些 UART 通常还有其它 一些问题. skip test 参数也经常被使用. autoconfig 当使用这个参数时, Setserial 将向核心请求自动设置串行口.I/O地址一要正确设置;核心将会 试图检测UART类型,如果 auto_irq 参数选用,Linux将试图自动分配中断号IRQ. autoconfig 参数应在 port,auto_irq,and skip_test 等参数使用后也被指定.
如果设备非常慢,像一个绘图仪,那么,两项值可能要增大一些。
如果设备使用 XON/XOFF 信号交换,那么默认值将会反过来。然而这 可能会致使在linux 与回波猫之间有一个"回波冲突"。
此参数的一个应用就是在当一个登陆端被一个拨号的串行口锁定。它将 允许登陆端重置调制解调器(使用指定设备的程序可能会修改它的设置) 在锁定被打开之前。
明白setserial 命令只是告诉linux核心它想找到某个特定的端口的 I/O地址各中断号IRQ是很重要的。它并不操作硬件,串行设备实际 使用的一个特定的I/O地址。为了达到更改实际的硬件参数,你需要 手动设置硬件,通常是设置跳线,或更改DIP开关。
以下一节将针对设置你的串行端口给于一些帮助。
以下是"标准MS-dos"的端口设置:
/dev/ttys0(COM1), port 0x3f8, irq 4 /dev/ttys1(COM2), port 0x2f8, irq 3 /dev/ttys2(COM3), port 0x3e8, irq 4 /dev/ttys3(COM4), port 0x2e8, irq 3
根据AT/ISA总线结构的限定,通常中断号IRQ不能被两个以上的串行口 共享。如果你试图这这样做,那么当你同时启用两个端口时,它们中 的一个或全部将会不可靠。这和限制可由一多端口的串行口板来克服, 它用来让多个串行口共享一个中断号IRQ。此种板对linux的支持已加入 到AST FourPort, Accent Async 板,Usenet Serial II 板,Bocabord BB-1004, BB-1008,和 BB-2016 板,以及HUB-6 serial 板之中。
修改一个设备的中断号IRQ是比较困难的,因为大多数中断号已经被使用了, 以下是"标准MS-DOS"设定的有效的中断号列表:
IRQ 3: COM2 IRQ 4: COM1 IRQ 5: LPT2 IRQ 7: LPT1
许多人都发现中断号IRQ 5 是一个好的选择,假设电脑中只有一个并行口 是正在使用的。那么中断号IRQ 2 也是一个好的选择(也可能是9); 虽然这个中断号IRQ有时也被网卡使用,也有极个别的的显卡可能要使用 中断号IRQ 2作为一个垂直回扫的中断。如果你的显卡是这样设置的; 那你可能要禁用此项功能,以便能给其它的设备释放一个中断。当然这对 于linux或是其它操作系统不一定是必须的。
另外其它可用的中断号有 3 ,4,和 7,这些中断可能也被另一些串 行或是并行口所用。(如果你的串行卡有一个16位的电子数据收集器的 接线口,并且支持更高的中断号,那么中断号IRQ 10 ,11, 12,和 15 也是可用的。)
在一些AT类的机器上,中断号IRQ 2 被当作中断号IRQ 9,所以linux 会如此认为。
其它中断号除了2(9),3, 4, 5, 7, 10, 11, 12 和15 不 能被使用,因为他们被安排给了其它的硬件,而且一般上不能 更改。以下是一些“标准”的设置:
IRQ 0 时钟发生器 0 IRQ 1 键盘 IRQ 2 可编程的中断控制器 2 IRQ 3 串行口 2 IRQ 4 串行口 1 IRQ 5 并行口 2(保留给PS/2) IRQ 6 软盘驱动器 IRQ 7 并行口 1 IRQ 8 系统实时名钟 IRQ 9 重定向给中断号IRQ 2 IRQ 10 保留 IRQ 11 保留 IRQ 12 保留(ps/2兼容的设备) IRQ 13 数学协处理器 IRQ 14 硬盘控制器 IRQ 15 保留
一些多端口的串行板可以让多的端中共享一个中断号,使用一个或是多个端口 以显示是否有端口需要服务。如果你的多端口吕行板支持这些端口,你须保 证如果中断丢失时,能避免潜在的死锁。
为了详细设置这些端口,使用 set_multiport 为参数,紧接其后的是多端口的参数。这个多端中的参数须指定为以下形式 port 这需要检测一下,参数 mask 可以显示在已注册的位中那个是重要的,最后参数 math 用来指定在已注册的位中,当没有进一步工作要做时,那一位必须匹配。
当有四个这种 /port/mask/match时,就要指定联合。第一个这种联合应该 使用如下参数 port1, mask1, 和 match1. 第二个这种联合需要用如下参数指定 port2, mask2, 和 match2, 等等。为了禁用这个多端口检测,设置 port1 为零。
如果想查看当前多端口的设置,指定命令行参数 get_multiport
以下是一些通常的串行板的设置:
AST FourPort port1 0x1BF match1 0xf mask1 0xf Boca BB-1004/8 port1 0x107 match1 0xff match1 0 Boca BB-2016 port1 0x107 match1 0xff match1 0
port2 0x147 match2 0xff match2 0
Setserial 也可以用来在贺氏的ESP串行板上设置端口。
以下参数在设置时使用:
警告:设置一个串行端口时使用一个不正确的I/O地址可能会造成死机.
/etc/rc.local /etc/rc.serial
最初seterial的版本是由Rick Sladkey(jrs@world.std.com)所作,而后由 Michael K. Johnson(johsonm@stolaf.edu).
本页面中文版由中文
man 手册页计划提供。
中文 man
手册页计划:https://github.com/man-pages-zh/manpages-zh
1998年9月 | Setserial 2.15 |