?? 106.htm
字號:
<HTML><HEAD><meta http-equiv="Content-Type" content="text/html; charset=GB2312"><TITLE>-->Linux HowTo 中譯版-->Linux Serial HOWTO 中譯版 : 11,12</TITLE>
<META NAME="keywords" CONTENT=" Linux HowTo 中譯版 Linux Serial HOWTO 中譯版 : 11,12">
<META NAME="description" CONTENT=" - Linux HowTo 中譯版 - Linux Serial HOWTO 中譯版 : 11,12">
<style>
<!--
#page {position:absolute; z-index:0; left:0px; top:0px}
.tt3 {font: 9pt/12pt "宋體"}
.tt2 {font: 12pt/15pt "宋體"}
a {text-decoration:none}
a:hover {color: blue;text-decoration:underline}
-->
</style>
</HEAD>
<body text="#000000" aLink=#9900ff link=#006699 vLink=#006699 bgcolor="#FFFFFF" leftmargin="3" topmargin="3" marginheight="3" marginwidth="3">
<TABLE WIDTH="100%" CELLPADDING=10 CELLSPACING=0 BORDER=0>
<TR>
<TD CLASS="tt3" VALIGN="top" width="8%" bgcolor="#e0e0e0"><strong><A HREF="107.htm">后一頁</A><BR>
<A HREF="105.htm">前一頁</A><BR>
<A HREF="index.html">回目錄</A><BR>
<A HREF="../../../../index.htm">回首頁</A><BR>
</strong>
</TD>
<TD class="tt2" bgcolor="#F5F8F8" width="84%"><center><B><FONT style="FONT-SIZE: 16.5pt" COLOR="#FF6666" FACE="楷體_GB2312">Linux Serial HOWTO 中譯版 : 11,12</FONT></B></center>
<hr color="#EE9B73" size="1" width="94%">
姓名:Greg Hankins greg.<br>
Email:hankins@cc.gatech.edu<br>
地址 :<br>
轉(zhuǎn)摘 :http://member.netease.com/</p>
<BR>
<BR>
<hr SIZE="0">
<BR>
<p>11. 串列使用秘訣 <br>
這里有一些你可能發(fā)現(xiàn)很有用的串列□訣... <br>
<br>
11.1. kermit 以及 zmodem <br>
要在 kermit 下使用 zmodem 的話,將下列內(nèi)容加到你的 .kermrc 里去: <br>
<br>
define rz !rz < /dev/ttyS3 > /dev/ttyS3 <br>
define sz !sz \%0 > /dev/ttyS3 < /dev/ttyS3 <br>
<br>
要確定正確地放入你數(shù)據(jù)所在的串列埠.然後,要使用的話,只要在
kermit 的提示符號下鍵入 rz 或 sz <檔名> 即可. <br>
<br>
11.2. 自動設(shè)定終端機(jī)型式 <br>
要在當(dāng)你簽入的時候自動設(shè)定你的終端機(jī)形式的話,把終端機(jī)的形式加到
/etc/inittab 的項(xiàng)目里去.如果我有一臺 vt100 終端機(jī)在 ttyS1 上
,我要對 getty 指令加上 ``vt100'': <br>
<br>
S1:456:respawn:/sbin/getty ttyS1 DT9600 vt100 <br>
<br>
<br>
你也可以使用 tset,可以在你簽入的時候建立終端機(jī)的特性,而且不需要依賴任何的預(yù)設(shè)值.
<br>
<br>
11.3. 在串列連線下的彩色 ls <br>
如果 ls 因?yàn)椴噬匦远鴶_亂了你的終端機(jī)模擬,把它關(guān)掉. ls --color
以及 ls --colour 都使用彩色特性.有些安裝方式使得 ls
預(yù)設(shè)為使用彩色.檢查 /etc/profile 以及 /etc/csh.cshrc 里的 ls
別名.如果你不想修改系統(tǒng)預(yù)設(shè)值的話,你也可以設(shè)給 ls 別名 ls
--no-color. <br>
<br>
11.4. 從終端機(jī)所連接的印表機(jī)進(jìn)行列印 <br>
有一個叫做 vtprint 的程式可以做得到,在 ftp://ftp.sdsu.edu/pub/vtprint 及
http://www.sdsu.edu/~garrett 可取得. <br>
<br>
另外一支叫 xprt 的程式也能做到.它可在
ftp://sunsite.unc.edu/pub/Linux/system/printing 找到. <br>
<br>
11.5. Linux 能不能夠自動地配置串列設(shè)備? <br>
可以.要讓 Linux
在啟動的時候自動地偵測并且設(shè)定串列設(shè)備的話,把這一行: <br>
<br>
/sbin/setserial /dev/ttyS3 auto_irq skip_test autoconfig <br>
<br>
加到你的 /etc/rc.d/rc.local 或是 /etc/rc.d/rc.serial
檔案里面.對每一個你希望自動配置的串列埠都要做.要確定所給的是一個真正存在於你電腦上的設(shè)備名稱.
<br>
<br>
11.5.1. 多埠卡的注意事項(xiàng) <br>
對於卡的位址,以及 IRQs 查閱 setserial 程式隨附的 rc.serial.它有很多關(guān)於多埠卡的細(xì)節(jié),包括輸出入位址以及設(shè)備名稱.
<br>
<br>
11.6. 使用串列控制臺 <br>
在第三十六期的 Linux Journal 在 http://www.ssc.com/lj/issue36/index.html
有篇文章解釋如何使用串列控制臺(serial console).不幸的是,寄電子郵件給作者都被退回.我希望這篇文章會很快地上述
URL 的 Linux Journal 網(wǎng)站中. <br>
<br>
11.7. 更高的串列流量 <br>
如果在一部使用 (E)IDE
磁碟機(jī)的系統(tǒng)上你發(fā)現(xiàn)流量很慢而且串列埠常溢滿,你可以取得
hdparm.這是一個可以修改 (E)IDE 參數(shù),包含讓一磁碟 IRQ
動作期間其它 IRQs
仍可工作.這會改善反應(yīng)速度并幫助消除溢滿.確定小心地讀過了線上手冊,因?yàn)槟承┐诺?控制卡組合不喜歡它并且可能損毀檔案系統(tǒng).
<br>
<br>
也可以看一下一個叫 irqtune 的工具,可以改變一個裝置 IRQ
的優(yōu)先順序,例如你數(shù)據(jù)機(jī)所在的串列埠.這也可能改善你系統(tǒng)的串列流量.
irqtune 的常見問題解答(FAQ)可在 http://www.best.com/~cae/irqtune 找到. <br>
<br>
<br>
12. 更進(jìn)一步... <br>
這一節(jié)并不需要閱讀,但是可能帶給你一些對於 Unix
以及電子通訊世界更進(jìn)一步的了解. <br>
<br>
12.1. 什麼是鎖定檔案(lock files)? <br>
Lock files
只是單純的一個檔案用來表示某個特定的設(shè)備正在使用中.它們保存在
/usr/spool/uucp 或是 /var/lock 里面. Linux 的 lock files 名字都是 LCK..name,其中的
name 不是設(shè)備名稱就是一個 UUCP 節(jié)點(diǎn)名稱.有些程序建立這些 locks
以便讓它們自己可以獨(dú)占該設(shè)備的存取權(quán).例如如果你從你的數(shù)據(jù)機(jī)撥號出去,將會出現(xiàn)一個
lock 告訴其它程序現(xiàn)在已經(jīng)有人正在使用數(shù)據(jù)機(jī). Lock files
里面主要是包含鎖住該設(shè)備的程序的行程號碼(PID).大部份的程式會查閱
lock,然後檢查行程表(process table)中鎖定該設(shè)備的行程來試著決定這個
lock 是否仍然有效.如果發(fā)現(xiàn)這個 lock 是有效的話,這個程式(應(yīng)該)要結(jié)束.如果不是,某些程式會刪除過時的
lock,然後使用該設(shè)備,并在行程執(zhí)行時建立他們自己的 lock.其它的程式就只好結(jié)束并告訴你該設(shè)備正在使用中.
<br>
<br>
12.2. ``baud'' 對 ``bps'' <br>
``baud'' 跟 ``bps'' 可能是電腦/電子通訊這個領(lǐng)域里最常被錯用的術(shù)語之一.當(dāng)它們事實(shí)上并不相同的時候,很多人仍交替使用這些術(shù)語.
<br>
<br>
鮑率(baud) <br>
鮑率是每秒鐘數(shù)據(jù)機(jī)(調(diào)變解調(diào)器,modulator-demodulator)送出多少次訊號改變的度量.例如,鮑率為
1200 的含意是信號每隔 833 微秒(microsecond)即改變一次.普遍的鮑率有
50, 75, 110, 300, 600, 1200 以及 2400.大部份的高速數(shù)據(jù)機(jī)所使用的鮑率為
2400.因?yàn)檎Z音級(voice-grade)電話線路的頻寬限制,超過 2400
的鮑率很難達(dá)的到,而只能在非常純凈的電話線品質(zhì)下才能運(yùn)作.
``baud''一詞在 Emile Baudot 之後才有,他是非同步電報(bào)印表機(jī)(asynchronous
telegraph printer)的發(fā)明者. <br>
<br>
每秒傳輸位元(bps) <br>
每秒位元傳輸率是每秒鐘傳輸多少位元的度量.普遍每秒位元傳輸率有
50, 75, 110, 300, 1200, 2400, 4800, 9600, ... 115200.在使用 V.42bis 壓縮(壓縮最大率
4:1)的數(shù)據(jù)機(jī)下,理論上每秒位元傳輸率可以高達(dá) 115200.這是許多人在錯用
``baud'' 這個字時所指的意思. <br>
<br>
<br>
所以,如果高速數(shù)據(jù)機(jī)以 2400 baud 運(yùn)作,它們?nèi)绾文軌騻魉?14400 bps?
數(shù)據(jù)機(jī)對每個 baud 編碼來表示某一數(shù)量的位元而使得 bps 能大於 baud.這樣一來,當(dāng)二個或更多位元編碼成一個
baud 的時候,bps 就會超越 baud.如果你的數(shù)據(jù)機(jī)是以 14400 bps
連線的話,它將會以 2400 baud 的速度每個 baud 傳送六個位元. <br>
<br>
這個混淆是怎麼樣開始的?
嗯,回到今天的低速數(shù)據(jù)機(jī)還是昨天的高速數(shù)據(jù)機(jī)那個時代,每秒位元傳輸率跟信號改變率實(shí)際上是完全相等的.每個
bit 編碼成一個 baud.人們交替使用 bps 以及 baud
是因?yàn)樗鼈兊臄?shù)字相同.例如一臺 300 bps 的數(shù)據(jù)機(jī)其信號改變率也是
300.當(dāng)高速數(shù)據(jù)機(jī)普及後一切都改變了,而且每秒位元傳輸率超過了信號改變率.
<br>
<br>
12.3. 什麼是 UARTs? 它們?nèi)绾斡绊懶? <br>
UARTs (通用非同步接收轉(zhuǎn)換器,Universal Asyncronous Receiver Transmitter)是你
PC
串列卡上的晶片.它們的功用是把資料轉(zhuǎn)成位元,將這些位元送上串列線路,然後在另一端重新建立資料.
UARTs 是以位元組為單位處理資料,很方便地也是美國標(biāo)準(zhǔn)交換碼(ASCII)的字元大小.
<br>
<br>
假定是你有一臺連接到你 PC
的終端機(jī).當(dāng)你鍵入一個字元時,終端機(jī)把它交給它的轉(zhuǎn)換器(也是
UART 的一種).該轉(zhuǎn)換器以指定的速率把這個位元組送到串列線路上,每次一個位元.在
PC 這一端,接收位元的 UART
拿走所有的位元,然後重新組成位元組并且放到緩沖區(qū)里去. <br>
<br>
有兩種不同的 UARTs 類型.你可能有聽過愚蠢的(dumb)UARTs - 8250 還有
16450,以及先進(jìn)先出式 UARTs - 16550A.要了解它們的不同,首先讓我們來檢驗(yàn)當(dāng)
UART 送出或接收一個位元組時所發(fā)生的事. <br>
<br>
這 UART
本身并不能對資料做什麼處理,它只是送出以及接收它.每次送出或接收一個位元組時,CPU
都會從串列設(shè)備接到一個中斷.然後 CPU 就把接收到的位元組從 UARTs
的緩沖區(qū)搬到記憶體的某處,或是提供另一個位元組給 UART 傳送.
8250 以及 16450 UARTs
只有一個位元組的緩沖區(qū).這個意思是,每送出或接收一個位元組就會中斷
CPU 一次.在低速的情況下這樣沒有問題.但是在高速的傳輸率下,CPU
會忙於處理 UART 而沒有時間照料其它工作.在某些情況下,CPU
沒有足夠的馀裕及時處理中斷服務(wù),該位元組將因資料如此快速地傳入而被覆寫.
<br>
<br>
這就是 16550A UARTs 有用的地方.這些晶片具有 16
個位元組的先進(jìn)先出佇列.這個意思是它在必須中斷 CPU
之前可以接收或轉(zhuǎn)換達(dá) 16 個位元組.它不僅是能等,而且 CPU
現(xiàn)在也可以同時傳送全部 16 個位元組的資料.雖然中斷界限(threshold)很少有設(shè)到
16 的,這對於其它只有一個位元組緩沖區(qū)的 UARTs
而言仍然是一個重要的優(yōu)點(diǎn). CPU
收到較少的中斷,因此可以自由地做其它事情.資料不會漏失,每個人都很高興.
(也有 16550 這個 UART,但是它跟 16450 一樣因?yàn)樗袉栴}.) <br>
<br>
一般來說, 8250 以及 16450 UARTs 應(yīng)該能夠勝任高達(dá) 38400 bps
的工作速率.在高於 38400 bps
的速率下,你可能開始見到資料漏失.其它的 PC 作業(yè)系統(tǒng)(這里的定義很寬松),像
DOS 并非是多工的,所以它們有可能可以用 8250 或 16450s
卻應(yīng)付的更好.這就是為什麼有些人并沒有看到資料漏失,直到他們改用
Linux 才發(fā)生. <br>
<br>
無-UART(Non-UART)以及智慧型多埠卡使用數(shù)位處理機(jī)(DSP)晶片來處理額外的緩沖以及控制,如此更能減輕
CPU 的負(fù)擔(dān).例如,Cyclades Cyclom 及 Stallion EasyIO 這些卡使用 Cirrus Logic
CD-1400 RISC 晶片,還有許多卡使用 80186 CPU 或更特別的 RISC CPU
來處理串列輸出入. <br>
<br>
心里要記得,這些愚蠢型的 UART
并非是壞的,只是它們不適合做高速傳輸.當(dāng)你將終端機(jī)或滑鼠連接到這些
UARTs 時應(yīng)該不會遭遇困難.但是對高速數(shù)據(jù)機(jī)而言,16550A
可以說是必須的. <br>
<br>
你可以花多一點(diǎn)點(diǎn)的錢購買有 16550A UARTs
的串列卡,只要詢問電腦商該卡所使用的是什麼型號的 UARTs
即可.或者你想升級你現(xiàn)在的卡,你可以只要簡單地購買 16550A
晶片并且置換你現(xiàn)在的 16450 UARTs 晶片.它們的腳位相容(pin-to-pin
compatible).有些卡有 UARTs
插槽來作這個用途使用.如果不是的話你可以焊接.注意,如果你有錢,買一張新卡將可能會省掉你許多麻煩,它們在
$50 元美金以下. </p>
<BR>
<hr color="#EE9B73" size="1" width="94%">
</TD>
<TD CLASS="tt3" VALIGN="bottom" width="8%" bgcolor="#e0e0e0"><strong><A HREF="107.htm">后一頁</A><BR>
<A HREF="105.htm">前一頁</A><BR>
<A HREF="index.html">回目錄</A><BR>
<A HREF="../../../../index.htm">回首頁</A><BR>
</strong>
</TD>
</TR>
</table>
</BODY></HTML>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -