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的 速 度 .
此 參 數 可 以 由
無 特 權 的 用 戶
指 定 .
divisordivisor(除 數 ) 此 選
項 指 定 了 自 定
義 的 除 數 .這 個
除 數 將 被 用 在
spd_cust 選 項 中 被 指
定 時 , 當 要 求
38.4kb的 速 度 時 , 用
來 自 行 設 置 串
行 口 連 接 速 度
此 參 數 可 由 無
特 權 的 普 通 用
戶 設 定 .
sak 設 置
break鍵 爲 引 發 安 全 注 意 鍵 .
^sak 禁 用
引 發 安 全 注 意 鍵 .
fourport 配
置 端 口 爲 一 AST Fouroart
卡 .
^fourport 禁 用 AST Fourport 配
置 .
closedelaydelay(延 時 )
指 定 時 間 長 度
, 單 位 是 百 分
之 一 秒 , DTR在 聯
出 設 備 被 關 閉
後 , 仍 會 保 持
一 個 低 速 串 行
通 路 , 在 有 數
據 進 來 之 前 會
重 新 起 動 DTR.這 選
項 的 默 認 值 爲
50, 即 半 秒 延 時 .
close_delaydelay(延 時 ) 指 定
時 間 長 度 , 單
位 是 百 分 之 一
秒 , 在 接 受 端
被 禁 之 前 關 閉
端 口 時 , 核 心
需 要 等 待 從 串
行 口 傳 來 的 數
據 . 如 果 指 定 爲
"none", 將 不 會 有
延 時 .如 果 指 定
"infinite" 時 , 核 心
將 會 以 不 確 定
的 時 間 等 待 緩
衝 數 據 的 傳 輸
.此 選 項 的 默 認
值 爲 是 "none" .
closing_wait2delay(延 時 ) 指 定
時 間 的 長 度 ,
單 位 是 百 分 之
一 秒 , 在 接 受
端 被 禁 用 後 ,
在 關 閉 端 口 時
核 心 會 等 待 從
串 行 口 傳 來 的
數 據 .而 用 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