Manpages

NAME

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 可 接 受 下 列 参 数 :

-a 当 输 出 串 行 口 设 备 的 设 置 时 , 显 示 出 所 有 有 效 信 息

.

-b 当 输 出 串 行 口 设 备 的 设 置 时 , 输 出 主 要 的 设 备 设 置

信 息 , 此 项 适 合 于 在 引 导 过 程 时 , 在 /etc/rc 脚 本 中 输 出 设 备 信 息 .

-G 以 特 定 形 式 输 出

串 行 口 的 设 置 信 息 , 此 形 式 可 以 设 置 信 息 以 命 令 行 参 数 的 形 式 返 馈 回 串 行 口 设 备 .
-q
静 默 .

SetSerial 命 令 将 以 更 简 洁 的 形 式 输 出 .

-V 输 出 详 细 信 息

. Setserial 可 以 输 出 附 加 的 状 态 的 信 息 .

-V 显 示 版 本 信 息

然 后 退 出 .

-W 强 制 初 始 化 中 ,断 然 后 退

出 .些 选 项 在 核 心 版 本 2.1后 的 Linux中 不 在 提 供 . -z 在 开 始 设 置 标 记 前 清 除 原 有 的 设 置 的 串 行 标 记 .此 项 与 使 用 -G 标 记 自 动 保 存 串 行 口 的 设 置 标 记 有 关 .

命 令 参 数

以 下 命 令 参 数 可 以 赋 于 一 个 串 行 口 . 所 有 的 参 数 值 都 被 假 定 为 一 个 八 进 制 数 , 除 非 值 前 标 有 "0x".

port 端 口 号

port 此 选 项 设 置 I/O地 址 如 上 .

irq中 断 号

irq 此 选 项 设 置 硬 件 的 中 断 号 IRQ如 上 .

uart异 步 通 讯 (UART)类 型 此 选 项 用 来 设 置 异 步 通 讯 (UART)的 类 型 .允 许 的 类 型 有 none, 8250,16450, 16550,16550A,16550,16650V2,and 16750. 并 且 8250 类 型 和 16450 没 有 FIFO’s , 起 初 的 16550 有 一 些 错 误 致 使 FIFO’s不 可 用 , FIFO 只 可 用 来 16550A类 型 的 异 步 通 讯 机 。 设 置 异 步 通 讯 (UART)类 型 为 8250, 16450, 或 16550 将 启 用 不 使 用 FIFO的 串 行 口 .使 用 异 步 通 讯 类 型 为 none 将 禁 用 端 口 . 一 些 内 猫 标 注 着 "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 等 参 数 使 用 后 也 被 指 定 .
auto_irq
在 自 动 配 置 的 过 程 中 , 会 自 动 分 配 中 断 号 IRQ. 此 功 能 不 能 保 证 一 定 有 一 个 正 确 的 结 果 ; 一 些 硬 件 的 配 置 可 能 会 迷 惑 Linux的 核 心 .一 般 来 说 不 使 用 参 数 auto_irq 的 功 能 更 安 全 一 些 , 宁 可 明 确 地 定 IRQ中 断 号 . irq 参 数 指 定 中 断 号 .
^auto_irq
在 自 动 配 置 的 过 程 中 .并 试 图 分 配 中 断 号 IRQ.
skip_test
在 自 动 配 置 的 过 程 中 ,忽 略 UART检 测 .一 些 内 猫 没 有 国 际 半 导 体 公 司 兼 容 的 UART设 备 类 型 ,只 有 一 些 便 宜 的 仿 制 品 .有 一 些 甚 至 不 完 全 支 持 loopback检 测 模 式 , 此 模 式 是 核 心 在 试 图 配 置 之 前 用 来 确 定 在 特 定 的 地 址 上 是 不 真 有 UART设 备 .因 此 对 于 某 些 内 猫 你 可 能 需 要 指 定 这 个 参 数 以 便 Linux能 正 确 的 初 始 化 UART.
^skip_tet
在 自 动 配 置 过 程 中 , 忽 略 UART的 检 测 .
baud_base
波 特 基 率 此 选 项 设 端 口 的 波 特 率 , 此 值 为 时 钟 频 率 除 以 16. 一 般 情 况 此 项 值 为 115200, 这 也 是 UART能 支 持 的 最 快 波 特 率 .

spd_hi 当 程 序 要 求

38.4kb时 , 使 用 57.6kb的 连 接 速 度 . 这 个 参 数 可 以 用 由 无 特

权 的 用 户 指 定 .

