全面解析嵌入式操作系統(tǒng)和Linux
本文分析了Linux的特點,穩(wěn)健性和局限性以及最重要的實時領(lǐng)域的應(yīng)用。過去,因為非PC的嵌入式硬件平臺價格昂貴,使得許多高性能要求的嵌入式系統(tǒng)不能實現(xiàn)?,F(xiàn)在,因為廉價的PC硬件大力發(fā)展和廣泛的應(yīng)用,使得那些高性能要求的嵌入式系統(tǒng)有了實現(xiàn)的可能。
本文引用地址:http://www.ex-cimer.com/article/201808/385632.htm但是,嵌入式PC平臺的系統(tǒng)軟件卻不那么具有吸引力。當(dāng)然你可以選擇DOS,不過它先天不足。你也可以選擇WINDOWS,但是經(jīng)過仔細(xì)的研究,你會發(fā)現(xiàn)它的實時性能很差。很多高級實時操作系統(tǒng)價格不菲,可移植性不好。從1991年以來,在網(wǎng)絡(luò)下發(fā)展的Linux操作系統(tǒng),在服務(wù)器和PC桌面機上,已經(jīng)是Microsoft 的DOS和WINDOWS95/98的強勁對手。
而且它的性能比WINDOWS好得多。如果你有興趣 ,你可以從網(wǎng)上自由下載,或掏比CD本身貴一點的價格買到。最近有人把實時性的部件加入Linux操作系統(tǒng),使得它成為嵌入式系統(tǒng)設(shè)計師的一個極其有價值工具。盡管它的實時部件不如其他的RTOS那么復(fù)雜,使用的內(nèi)存不能太小,但是它的其他優(yōu)點足以超越和彌補它的不足。
在嵌入式系統(tǒng)中使用PC硬件的好處顯而易見,生產(chǎn)量大,容易購買,價錢比較便宜。而且還很容易搞到數(shù)模轉(zhuǎn)換板、網(wǎng)絡(luò)接口板、圖象采集和處理板等專用板。再加上采用PCI總線,系統(tǒng)性能將極大提高。在操作系統(tǒng)領(lǐng)域卻沒有相應(yīng)的變化。
高級嵌入式系統(tǒng)不僅需要價格低廉的硬件,同時也需要很多復(fù)雜的功能,比如圖形用戶接口、網(wǎng)絡(luò)傳輸。在操作系統(tǒng)方面,我們也需要價格便宜、性能成熟、同時又能夠滿足高級嵌入式系統(tǒng)的需求。
如今的Linux已經(jīng)引起了計算機世界的高度重視。許多計算機使用者和廠商都被它的穩(wěn)定性、易得性等特點吸引。它幾乎完全兼容UNIX系統(tǒng)中的功能和開發(fā)工具、應(yīng)用程序。它提供了TCP/IP通訊功能、Internet的Client Server 功能,以及C、C++、JAVA等語言的編譯工具,這些工具和功能都比MS WINDOWS成熟、完善、易用很多。當(dāng)你在使用和編程中遇到問題時,通過Internet你會得到成千上萬的專家和熱心人的幫助。
我認(rèn)為,在解決問題時,通過Internet的幫助會比單純依靠RTOS廠商快捷有效。在廠商幫助下解 決問題,一次只會得到一種方案,如果不行,你必須重新開始;在Internet上,你會得到很多答案。今天的Linux已經(jīng)得到了一些廠商的支持,你也可以從它們那得到技術(shù)支持。但是,最重要的是你擁有源代碼,你可以對問題進行深入的研究,甚至可以擴展功能 。
Linux是MS WINDOWS 和DOS之外所絕佳的選擇。很多嵌入式系統(tǒng)工程師也已經(jīng)開發(fā)了Linux在嵌入式系統(tǒng)方面使用的價值,尤其在專用硬件環(huán)境和多處理器方面。現(xiàn)在的問題是如何使使Linux系統(tǒng)具有實時性。當(dāng)前有兩種方案來解決這個問題:一個是POSIX方法,另外一個是底層解決。
POSIX是類UNIX操作系統(tǒng)的標(biāo)準(zhǔn)化方案,目的是提高軟件的可移植性,加速軟件設(shè)計師的工作。POSIX.1b已有實時性擴展,包括信號、內(nèi)存鎖定、時鐘和計數(shù)、消息隊列以及搶先調(diào)度策略。不過這種辦法比較適合工作站系統(tǒng),對基于PC的嵌入式系統(tǒng)并不是很好。
其次是類UNIX的系統(tǒng)調(diào)用比較繁復(fù),不如pSOS+等的明了。但是仍然有一批開發(fā)者在優(yōu)化Linux,當(dāng)然也取得了一些成功,譬如內(nèi)存鎖定方法和任務(wù)調(diào)度算法有了改進。這其中最主要的成果是POSIX線程(定義于POSIX.1c)。這個功能對嵌入式系統(tǒng)來說很好。
另一個方案從底層來提高Linux的實時性,即所謂的“硬”實時性。在這個方面做得最為成功的是New Mexico institute of Mining and Technology,他們在Linux系統(tǒng)下加入實時性的kernel(核心),讓Linux本身運行在優(yōu)先級較低的層面上。
這種設(shè)計方法對Linux 系統(tǒng)的修改減少到最低,同時增加必需的實時功能。這樣使得在Linux本身的升級后,可以進行很少的修改就可以把RT-linux引進新版的Linux核心。RT-Linux和Linux的結(jié)合提供所有的實時功能,包括底層任務(wù)的創(chuàng)建、中斷任務(wù)的安裝、底層任務(wù)隊列管理、中斷任務(wù)的運行等。這種設(shè)計使得在系統(tǒng)中有兩種域:實時域和非實時域。實時域的函數(shù)滿足實時性要求;不過,任務(wù)必須簡單,因為分批給它們的資源比較少。
非實時域的函數(shù)可以享用系統(tǒng)全部資源,但是它們的實時性比較差。兩個域之間的通訊方法也提供了。在所有RT-Linux時,必須保證需要的函數(shù)在各自的運行域是合適的,不要以為先前的非實時函數(shù)在安裝安裝了RT-Linux后就具有了實時性,對實時性要求有關(guān)的函數(shù)必須放到實時域中去運行。
RT- Linux中任務(wù)處理也比較簡單,所有rt-task-init()創(chuàng)建和啟動實時任務(wù)。實時域和非實時域的函數(shù)通訊方法是通過FIFO進行。所有 FIFO的明顯好處是方便數(shù)據(jù)的傳輸,如果設(shè)定其長度為零,又可以當(dāng)成信號所有。目前的不足是沒有提供優(yōu)先級繼承機制(為了防治優(yōu)先級的逆轉(zhuǎn))和任務(wù)的安全刪除,但是在設(shè)計過程中卻可以依靠仔細(xì)設(shè)計來避免這種錯誤發(fā)生。當(dāng)然使用零長的FIFO來掛起程序的運行的方法有一點麻煩,不過它總算是一種辦法。新設(shè)計的方法是設(shè)定超時功能。
RT-Linux作為簡單、開放的軟件,使用者可以可以根據(jù)你們的需要來更新這些功能,設(shè)計出更好的方案,并公布給大家。
RT- Linux中最為引人注意的特色是它使得Linux的核心能夠被搶先。Linux以及其他類UN IX操作系統(tǒng)的核心都不能被長期打斷。正是因為這一點,使得Linux不能是一個完全合格的實時操作系統(tǒng)。不過,使用上面介紹的兩種方法都可以提高 Linux的實時性。
第一種方法重新設(shè)計核心,當(dāng)然能夠達到要求。然而Linux的核心大且復(fù)雜,還經(jīng)常修正;它的設(shè)計者并不關(guān)心其實時性能。因此強加入實時的功能于現(xiàn)成代碼并不合適。即使這樣,當(dāng)Linux的核心升級,就不免要重新設(shè)計程序。
RT-Linux采用的另外的方法使得Linux的核心可以被中斷;它把中斷分為兩類:Linux控制的中斷和RT-Linux控制下的中斷。RT- Linux嚴(yán)格限制任務(wù)和中斷的內(nèi)容;它們不能調(diào)用Linux的核心,所以它們可以中斷核心的工作。如果它們不改變核心的東西,那么它們將不會干擾核心的運行。其次,Linux的中斷也不能夠打斷核心的運行。
于是RT- Linux采用了虛擬的中斷結(jié)構(gòu),使得Linux的核心不能禁止中斷。在標(biāo)準(zhǔn)的Linux系統(tǒng)中,使用了“sti”和“cli”宏,然后運行X86的相應(yīng)指令。RT-Linux修改了這兩條指令的運行方式;執(zhí)行“cli”,它不禁止中斷,而是重新指向RT-Linux的代碼,進行判斷;如果是RT- Linux的則讓中斷繼續(xù)執(zhí)行,如果是標(biāo)準(zhǔn)Li nux的中斷,則設(shè)置標(biāo)志。運行“sti”時,掛起的任何中斷繼續(xù)執(zhí)行。如此這般,Linux不能中斷它自身,RT-Linux就可以了。
評論