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 選項,命令將列出所給出的設備參數的一些基本信息。
如果沒有指定參數 命令所指定的第一個設備變元將被當作修改或者是顯示內容的目標設備,而其它的設備變元參數將被當作命令參數賦于目標設備。
?
對于大多數情況,需要有系統管理員的權限才能設置串行口。當然有一些串行口的參數,也可由普通用戶設置,這些參數在本手冊中會有另有說明。
?
選項
Setserial 可接受下列參數:
?
-a?
?
?
命令參數
以下命令參數可以賦于一個串行口.
所有的參數值都被假定為一個八進制數,除非值前標有"0x".
?
port 端口號此選項用來設置異步通訊(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 等參數使用后也被指定.
的功能更安全一些,寧可明確地定IRQ中斷號. irq
參數指定中斷號.
除以 divisor(除數) 得到
如果設備非常慢,像一個繪圖儀,那么,兩項值可能要增大一些。
如果設備使用 XON/XOFF 信號交換,那么默認值將會反過來。然而這可能會致使在linux 與回波貓之間有一個"回波沖突"。
此參數的一個應用就是在當一個登陸端被一個撥號的串行口鎖定。它將允許登陸端重置調制解調器(使用指定設備的程序可能會修改它的設置) 在鎖定被打開之前。
對以上兩者相同對待.此值為默認選項。
如果這個特殊串行口被當成一個聯出設備打開,那么當載波檢測消失時,不掛起通訊端口。
以更高的CPU占用率來使得接受滯延達到最小。(通常傳輸中的5-10ms的滯延以使系統開銷最小.) 此項默認值為關閉,但某些實時程序可能會用到此參數。
CONISIDERATIONS OF CONFIGURING SERIAL PORTS
明白setserial 命令只是告訴linux核心它想找到某個特定的端口的 I/O地址各中斷號IRQ是很重要的。它并不操作硬件,串行設備實際使用的一個特定的I/O地址。為了達到更改實際的硬件參數,你需要手動設置硬件,通常是設置跳線,或更改DIP開關。
以下一節將針對設置你的串行端口給于一些幫助。
以下是"標準MS-dos"的端口設置:
根據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 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 不 能被使用,因為他們被安排給了其它的硬件,而且一般上不能更改。以下是一些“標準”的設置:
?
?
MULTIPORT CONFIGURATION
一些多端口的串行板可以讓多的端中共享一個中斷號,使用一個或是多個端口以顯示是否有端口需要服務。如果你的多端口呂行板支持這些端口,你須保證如果中斷丟失時,能避免潛在的死鎖。
為了詳細設置這些端口,使用 set_multiport 為參數,緊接其后的是多端口的參數。這個多端中的參數須指定為以下形式 port 這需要檢測一下,參數 mask 可以顯示在已注冊的位中那個是重要的,最后參數 math 用來指定在已注冊的位中,當沒有進一步工作要做時,那一位必須匹配。
當有四個這種 /port/mask/match時,就要指定聯合。第一個這種聯合應該使用如下參數 port1, mask1, 和 match1. 第二個這種聯合需要用如下參數指定 port2, mask2, 和 match2, 等等。為了禁用這個多端口檢測,設置 port1 為零。
如果想查看當前多端口的設置,指定命令行參數 get_multiport
以下是一些通常的串行板的設置:
?
?
Hayes ESP 的設置
Setserial 也可以用來在賀氏的ESP串行板上設置端口。
以下參數在設置時使用:
rx_trigger?
警告
警告:設置一個串行端口時使用一個不正確的I/O地址可能會造成死機.
文件
/etc/rc.local /etc/rc.serial
轉載于:https://www.cnblogs.com/fanweisheng/p/11098603.html
總結
以上是生活随笔為你收集整理的setserial - 取得/设置 Linux 串行口的信息的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Eureka的自我保护机制
- 下一篇: linux 其他常用命令