spd_vhi 当 要 求 38.4kb时 , 使 用 115kb的 连 接 速 度 . spd_cust 当 要 求 38.4kb时 , 使 用 指 定 的 divisor(除 数 )来 计 算 速 度 .这 时 波 特 率 由 baud_base(波 特 基 率 ) 除 以 divisor(除 数 ) 得 到
spd_normal
当 要 求 38.4kb 时 使 用 38.4kb的 速 度 . 此 参 数 可 以 由 无 特 权 的 用 户 指 定 .
divisor
divisor(除 数 ) 此 选 项 指 定 了 自 定 义 的 除 数 .这 个 除 数 将 被 用 在 spd_cust 选 项 中 被 指 定 时 , 当 要 求 38.4kb的 速 度 时 , 用 来 自 行 设 置 串 行 口 连 接 速 度 此 参 数 可 由 无 特 权 的 普 通 用 户 设 定 .

sak 设 置

break键 为 引 发 安 全 注 意 键 .

^sak 禁 用

引 发 安 全 注 意 键 .

fourport 配 置 端 口 为 一 AST Fouroart 卡 .
^fourport
禁 用 AST Fourport 配 置 .
close
delaydelay(延 时 ) 指 定 时 间 长 度 , 单 位 是 百 分 之 一 秒 , DTR在 联 出 设 备 被 关 闭 后 , 仍 会 保 持 一 个 低 速 串 行 通 路 , 在 有 数 据 进 来 之 前 会 重 新 起 动 DTR.这 选 项 的 默 认 值 为 50, 即 半 秒 延 时 .
close_delay
delay(延 时 ) 指 定 时 间 长 度 , 单 位 是 百 分 之 一 秒 , 在 接 受 端 被 禁 之 前 关 闭 端 口 时 , 核 心 需 要 等 待 从 串 行 口 传 来 的 数 据 . 如 果 指 定 为 "none", 将 不 会 有 延 时 .如 果 指 定 "infinite" 时 , 核 心 将 会 以 不 确 定 的 时 间 等 待 缓 冲 数 据 的 传 输 .此 选 项 的 默 认 值 为 是 "none" .
closing_wait2
delay(延 时 ) 指 定 时 间 的 长 度 , 单 位 是 百 分 之 一 秒 , 在 接 受 端 被 禁 用 后 , 在 关 闭 端 口 时 核 心 会 等 待 从 串 行 口 传 来 的 数 据 .而 用 closing_wait 命 令 , "none" 和 "infinite" 两 参 数 都 将 被 指 定 , 此 项 的 默 认 值 是 3000, 也 就 是 30  秒 延 时 。   closing_wait 和 closing_wait2的 默 认 值 对 大 多 数 的 设 备 都 会 适 用 。 如 果 选 择 的 延 时 太 长 , 当 串 行 口 断 开 后 , 它 会 挂 起 太 长 时 间 , 致 使 数 据 挂 起 而 被 消 除 。 如 果 设 太 短 , 将 会 有 可 能 致 使 一 些 传 输 的 数 据 溢 出 。 如 果 设 备 非 常 慢 , 像 一 个 绘 图 仪 , 那 么 , 两 项 值 可 能 要 增 大 一 些 。 如 果 设 备 使 用   XON/XOFF 信 号 交 换 , 那 么 默 认 值 将 会 反 过 来 。 然 而 这 可 能 会 致 使 在 linux 与 回 波 猫 之 间 有 一 个 "回 波 冲 突 "。
session_lockout
对 不 同 的 任 务 , 锁 定 联 出 设 备 的 端 口 (/dev/cuaXX), 也 就 是 说 , 一 但 有 一 个 进 程 打 开 端 口 , 就 不 允 许 其 它 不 同 号 的 任 务 打 开 此 端 口 , 直 到 前 一 个 进 程 放 开 此 端 口 。
^session_lockout
对 联 出 的 端 口 不 开 启 上 述 功 能 。
pgrp_lockout
对 不 同 进 程 组 , 锁 定 联 出 的 端 口 (/dev/cuaXX)。 也 就 是 说 , 一 但 一 个 进 程 打 开 一 个 端 口 , 不 允 其 它 进 程 组 的 进 程 共 享 此 端 口 , 直 到 前 一 个 进 程 释 放 它 。 此 参 数 的 一 个 应 用 就 是 在 当 一 个 登 陆 端 被 一 个 拨 号 的 串 行 口 锁 定 。 它 将 允 许 登 陆 端 重 置 调 制 解 调 器 (使 用 指 定 设 备 的 程 序 可 能 会 修 改 它 的 设 置 ) 在 锁 定 被 打 开 之 前 。
^hup_notify
当 进 程 锁 定 在 打 一 个 拨 号 时 , 而 此 时 联 邮 设 备 正 挂 起 的 话 , 不 通 知 进 程 。
split_termios
对 于 联 出 设 备 的 终 端 设 置 与 联 入 设 备 的 终 端 设 置 分 开 对 待 。
^split)termios
对 以 上 两 者 相 同 对 待 .此 值 为 默 认 选 项 。
callout_nohup
如 果 这 个 特 殊 串 行 口 被 当 成 一 个 联 出 设 备 打 开 , 那 么 当 载 波 检 测 消 失 时 , 不 挂 起 通 讯 端 口 。
^callout_nohup
当 串 行 口 当 作 联 出 设 备 打 开 时 , 不 忽 略 挂 起 通 讯 端 口 。 当 然 , 如 果 挂 起 的 话 HUPCL终 端 标 识 将 会 被 启 用 。
^low_latency
以 更 高 的 CPU占 用 率 来 使 得 接 受 滞 延 达 到 最 小 。 (通 常 传 输 中 的 5- 10ms的 滞 延 以 使 系 统 开 销 最 小 .) 此 项 默 认 值 为 关 闭 , 但 某 些 实 时 程 序 可 能 会 用 到 此 参 数 。

