?? serial-howto.txt
字號:
RxD Receive Data 2 <-- 2 TxD Transmit Data TxD Transmit Data 3 --> 3 RxD Receive Data 6 DSR Data Set Ready | DTR Data Terminal Ready 4 --> 8 DCD Carrier Detect GND Signal Ground 5 --- 7 GND Signal Ground DCD Carrier Detect 1 | DSR Data Set Ready 6 <-- 20 DTR Data Terminal Ready RTS Request To Send 7 --> 5 CTS Clear To Send CTS Clear To Send 8 <-- 4 RTS Request To Send (RI Ring Indicator 9 not needed) (沒錯! 第二支及第三支腳在 DB9 連接頭上確實和 DB25 接頭意義相反!) 如果使用的并不是完整的 null modem 連接線的話,你可能得要做下面這個欺騙 的技巧: 在你電腦這邊的接頭上,把 RTS 跟 CTS 接在一起,而且也把 DSR, DCD 以及 DTR 接在一起. 用這個方法,當電腦要求一個正確的硬體連線協商信 號時,它就可以得到(從它自己發出的). 現在你已經有正確的連接線,把你的終端機連接到你的電腦上. 如果你可以的話 ,告訴你的終端機忽略數據機控制信號. 試試看用 9600 bps, 8 data bits, 1 stop bit, no parity bits 來設定終端機. 7.2 設定 getty 在 /etc/gettydefs 里面增加一個給 getty 用來連接你終端機項目,如果還沒有 這項的話: # 38400 bps Dumb Terminal entryDT38400# B38400 CS8 CLOCAL # B38400 SANE -ISTRIP CLOCAL #@S @L login: #DT38400# 19200 bps Dumb Terminal entryDT19200# B19200 CS8 CLOCAL # B19200 SANE -ISTRIP CLOCAL #@S @L login: #DT19200# 9600 bps Dumb Terminal entryDT9600# B9600 CS8 CLOCAL # B9600 SANE -ISTRIP CLOCAL #@S @L login: #DT9600 如果你要的話,你可以讓 getty 在簽入的標題上印出一些有趣的東西. 在我的 例子里,我印出系統名稱以及串列線路.你可以加入其它的東西: @B 目前的每秒位元傳輸率(bps, 在看到 @B 時估計的).@D 現在日期, 格式 MM/DD/YY.@L getty 所連接的串列線路.@S 系統名稱.@T 現在時間,格式 HH:MM:SS (24 小時制).@U 目前簽入的使用者.這是在 /etc/utmp 檔中非空 ut_name 欄位項目的計數值.@V 版本值,在預設檔中給定的.如果要顯示 '@' 符號的話,用 '\@' 或 '@@'. 當你正在編輯 /etc/gettydefs 時,你可以這樣來檢查它的語法是否正確: linux# getty -c /etc/gettydefs 確定沒有 getty 或 uugetty 的設定檔(/etc/default/{uu}getty.ttySN 或 /etc/conf.{uu}getty.ttySN)在你的終端機連接的串列埠上, 因為這也許會干擾 到在終端機上執行的 getty.如果有的話請移除它. 編輯你的 /etc/inittab 讓 getty 在你的串列埠上執行(用你環境的正確資訊來 取代 - 配置檔的位置,串列埠名,速度,及預設終端機形式): S1:456:respawn:/sbin/getty ttyS1 DT9600 vt100 重新起始 init: linux# init q 現在你應該會在你的終端機上看到簽入提示.也許你得按返回鍵(return)幾次讓 終端機注意到. 7.3 將 PC 設定成終端機的注意事項 許多人將其它 PC 設定成終端機連接到 Linux 機器上.例如,舊的 8088 或是 286 PC 非常適合這個用途. 你需要的只是一張包含適合讓你的終端機-個人電腦 (Terminal-PC) 使用的 DOS 磁片,以及讓你的終端機-個人電腦執行的通訊程式 . kermit 在這個用途上表現得非常好. 你可以在這臺機器 [61]http://www.columbia.edu/kermit/ 上找到幾乎可以讓任何現存的作業系統 使用的已編譯的 kermit 版本. 其它流行的 DOS 通訊程式像是 telix 以及 procomm 也將會有一樣好的表現. 要確定輸入正確的串列埠資訊到你終端機-個 人電腦的通訊設定里去. 8. 我能使用超過兩個的串列裝置嗎? 你不需要閱讀這一節,除非你想要使用三個或更多的串列設備...(假定你沒有多 埠卡的話). 假如你有另一個多馀的串列埠,是的,你可以. 你可以使用的串列埠數目受限於 我們必須使用的硬體中斷要求以及埠輸出入位址的數目. 這并不是 Linux 的限 制,而是 PC 匯流排的限制.必須指定中斷跟位址給每一個串列設備. 串列設備 可以是串列埠,內接式數據機或是多埠卡. 多埠卡是為了擁有許多個串列埠來分享卡上所有串列埠所使用的相同 IRQ 而特別 設計的. Linux 對卡上的每一個埠使用不同的輸出入位址以便從它們獲取資料. 8.1 選擇串列設備的中斷位址 你的 PC 一般會將 ttyS0 以及 ttyS2 設在 IRQ 4 而將 ttyS1 以及 ttyS3 設在 IRQ 3. 經由檢視 /proc/interrupts 你可以知道那些 IRQs 正被使用. 要使用 兩個以上的串列設備的話,你必須重新指定一個中斷. 一個好選擇是從你的并列 埠那邊重新指定一個中斷.你的 PC 一般會設定 IRQ5 或是 IRQ7 當你的并列埠 ,但是很少人會使用兩個并列埠. 你可以重新指定其中一個中斷給串列設備,并 而仍然能順利地使用一個并列埠. 你將會需要用到 setserial 程式來做這件事 .此外,你必須調整你板子上的跳接設定(Jumpers),查看你主機板的說明文件. 跳接你想要給每個埠使用的 IRQ. 你將得要做些設定讓每個串列設備都有一個,并且是唯一的一個中斷. 這里是我 在 /etc/rc.d/rc.local 里所用的設定 - 你應該在啟動系統時的某個地方做這件 事. /sbin/setserial /dev/ttyS0 irq 3 # my serial mouse /sbin/setserial /dev/ttyS1 irq 4 # my Wyse dumb terminal /sbin/setserial /dev/ttyS2 irq 5 # my Zoom modem /sbin/setserial /dev/ttyS3 irq 9 # my USR modem 標準的 IRQ 指定: IRQ 0 Timer channel 0 IRQ 1 Keyboard IRQ 2 Cascade for controller 2 IRQ 3 Serial port 2 IRQ 4 Serial port 1 IRQ 5 Parallel port 2 IRQ 6 Floppy diskette IRQ 7 Parallel port 1 IRQ 8 Real-time clock IRQ 9 Redirected to IRQ2 IRQ 10 not assigned IRQ 11 not assigned IRQ 12 not assigned IRQ 13 Math coprocessor IRQ 14 Hard disk controller 1 IRQ 15 Hard disk controller 2 在選擇中斷時真的沒有什麼正確的.只要確定它不是已經被主機板,或是其它界 面卡所使用. 2, 3, 4, 5 或是 7 是好選擇.``not assigned''的意思是目前并 沒有什麼東西在標準情況下會固定使用這些硬體中斷要求. 也要注意到 IRQ 2 跟 IRQ 9 是一樣的.你可以稱它為 2 或 9,串列驅動程式非常了解這一點. 如 果你有一塊 16-bit 匯流排連接頭的串列卡,你也可以使用 IRQ 10, 11, 12 或 15. 只要確定你使用的并非是 IRQ 0, 1, 6, 8, 13 或是 14! 它們是由你的主機板所 使用的. 如果你拿走她的 IRQs 的話,會使得她很不高興. 完成之後,再次檢 查 /proc/interrupts 以確定沒有沖突發生. 8.2 設定串列設備的位址 接下來,你必須設埠位址.查看你主機板手冊的跳接設定.就像中斷,每個位址 只能有一個串列設備. 你的埠通常會配置成像下面這樣: ttyS0 address 0x3f8 ttyS1 address 0x2f8 ttyS2 address 0x3e8 ttyS3 address 0x2e8 選擇你想要給每一個串列設備使用的位址并且依此來設定跳接. 我將我的數據機 設在 ttyS3 ,我的滑鼠在 ttyS0,而我的終端機在 ttyS2. 當你重新啟動時, Linux 應該會在你所設定的位址看到你的串列埠. Linux 所 看到的 IRQ 可能不會跟你跳接設定的相符. 不必擔心這一點. Linux 在它啟動 的時候并沒有做任何的 IRQ 偵測, 因為 IRQ 偵測是危險并且有可能被欺騙的. 使用 setserial 來告訴 Linux 那個埠使用那個 IRQ. 你也可以檢查 /proc/ioports 來看看在 Linux 啟動後那些輸出輸入埠位址被使用. 9. 我怎樣將我的串列埠設到較高的速度? 我的數據機又應該使用什麼樣的速度? 這一節應該可以幫你找出當你透過通訊程式,或是 getty 程式使用你的數據機時 應該使用什麼速度. * 如果你所有的是比 9600 bps (V.32) 數據機還要慢的東西,將你的速度設到 你的數據機所能支援的最高速度. 例如 300 (V.21/Bell 103), 1200 (V.22/Bell 212A), 或 2400 bps (V.22bis). * 如果你有 9600 bps (V.32) 的數據機,并且支援 V.42bis 資料壓縮,使用 38400 來當作你的速度. V.42bis 壓縮具有 4:1 的理論值,也就是``4 * 9600 = 38400''. * 如果你有 14400 bps (V.32bis) 的數據機,并且支援 V.42bis 資料壓縮功 能的話,使用 setserial 程式,加上 spd_hi 旗標將你的串列埠配置成使用 57600 bps (4 * 14400 = 57600) 的速度. 如果你有 28800 或 33600 bps (V.FC 或是 V.34) 的數據機則使用 spd_vhi 旗標 (4 * 28800 = 115200). 然後,在你的通訊程式,或是 /etc/inittab 里使用 38400 當作速度設定. 這是現在你能設的最高速度.要確定你有 16550A 通用非同步接收轉換 器(UART). 如果你的 libc 版本至少是 5.x,那麼會有叫做 57600 及 115200 的速度. libc 放在 /lib,所以在那里看一下你用的版本是什麼. 如果你的應用程式 已經編譯以取用此優點,你可以直接使用它們(不必用 setserial), 許多的 套件都已經有了,因此如果你有最近版本的 Linux 套件,最好的方法就是嘗 試使用這些更高的速度. 先在命令列下用 setserial 指令測試,然後在你確定它們可以運作後,將你所作 的修改放進 /etc/rc.d/rc.serial 或 /etc/rc.d/rc.local 以便在系統啟動執行 它們. 在我的 /etc/rc.d/rc.local 里,我是這樣設定我的 ttyS3 到 115200 bps 的: /sbin/setserial /dev/ttyS3 spd_vhi 確定你以合法的路徑使用 setserial,以及合法的裝置名稱. 你可以下法檢查一 個串列埠的設定: setserial -a /dev/ttyS310. 通訊程式及工具 這里有一個通訊程式的列表,如果你所使用的發行套件里頭并沒有的話,這些都 可以在一般的 FTP 站找到. * ecu - 一套通訊程式 * [62]C-Kermit - 可攜的,可程序化的串列及 TCP/IP 通訊程式,包含傳檔及 字完轉換功能 * minicom - 類似 telix 的通訊程式 * procomm - 包含 zmodem,類似 procomm 的通訊程式 * seyon - 以 X 為基礎環境的通訊程式 * xc - xcomm 通訊套件 * 其它有用的程式是 term 及 SLiRP.它們提供使用 shell 帳號的 TCP/IP 功 能. * screen 是另一個多區段作業(multi-session)的程式.這個程式就像的動作 就像虛擬控制臺. * callback 這支程式會使你的數據機回撥給你. * mgetty+fax 處理傳真事務,并且提供一個不同的 getty. * ZyXEL 是 ZyXEL U-1496 數據機的控制程式.它處理接受撥接,撥號,回撥 保密,傳真,以及語音信箱功能. * SLIP 及 PPP 的軟體可在 [63]ftp://sunsite.unc.edu/pub/Linux/system/network/serial 找到. * 其它東西可以在 [64]ftp://sunsite.unc.edu/pub/Linux/system/serial 以 及 [65]ftp://sunsite.unc.edu/pub/Linux/apps/serialcomm 或許多的映射 節點之一找到.這些是保留所有串列程式的目錄. 11. 串列使用秘訣 這里有一些你可能發現很有用的串列□訣... 11.1 kermit 以及 zmodem 要在 kermit 下使用 zmodem 的話,將下列內容加到你的 .kermrc 里去: define rz !rz < /dev/ttyS3 > /dev/ttyS3define sz !sz \%0 > /dev/ttyS3 < /dev/ttyS3 要確定正確地放入你數據所在的串列埠.然後,要使用的話,只要在 kermit 的 提示符號下鍵入 rz 或 sz <檔名> 即可. 11.2 自動設定終端機型式 要在當你簽入的時候自動設定你的終端機形式的話,把終端機的形式加到 /etc/inittab 的項目里去. 如果我有一臺 vt100 終端機在 ttyS1 上 ,我要對 getty 指令加上 ``vt100'': S1:456:respawn:/sbin/getty ttyS1 DT9600 vt100 你也可以使用 tset,可以在你簽入的時候建立終端機的特性,而且不需要依賴任 何的預設值. 11.3 在串列連線下的彩色 ls 如果 ls 因為彩色特性而擾亂了你的終端機模擬,把它關掉. ls --color 以及 ls --colour 都使用彩色特性.有些安裝方式使得 ls 預設為使用彩色. 檢查 /etc/profile 以及 /etc/csh.cshrc 里的 ls 別名. 如果你不想修改系統預設 值的話,你也可以設給 ls 別名 ls --no-color. 11.4 從終端機所連接的印表機進行列印 有一個叫做 vtprint 的程式可以做得到,在 [66]ftp://ftp.sdsu.edu/pub/vtprint 及 [67]http://www.sdsu.edu/~garrett
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -