<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 全面解析嵌入式操作系統和Linux

全面解析嵌入式操作系統和Linux

作者: 時(shí)間:2018-08-07 來(lái)源:網(wǎng)絡(luò ) 收藏

本文分析了的特點(diǎn),穩健性和局限性以及最重要的實(shí)時(shí)領(lǐng)域的應用。過(guò)去,因為非PC的硬件平臺價(jià)格昂貴,使得許多高性能要求的系統不能實(shí)現?,F在,因為廉價(jià)的PC硬件大力發(fā)展和廣泛的應用,使得那些高性能要求的系統有了實(shí)現的可能。

本文引用地址:http://dyxdggzs.com/article/201808/385632.htm

但是,嵌入式PC平臺的系統軟件卻不那么具有吸引力。當然你可以選擇DOS,不過(guò)它先天不足。你也可以選擇WINDOWS,但是經(jīng)過(guò)仔細的研究,你會(huì )發(fā)現它的實(shí)時(shí)性能很差。很多高級實(shí)時(shí)價(jià)格不菲,可移植性不好。從1991年以來(lái),在網(wǎng)絡(luò )下發(fā)展的,在服務(wù)器和PC桌面機上,已經(jīng)是Microsoft 的DOS和WINDOWS95/98的強勁對手。

而且它的性能比WINDOWS好得多。如果你有興趣 ,你可以從網(wǎng)上自由下載,或掏比CD本身貴一點(diǎn)的價(jià)格買(mǎi)到。最近有人把實(shí)時(shí)性的部件加入,使得它成為嵌入式系統設計師的一個(gè)極其有價(jià)值工具。盡管它的實(shí)時(shí)部件不如其他的RTOS那么復雜,使用的內存不能太小,但是它的其他優(yōu)點(diǎn)足以超越和彌補它的不足。

在嵌入式系統中使用PC硬件的好處顯而易見(jiàn),生產(chǎn)量大,容易購買(mǎi),價(jià)錢(qián)比較便宜。而且還很容易搞到數模轉換板、網(wǎng)絡(luò )接口板、圖象采集和處理板等專(zhuān)用板。再加上采用PCI總線(xiàn),系統性能將極大提高。在操作系統領(lǐng)域卻沒(méi)有相應的變化。

高級嵌入式系統不僅需要價(jià)格低廉的硬件,同時(shí)也需要很多復雜的功能,比如圖形用戶(hù)接口、網(wǎng)絡(luò )傳輸。在操作系統方面,我們也需要價(jià)格便宜、性能成熟、同時(shí)又能夠滿(mǎn)足高級嵌入式系統的需求。

如今的Linux已經(jīng)引起了計算機世界的高度重視。許多計算機使用者和廠(chǎng)商都被它的穩定性、易得性等特點(diǎn)吸引。它幾乎完全兼容UNIX系統中的功能和開(kāi)發(fā)工具、應用程序。它提供了TCP/IP通訊功能、Internet的Client Server 功能,以及C、C++、JAVA等語(yǔ)言的編譯工具,這些工具和功能都比MS WINDOWS成熟、完善、易用很多。當你在使用和編程中遇到問(wèn)題時(shí),通過(guò)Internet你會(huì )得到成千上萬(wàn)的專(zhuān)家和熱心人的幫助。

我認為,在解決問(wèn)題時(shí),通過(guò)Internet的幫助會(huì )比單純依靠RTOS廠(chǎng)商快捷有效。在廠(chǎng)商幫助下解 決問(wèn)題,一次只會(huì )得到一種方案,如果不行,你必須重新開(kāi)始;在Internet上,你會(huì )得到很多答案。今天的Linux已經(jīng)得到了一些廠(chǎng)商的支持,你也可以從它們那得到技術(shù)支持。但是,最重要的是你擁有源代碼,你可以對問(wèn)題進(jìn)行深入的研究,甚至可以擴展功能 。

Linux是MS WINDOWS 和DOS之外所絕佳的選擇。很多嵌入式系統工程師也已經(jīng)開(kāi)發(fā)了Linux在嵌入式系統方面使用的價(jià)值,尤其在專(zhuān)用硬件環(huán)境和多處理器方面?,F在的問(wèn)題是如何使使Linux系統具有實(shí)時(shí)性。當前有兩種方案來(lái)解決這個(gè)問(wèn)題:一個(gè)是POSIX方法,另外一個(gè)是底層解決。

POSIX是類(lèi)UNIX操作系統的標準化方案,目的是提高軟件的可移植性,加速軟件設計師的工作。POSIX.1b已有實(shí)時(shí)性擴展,包括信號、內存鎖定、時(shí)鐘和計數、消息隊列以及搶先調度策略。不過(guò)這種辦法比較適合工作站系統,對基于PC的嵌入式系統并不是很好。

其次是類(lèi)UNIX的系統調用比較繁復,不如pSOS+等的明了。但是仍然有一批開(kāi)發(fā)者在優(yōu)化Linux,當然也取得了一些成功,譬如內存鎖定方法和任務(wù)調度算法有了改進(jìn)。這其中最主要的成果是POSIX線(xiàn)程(定義于POSIX.1c)。這個(gè)功能對嵌入式系統來(lái)說(shuō)很好。

另一個(gè)方案從底層來(lái)提高Linux的實(shí)時(shí)性,即所謂的“硬”實(shí)時(shí)性。在這個(gè)方面做得最為成功的是New Mexico institute of Mining and Technology,他們在Linux系統下加入實(shí)時(shí)性的kernel(核心),讓Linux本身運行在優(yōu)先級較低的層面上。

這種設計方法對Linux 系統的修改減少到最低,同時(shí)增加必需的實(shí)時(shí)功能。這樣使得在Linux本身的升級后,可以進(jìn)行很少的修改就可以把RT-linux引進(jìn)新版的Linux核心。RT-Linux和Linux的結合提供所有的實(shí)時(shí)功能,包括底層任務(wù)的創(chuàng )建、中斷任務(wù)的安裝、底層任務(wù)隊列管理、中斷任務(wù)的運行等。這種設計使得在系統中有兩種域:實(shí)時(shí)域和非實(shí)時(shí)域。實(shí)時(shí)域的函數滿(mǎn)足實(shí)時(shí)性要求;不過(guò),任務(wù)必須簡(jiǎn)單,因為分批給它們的資源比較少。

非實(shí)時(shí)域的函數可以享用系統全部資源,但是它們的實(shí)時(shí)性比較差。兩個(gè)域之間的通訊方法也提供了。在所有RT-Linux時(shí),必須保證需要的函數在各自的運行域是合適的,不要以為先前的非實(shí)時(shí)函數在安裝安裝了RT-Linux后就具有了實(shí)時(shí)性,對實(shí)時(shí)性要求有關(guān)的函數必須放到實(shí)時(shí)域中去運行。

RT- Linux中任務(wù)處理也比較簡(jiǎn)單,所有rt-task-init()創(chuàng )建和啟動(dòng)實(shí)時(shí)任務(wù)。實(shí)時(shí)域和非實(shí)時(shí)域的函數通訊方法是通過(guò)FIFO進(jìn)行。所有 FIFO的明顯好處是方便數據的傳輸,如果設定其長(cháng)度為零,又可以當成信號所有。目前的不足是沒(méi)有提供優(yōu)先級繼承機制(為了防治優(yōu)先級的逆轉)和任務(wù)的安全刪除,但是在設計過(guò)程中卻可以依靠仔細設計來(lái)避免這種錯誤發(fā)生。當然使用零長(cháng)的FIFO來(lái)掛起程序的運行的方法有一點(diǎn)麻煩,不過(guò)它總算是一種辦法。新設計的方法是設定超時(shí)功能。

RT-Linux作為簡(jiǎn)單、開(kāi)放的軟件,使用者可以可以根據你們的需要來(lái)更新這些功能,設計出更好的方案,并公布給大家。

RT- Linux中最為引人注意的特色是它使得Linux的核心能夠被搶先。Linux以及其他類(lèi)UN IX操作系統的核心都不能被長(cháng)期打斷。正是因為這一點(diǎn),使得Linux不能是一個(gè)完全合格的實(shí)時(shí)操作系統。不過(guò),使用上面介紹的兩種方法都可以提高 Linux的實(shí)時(shí)性。

第一種方法重新設計核心,當然能夠達到要求。然而Linux的核心大且復雜,還經(jīng)常修正;它的設計者并不關(guān)心其實(shí)時(shí)性能。因此強加入實(shí)時(shí)的功能于現成代碼并不合適。即使這樣,當Linux的核心升級,就不免要重新設計程序。

RT-Linux采用的另外的方法使得Linux的核心可以被中斷;它把中斷分為兩類(lèi):Linux控制的中斷和RT-Linux控制下的中斷。RT- Linux嚴格限制任務(wù)和中斷的內容;它們不能調用Linux的核心,所以它們可以中斷核心的工作。如果它們不改變核心的東西,那么它們將不會(huì )干擾核心的運行。其次,Linux的中斷也不能夠打斷核心的運行。

于是RT- Linux采用了虛擬的中斷結構,使得Linux的核心不能禁止中斷。在標準的Linux系統中,使用了“sti”和“cli”宏,然后運行X86的相應指令。RT-Linux修改了這兩條指令的運行方式;執行“cli”,它不禁止中斷,而是重新指向RT-Linux的代碼,進(jìn)行判斷;如果是RT- Linux的則讓中斷繼續執行,如果是標準Li nux的中斷,則設置標志。運行“sti”時(shí),掛起的任何中斷繼續執行。如此這般,Linux不能中斷它自身,RT-Linux就可以了。



關(guān)鍵詞: 嵌入式 操作系統 Linux

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>