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