CONISIDERATIONS OF CONFIGURING SERIAL PORTS

明 白 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 保 留

MULTIPORT CONFIGURATION

一 些 多 端 口 的 串 行 板 可 以 让 多 的 端 中 共 享 一 个 中 断 号 ,使 用 一 个 或 是 多 个 端 口 以 显 示 是 否 有 端 口 需 要 服 务 。 如 果 你 的 多 端 口 吕 行 板 支 持 这 些 端 口 , 你 须 保 证 如 果 中 断 丢 失 时 , 能 避 免 潜 在 的 死 锁 。 为 了 详 细 设 置 这 些 端 口 , 使 用 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

Hayes ESP 的 设 置

Setserial 也 可 以 用 来 在 贺 氏 的 ESP串 行 板 上 设 置 端 口 。 以 下 参 数 在 设 置 时 使 用 :
rx_trigger
这 是 一 个 接 收 的 FIFO的 触 发 水 平 (以 字 节 为 单 位 ), 较 大 的 值 可 减 少 中 断 时 间 提 高 性 能 ;然 而 值 太 大 会 引 起 数 据 丢 失 。 有 效 值 在 1 到 1023 之 间 .
tx_trigger
这 是 一 个 传 送 的 FIFO的 触 发 水 平 (安 节 为 单 位 ),较 在 的 值 可 减 少 中 断 时 间 提 高 性 能 , 但 值 太 大 会 引 起 传 输 效 率 下 降 。 有 效 值 在 1 到 1023之 间 .
flow_off
这 是 通 知 ESP端 口 断 开 远 端 的 传 输 (如 , 告 诉 它 停 止 发 送 数 据 ).有 效 值 在 1 到 1023之 间 , 这 个 值 要 比 接 收 的 触 发 等 级 和 联 接 的 水 平 值 高 .
flow_on
这 是 ESP端 口 通 知 联 接 的 等 级 (单 位 字 节 ),(如 , 通 知 重 新 开 始 发 送 数 据 )在 挂 断 之 后 , 有 效 值 在 1 到 1023之 间 .这 个 值 应 在 断 开 (flow off)等 级 值 之 下 但 要 比 接 收 的 触 发 等 级 高 .
rx_timeout
这 是 ESP端 口 在 接 收 完 最 后 一 个 字 符 , 且 在 中 断 信 号 之 前 将 要 等 待 的 时 间 。 有 效 值 是 0到 255.值 太 大 会 增 加 延 时 , 太 小 会 引 起 不 必 要 的 中 断 。

警 告

警 告 : 设 置 一 个 串 行 端 口 时 使 用 一 个 不 正 确 的 I/O地 址 可 能 会 造 成 死 机 .

文 件

/etc/rc.local /etc/rc.serial

另 见 ,

tty(4), ttys(4), kernel/chr_drv/serial.c

作 者

最 初 seterial的 版 本 是 由 Rick Sladkey(jrs [AT] world.com)所 作 ,而 后 由 Michael K. Johnson(johsonm [AT] stolaf.edu).

本 页 面 中 文 版 由 中 文 man 手 册 页 计 划 提 供 。 中 文 man 手 册 页 计 划 : https://github.com/man-pages-zh/manpages-zh