??
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0048)http://www.pocketix.com/qianru/EL/ELandLinux.htm -->
<HTML><HEAD>
<META content=text/html;charset=gb2312 http-equiv=Content-Type><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<META content="MSHTML 5.00.2920.0" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV>
<DIV align=center>
<P><FONT color=#ff0000 size=6><B><FONT
size=4>嵌入式操作系統和Linux<BR>譯者:陳德勇</FONT></B></FONT><FONT color=#ff0000 size=2>
</FONT><FONT size=2> </FONT></P></DIV>
<TABLE align=center border=1 borderColor=#ffcccc width="92%">
<TBODY>
<TR>
<TD>
<DIV>摘要:Linux系統可以應用到嵌入式系統中,本文分析了Linux的特點,穩健性和局限性以及最重要的實時領域的應用。</DIV>
<DIV> </DIV>
<DIV>過去,因為非PC的嵌入式硬件平臺價格昂貴,使得許多高性能要求的嵌入式系統不能實現。現在,因為廉價的PC硬件大力發展和廣泛的應用,使得那些高性能要求的嵌入式系統有了實現的可能。但是,嵌入式PC平臺的系統軟件卻不那么具有吸引力。當然你可以選擇DOS,不過它先天不足。你也可以選擇WINDOWS,但是經過仔細的研究,你會發現它的實時性能很差。很多高級實時操作系統價格不菲,可移植性不好。<BR>從1991年以來,在網絡下發展的Linux操作系統,在服務器和PC桌面機上,已經是Microsoft
的DOS和WINDOWS95/98的強勁對手。而且它的性能比WINDOWS好得多。如果你有興趣,你可以從網上自由下載,或掏比CD本身貴一點的價格買到。最近有人把實時性的部件加入Linux操作系統,使得它成為嵌入式系統設計師的一個極其有價值工具。盡管它的實時部件不如其他的RTOS那么復雜,使用的內存不能太小,但是它的其他優點足以超越和彌補它的不足。<BR>在嵌入式系統中使用PC硬件的好處顯而易見,生產量大,容易購買,價錢比較便宜。而且還很容易搞到數模轉換板、網絡接口板、圖象采集和處理板等專用板。再加上采用PCI總線,系統性能將極大提高。在操作系統領域卻沒有相應的變化。<BR>高級嵌入式系統不僅需要價格低廉的硬件,同時也需要很多復雜的功能,比如圖形用戶接口、網絡傳輸等。在操作系統方面,我們也需要價格便宜、性能成熟、同時又能夠滿足高級嵌入式系統的需求。<BR>如今的Linux已經引起了計算機世界的高度重視。許多計算機使用者和廠商都被它的穩定性、易得性等特點吸引。它幾乎完全兼容UNIX系統中的功能和開發工具、應用程序。它提供了TCP/IP通訊功能、Internet的Client
& Server 功能,以及C、C++、JAVA等語言的編譯工具,這些工具和功能都比MS
WINDOWS成熟、完善、易用很多。當你在使用和編程中遇到問題時,通過Internet你會得到成千上萬的專家和熱心人的幫助。我認為,在解決問題時,通過Internet的幫助會比單純依靠RTOS廠商快捷有效。在廠商幫助下解決問題,一次只會得到一種方案,如果不行,你必須重新開始;在Internet上,你會得到很多答案。今天的Linux已經得到了一些廠商的支持,你也可以從它們那得到技術支持。但是,最重要的是你擁有源代碼,你可以對問題進行深入的研究,甚至可以擴展功能。<BR>Linux是MS
WINDOWS
和DOS之外所絕佳的選擇。很多嵌入式系統工程師也已經開發了Linux在嵌入式系統方面使用的價值,尤其在專用硬件環境和多處理器方面。現在的問題是如何使使Linux系統具有實時性。當前有兩種方案來解決這個問題:一個是POSIX方法,另外一個是底層解決。<BR>POSIX是類UNIX操作系統的標準化方案,目的是提高軟件的可移植性,加速軟件設計師的工作。POSIX.1b已有實時性擴展,包括信號、內存鎖定、時鐘和計數、消息隊列以及搶先調度策略。不過這種辦法比較適合工作站系統,對基于PC的嵌入式系統并不是很好;其次是類UNIX的系統調用比較繁復,不如pSOS+等的明了。但是仍然有一批開發者在優化Linux,當然也取得了一些成功,譬如內存鎖定方法和任務調度算法有了改進。這其中最主要的成果是POSIX線程(定義于POSIX.1c)。這個功能對嵌入式系統來說很好。<BR>另一個方案從底層來提高Linux的實時性,即所謂的“硬”實時性。在這個方面做得最為成功的是New
Mexico institute of Mining and
Technology,他們在Linux系統下加入實時性的kernel(核心),讓Linux本身運行在優先級較低的層面上。這種設計方法對Linux系統的修改減少到最低,同時增加必需的實時功能。這樣使得在Linux本身的升級后,可以進行很少的修改就可以把RT-linux引進新版的Linux核心。RT-Linux和Linux的結合提供所有的實時功能,包括底層任務的創建、中斷任務的安裝、底層任務隊列管理、中斷任務的運行等。這種設計使得在系統中有兩種域:實時域和非實時域。實時域的函數滿足實時性要求;不過,任務必須簡單,因為分批給它們的資源比較少。非實時域的函數可以享用系統全部資源,但是它們的實時性比較差。兩個域之間的通訊方法也提供了。在所有RT-Linux時,必須保證需要的函數在各自的運行域是合適的,不要以為先前的非實時函數在安裝安裝了RT-Linux后就具有了實時性,對實時性要求有關的函數必須放到實時域中去運行。<BR>RT-Linux中任務處理也比較簡單,所有rt-task-init()創建和啟動實時任務。實時域和非實時域的函數通訊方法是通過FIFO進行。所有FIFO的明顯好處是方便數據的傳輸,如果設定其長度為零,又可以當成信號所有。目前的不足是沒有提供優先級繼承機制(為了防治優先級的逆轉)和任務的安全刪除,但是在設計過程中卻可以依靠仔細設計來避免這種錯誤發生。當然使用零長的FIFO來掛起程序的運行的方法有一點麻煩,不過它總算是一種辦法。新設計的方法是設定超時功能。<BR>RT-Linux作為簡單、開放的軟件,使用者可以可以根據你們的需要來更新這些功能,設計出更好的方案,并公布給大家。<BR>RT-Linux中最為引人注意的特色是它使得Linux的核心能夠被搶先。Linux以及其他類UNIX操作系統的核心都不能被長期打斷。正是因為這一點,使得Linux不能是一個完全合格的實時操作系統。不過,使用上面介紹的兩種方法都可以提高Linux的實時性。第一種方法重新設計核心,當然能夠達到要求。然而Linux的核心大且復雜,還經常修正;它的設計者并不關心其實時性能。因此強加入實時的功能于現成代碼并不合適。即使這樣,當Linux的核心升級,就不免要重新設計程序。RT-Linux采用的另外的方法使得Linux的核心可以被中斷;它把中斷分為兩類:Linux控制的中斷和RT-Linux控制下的中斷。RT-Linux嚴格限制任務和中斷的內容;它們不能調用Linux的核心,所以它們可以中斷核心的工作。如果它們不改變核心的東西,那么它們將不會干擾核心的運行。其次,Linux的中斷也不能夠打斷核心的運行。于是RT-Linux采用了虛擬的中斷結構,使得Linux的核心不能禁止中斷。在標準的Linux系統中,使用了“sti”和“cli”宏,然后運行X86的相應指令。RT-Linux修改了這兩條指令的運行方式;執行“cli”,它不禁止中斷,而是重新指向RT-Linux的代碼,進行判斷;如果是RT-Linux的則讓中斷繼續執行,如果是標準Linux的中斷,則設置標志。運行“sti”時,掛起的任何中斷繼續執行。如此這般,Linux不能中斷它自身,RT-Linux就可以了。<BR>RT-Linux簡單有效地提供了實時性的需求,對系統設計人員來說這種簡單只是相對于其他的功能。Linux本身是健壯、穩定,在PC桌面設計人員中很流行,一旦你有困難,你可以獲得很多的幫助,因此你可以用它了建造大型系統。RT-Linux的實時任務只是在實時輸入和輸出以及在Linux進程之間傳輸數據時需要。所以簡單的實時RT-Linux有兩大優點:首先是因為簡單所以少bug(錯誤);其次如果你發現了缺陷,你可以很容易的找到和修改。這一點很重要,因為使用實時系統的人員比較少,因此在應用RT-Linux時能夠獲得的幫助自然比較少。復雜功能的RT-Linux并不是非常需要,目前它的功能可以滿足絕大部分的實時系統的要求。<BR>當然,Linux并不是很適合所有的嵌入式系統。因為使用GUI,系統必需磁盤或可以啟動的網絡。然而,現在的許多嵌入式系統應用程序都需要磁盤來運行,同時也需要GUI和網絡功能。例如醫療設備需要有吸引力的用戶界面;工業控制機器需要GUI和網絡功能。在這種情形下使用DOS和低級RTOS又不實際;花大錢買高級RTOS顯然不合算。Linux中免費包含這些功能,它不僅免費,而且提供的功能比商用的RTOS更新速度快。<BR>最近的發展使得Linux可以在無盤的嵌入式系統上工作,它可以在EPROM中啟動。在很多無盤情況下,集合需要的功能在應用系統中,也能夠很好地發揮Linux的優點。有一個例子是不包括X
WINDOWS只是集合了網絡系統的功能的Linux僅占用2.7M的EPROM。因此我們可以發展無盤的Linux系統。另外,Linux可以從網絡啟動,因此從網絡的某個地方我們可以啟動這個網絡系統,同時可以使用X
WINDOWS。<BR>Linux隨著GNU的發展而發展,GNU和Linux都是成千上萬的程序員的結晶。GNU有具有世界知名度的gcc和g++編譯器,它的優越性可以和世界的其他任何商用的編譯器媲美。甚至Vxwork和LynxOS都使用它。基于Linux的RTOS肯定會出現。這正是嵌入式系統開放人員的福氣:使用開放環境;不僅功能卓越,而且價格低廉。<BR>讓我們大家都來使用和發展Linux系統,開發它在嵌入式系統方面的應用。<BR><FONT
size=2></FONT></DIV></TD></TR></TBODY></TABLE></DIV></BODY></HTML>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -