關于實時操作系統(tǒng)(RTOS) 的選擇

姓名:朱碩雅

學號:14020120008

轉(zhuǎn)載自http://mp.weixin.qq.com/s?__biz=MzAxNDAyMzc0Mg==&mid=2683462191&idx=2&sn=6ffbc07273f118be97e265e21ec5cb26&chksm=819f6f7eb6e8e668f4ae3f11090a3ddc4e984b0217d40590a9b4e6128d66ec903eebbb53cc5e&scene=21#wechat_redirect有修改

【嵌牛導讀】:公司里做項目疗我,嵌入式系統(tǒng)大大小小,到處都是死相,便需要對實時操作系統(tǒng)(RTOS)引入選擇有初步認識

【嵌牛鼻子】:嵌入式码党,實時操作系統(tǒng)

【嵌牛提問】:(1)引入RTOS?

? ? ? ? ? ? ? ? ? ? ? ? ?(2)是否需要RTOS?

? ? ? ? ? ? ? ? ? ? ? ? ? (3)如何選擇RTOS台谍?

【嵌牛正文】:

成本主要是 RTOS 的版費、學習成本吁断。這個差別可大了趁蕊,有些操作系統(tǒng),如商業(yè)的VxWorks仔役、QNX掷伙、Lynx、uC/OS又兵,貴啊任柜,但拍了銀子,人家肯定會教您上手的。但很多操作系統(tǒng)宙地,如 FreeRTOS升熊、 RTEMS、ecos绸栅、RT-Thread,商業(yè)使用幾乎是沒有成本的页屠,也沒有任何的版權問題粹胯。撇開這些商業(yè)收費的 RTOS 不談,就談這些開源免費的 RTOS辰企,成本主要是學習成本了风纠。如RTEMS這種操作系統(tǒng)就不太好學,資料少牢贸,本身的復雜度也高竹观;如 FreeRTOS,小巧潜索,研究的人也多臭增,本身代碼也不復雜,學習曲線不陡峭竹习,很容易爬上去誊抛。

可靠性是靠時間沉淀的。市場上不乏一些后起之秀整陌,如rt-thread拗窃,相比 rtems 這種鼻祖類的 rtos,還稍顯稚嫩泌辫。這并不意味這我們什么都選擇 rtems随夸, 那 rt-thread 怎么發(fā)展?對于小型的項目震放,可以試一試宾毒。大型項目,為了減少技術上的風險澜搅,還是謹慎為妙伍俘。

實時性,這個應該是 RTOS 的看家本領勉躺,我初學 rtos 的時候癌瘾,好喜歡看牛人搞得 RTOS 對比表格。上下文切換時間啊饵溅,中斷響應時延啊……總喜歡挑那些時間最小的系統(tǒng)……但后來我知道了妨退,事實上不是幾個對比表格就能說清楚問題的。下面會詳細說到這些問題。

工具鏈咬荷,它往往決定我們開發(fā)的效率冠句,和最終產(chǎn)品交付的質(zhì)量。有一些 RTOS 沒那么幸運幸乒,沒有讓你選擇工具鏈的權利懦底,就算有,也需要付出很大的代價罕扎。如 RTEMS 采用GNU的工具鏈聚唐,gnu 的工具鏈不好用,我就嘗試過把 rtems 移到 iar ewarm 下腔召。后來杆查,搞到一半的時候,不得不放棄臀蛛,付出的精力已經(jīng)超出了我的承受范圍亲桦。但 freeRTOS、uC/OS 這類小 RTOS浊仆,只要編譯器支持編譯可重入代碼就可以客峭,這條只有老掉牙的編譯器不行。所以基本上是個C編譯器都可以做Free RTOS抡柿、uC/OS的編譯桃笙。

模塊豐富,有沒有TCP/IP協(xié)議棧沙绝、文件系統(tǒng)搏明、CAN協(xié)議棧、圖形界面等闪檬。當然這個都不是必須的星著,對于簡單的產(chǎn)品,可能這些模塊都用不到粗悯。對于復雜的系統(tǒng)虚循,這些集成好的模塊,會大大節(jié)省開發(fā)時間样傍。自己也可以移植相關的模塊横缔,可能會有幾個切實的問題不好解決:模塊因為不符合 rtos 的設計思想,會對整體的實時性造成損害衫哥;也可能因為模塊使用的庫茎刚,和 rtos 使用的庫相沖突……

內(nèi)核 RAM、ROM 的占用量實際上要求 Rtos 高度可裁剪撤逢。不是所有內(nèi)核裁剪到最后都能滿足要求膛锭,RTOS 都有個最低的 RAM粮坞、ROM 要求,只剩一些最基本的服務初狰。每加一個特性會增加一些資源莫杈,可以查閱相關資料得到這方面信息,確定系統(tǒng)資源可以保證順暢的使用該 RTOS奢入。

支持筝闹,如果是商業(yè)系統(tǒng),那不用擔心腥光,既然付了銀子丁存,人家肯定保證實施過程的順暢。如果是開源系統(tǒng)柴我,開發(fā)團隊沒有像樣的 rtos 專家可不行。雖然 rtos 系統(tǒng)都是相通的扩然,了解另外一個 rtos 很快艘儒,但有時候也不盡然。RTEMS 這么復雜的 RTOS 搞懂了夫偶,去弄 freeRTOS界睁、uC/OS、rt-Thread 小麻雀兵拢,自然沒問題翻斟;要是弄 QNX、VxWorks说铃、Lynx访惜,還是要費點功夫。 RTOS 在開發(fā)過程中會遇到很多問題腻扇,比如棧的估算债热、任務優(yōu)先級的設計、內(nèi)存的設計幼苛、實時性的設計等窒篱,都是很不好弄的問題。最好團隊內(nèi)有相關 RTOS 的專家舶沿,要是學習的話無所謂墙杯,研發(fā)產(chǎn)品和系統(tǒng)的話,那就是大問題了括荡。

(4)幾種嵌入式RTOS的分析與比較

1). 4種操作系統(tǒng)的介紹

1.1??? VxWorks

VxWorks是美國WindRiver公司的產(chǎn)品高镐,是目前嵌入式系統(tǒng)領域中應用很廣泛,市場占有率比較高的嵌入式操作系統(tǒng)畸冲。VxWorks實時操作系統(tǒng)由400多個相對獨立避消、短小精悍的目標模塊組成低滩,用戶可根據(jù)需要選擇適當?shù)哪K來裁剪和配置系統(tǒng);提供基于優(yōu)先級的任務調(diào)度岩喷、任務間同步與通信恕沫、中斷處理、定時器和內(nèi)存管理等功能纱意,內(nèi)建符合POSIX(可移植操作系統(tǒng)接口)規(guī)范的內(nèi)存管理婶溯,以及多處理器控制程序;并且具有簡明易懂的用戶接口偷霉,在核心方面甚至可以微縮到8 KB迄委。

1.2??? μC/OS-II

μC/OS-II是美國嵌入式系統(tǒng)專家Jean J.Labrosse用C語言編寫的一個結構小巧、搶占式的多任務實時內(nèi)核类少。μC/OS-II能管理64個任務叙身,并提供任務調(diào)度與管理、內(nèi)存管理硫狞、任務間同步與通信信轿、時間管理和中斷服務等功能,具有執(zhí)行效率高残吩、占用空間小财忽、實時性能優(yōu)良和可擴展性強等特點。

1.3??? μClinux

μClinux是一種優(yōu)秀的嵌入式Linux版本泣侮,其全稱為micro-control Linux即彪,從字面意思看是指微控制Linux。同標準的Linux相比活尊,μClinux的內(nèi)核非常小隶校,但是它仍然繼承了Linux操作系統(tǒng)的主要特性,包括良好的穩(wěn)定性和移植性蛹锰、強大的網(wǎng)絡功能惠况、出色的文件系統(tǒng)支持、標準豐富的API宁仔,以及TCP/IP網(wǎng)絡協(xié)議等稠屠。因為沒有MMU內(nèi)存管理單元,所以其多任務的實現(xiàn)需要一定技巧翎苫。

1.4??? eCos

eCos(embedded Configurable operating system)权埠,即嵌入式可配置操作系統(tǒng)。它是一個源代碼開放的可配置煎谍、可移植攘蔽、面向深度嵌入式應用的實時操作系統(tǒng)。最大特點是配置靈活呐粘,采用模塊化設計满俗,核心部分由小的組件構成转捕,包括內(nèi)核、C語言庫和底層運行包等唆垃。每個組件可提供大量的配置選項(實時內(nèi)核也可作為可選配置)五芝,使用eCos提供的配置工具可以很方便地配置,并通過不同的配置使得eCos能夠滿足不同的嵌入式應用要求辕万。

1.5FreeRTOS:

以前對FreeRTOS的印象還不錯枢步,就因為免費,最近上官網(wǎng)仔細看過以后發(fā)現(xiàn)它用的是修改版GPL2渐尿,商用確實是免費的醉途,但是必須告知用戶你的產(chǎn)品用了FreeRTOS,并且如果用戶要求就必須提供源代碼砖茸。

如果要不談我用的什么系統(tǒng)隘擎,也不想提供源代碼,就的付費給它凉夯,改授權變成OpenRTOS鸟顺。

還有更好的呢纠屋!如果想要更多的功能疲吸,更全的協(xié)議棧酵使,更完善完整的安全性钟些,請付更多的錢得到SafeRTOS吮螺!看個API文檔都要收錢洗鸵,要其他模塊也要收錢(FS斩跌,TCP)尊残。要不就自己費點勁移植吧炒瘸。另外,功能也比較簡單寝衫,只能支持:隊列顷扩,信號量和互斥。但是收費版SafeRTOS應該不錯慰毅,只是不拿錢就見不著(流明的CM3部分型號內(nèi)建了SafeRTOS的API隘截,出廠就有可以直接用,這個不錯汹胃。)

最小系統(tǒng):ROM 6K RAM 2K

/*補充內(nèi)容*/

FreeRTOS和OpenRTOS

FreeRTOS和OpenRTOS的共享相同的源碼婶芭,只是 OpenRTOS 為 FreeRTOS 披上’commercial and legal wrapper’‘

用戶從FreeRTOS更新到OpenRTOS主要有兩個原因:

(1)為了克服FreeRTOS修改版的GPL許可證限制。

(2)為了獲得額外的服務着饥,如專業(yè)的技術支持犀农,高質(zhì)量的中間件,培訓宰掉,咨詢和相應的工具

FreeRTOS修改版的GPL許可證限制

修改版的GPL許可證有如下幾個缺陷(There are several reasons why developers may find the FreeRTOS modified GPL licence restrictive.)

(1)公司可能有一個全面禁止在他們的項目中使用GPL授權的軟件呵哨。

(2)他們可能需要IP賠償赁濒。

(3)他們可能更愿意在他們的產(chǎn)品中,避免FreeRTOS的許可證要求承認他們使用FreeRTOS的孟害。

一個OPENRTOS許可證刪除了 修改后的GPL的限制拒炎,提供知識產(chǎn)權保障,并允許開發(fā)者保持匿名纹坐。

FreeRTOS和SafeRTOS

SafeRTOS也是基于FreeRTOS的枝冀,但是和FreeRTOS不同,被安全方面的專家做了重新設計耘子。

SAFERTOSwas initially certified in 2007 by TüV SüD to IEC 61508-3 SIL 3, the highest level possible for a software only component.

Today SAFERTOShas grown to be a leading safety critical RTOS solution supporting a wide range of international design safety standards, including:

IndustrialIEC 61508 (2010)

RailwayEN 50128

MedicalIEC 62304/FDA 510K

NuclearIEC 61513, IEC 62138, ASME NQA-1 2008

ProcessIEC 61511

AutomotiveISO 26262

AerospaceDO178B

2) ????? 性能分析與比較

任務管理果漾、任務及中斷間的同步與通信機制、內(nèi)存管理谷誓、中斷管理绒障、文件系統(tǒng)、對硬件的支持和系統(tǒng)移植這幾方面是實時操作系統(tǒng)的主要性能捍歪。下面就從這幾個方面著手對上述4種操作系統(tǒng)進行分析與比較户辱。

2.1??? 任務管理

任務管理是嵌入式實時操作系統(tǒng)的核心和靈魂,決定了操作系統(tǒng)的實時性能糙臼。它通常包含優(yōu)先級設置庐镐、多任務調(diào)度機制和時間確定性等部分。

優(yōu)先級設置

嵌入式操作系統(tǒng)支持多任務变逃,每個任務都具有優(yōu)先級必逆,任務越重要,賦予的優(yōu)先級應越高揽乱。優(yōu)先級的設置分為靜態(tài)優(yōu)先級和動態(tài)優(yōu)先級兩種名眉。靜態(tài)優(yōu)先級指的是每個任務在運行前都被賦予一個優(yōu)先級,而且這個優(yōu)先級在系統(tǒng)運行期間正常情況下是不能改變的凰棉,但允許通過系統(tǒng)調(diào)函函數(shù)改變?nèi)蝿盏膬?yōu)先級损拢;動態(tài)優(yōu)先級則是指每個任務的優(yōu)先級(特別是應用程序的優(yōu)先級)在系統(tǒng)運行時可以動態(tài)地改變,這種改變是調(diào)度算法決定的撒犀,而非通過系統(tǒng)調(diào)用人為改變的福压。

多任務調(diào)度機制

任務調(diào)度主要是協(xié)調(diào)任務對CPU資源的爭奪使用。對系統(tǒng)資源非常匱乏的嵌入式系統(tǒng)來說或舞,任務調(diào)度尤為重要隧膏,它直接影響到系統(tǒng)的實時性能。通常嚷那,多任務調(diào)度機制分為基于優(yōu)先級搶占式調(diào)度和時間片輪轉(zhuǎn)調(diào)度胞枕。

基于優(yōu)先級搶占式調(diào)度(PBP,Priority Based and Preemptive):系統(tǒng)中每個任務都有一個優(yōu)先級魏宽,內(nèi)核總是將CPU分配給處于就緒態(tài)的優(yōu)先級最高的任務運行腐泻。如果系統(tǒng)發(fā)現(xiàn)就緒隊列中有比當前運行任務更高的優(yōu)先級任務决乎,就把當前運行任務置于就緒隊列中,調(diào)入高優(yōu)先級任務運行派桩。系統(tǒng)采用優(yōu)先級搶占方式進行調(diào)度构诚,可以保證重要的突發(fā)事件及時得到處理。

時間片輪轉(zhuǎn)調(diào)度(RR铆惑,Round Robin) :讓優(yōu)先級相同的處于就緒狀態(tài)的任務按時間片使用CPU范嘱,以防止同優(yōu)先級的某一任務長時間獨占CPU。

在一般情況下员魏,嵌入式實時操作系統(tǒng)采用基于優(yōu)先級搶占式調(diào)度與時間片輪轉(zhuǎn)調(diào)度相結合的調(diào)度機制丑蛤。

時間的可確定性

嵌入式實時操作系統(tǒng)函數(shù)調(diào)用與服務的執(zhí)行時間應具有可確定性。系統(tǒng)服務的執(zhí)行時間不依賴于應用程序任務的多少撕阎∈芄基于此特征,系統(tǒng)完成某個確定任務的時間是可預測的虏束。表1具體列出了4種操作系統(tǒng)的調(diào)度機制棉饶。

4種嵌入式實時操作系統(tǒng)都支持多任務,只是在支持任務數(shù)量上和任務調(diào)度機制上有所不同镇匀。VxWorks具有高效的任務管理功能照藻,它支持多任務,可分配256個優(yōu)先級汗侵,支持優(yōu)先級搶占式調(diào)試和時間片輪轉(zhuǎn)調(diào)度幸缕,實時性最好。μC/OS-II內(nèi)核是針對實時系統(tǒng)的要求設計實現(xiàn)的晃择,只支持基于固定優(yōu)先級搶占式調(diào)度冀值;調(diào)度方法簡單也物,可以滿足較高的實時性要求宫屠。μClinux在結構上繼承了標準Linux的多任務實現(xiàn)方式,分為實時進程和普通進程滑蚯,分別采用先來先服務和時間片輪轉(zhuǎn)調(diào)度浪蹂;僅針對中低檔嵌入式CPU特點進行改良,且不支持內(nèi)核搶占告材。eCos調(diào)度方法豐富坤次,提供了兩種基于優(yōu)先級的調(diào)度器(即位圖調(diào)度器和多級隊列調(diào)度器),允許用戶在進行配置時選擇其中一個凋度器斥赋,適應性好缰猴。

2.2??? 任務及中斷間的同步與通信機制

實時操作系統(tǒng)的功能一般要通過若干任務和中斷服務程序共同完成。任務與任務之間疤剑、任務與中斷間任務及中斷服務程序之間必須協(xié)調(diào)動作滑绒,互相配合闷堡,這就涉及任務間的同步與通信問題。嵌入式實時操作系統(tǒng)通常是通過信號量Semaphere疑故、互斥信號量Mutex杠览、事件標志Event和異步信號Signal來實現(xiàn)同步,通過消息郵箱MailBox纵势、消息隊列沒Message踱阿、管道Pipe和共享內(nèi)存Share Mem來提供通信服務。由于互斥信號量的使用钦铁,帶來了實時操作系統(tǒng)中常見的優(yōu)先級反轉(zhuǎn)問題软舌。優(yōu)先級反轉(zhuǎn)是一種不確定的延遲形式,當高優(yōu)先級任務企圖訪問已被低優(yōu)先級占有的共享資源時育瓜,必須等待低優(yōu)先級任務釋放共享資源葫隙;如果這時低優(yōu)先級任務被一個或多個中優(yōu)先級任務搶占,那么高優(yōu)先級任務被延遲的時間將更進一步延長躏仇,實時性難以保證恋脚。因此,應采取相關措施以盡鼉避免出現(xiàn)優(yōu)先級反轉(zhuǎn)問題焰手。實時系統(tǒng)通常采用優(yōu)先級繼承和優(yōu)先級置頂機制糟描。

優(yōu)先級繼承是指擁有互斥信號量的任務被提升到與下一個在等待該互斥信號量的最高優(yōu)先級任務相同的優(yōu)先級;優(yōu)先級置頂是指獲得互斥量的任務將其優(yōu)先級提升到一個事先規(guī)定好的值书妻。表2為4種操作系統(tǒng)的同步與通信機制的比較船响。

4種系統(tǒng)都具有靈話的任務間同步與通信機制,都可以通過信號量躲履、消息隊列來實現(xiàn)同步與通信见间,但是VxWorks與μClinux都不支持郵箱和事件標志,而且除了μClinux和eCos中的位圖調(diào)度器工猜,其他操作系統(tǒng)都采取了措施抑制優(yōu)先級反轉(zhuǎn)米诉。

2.3??? 內(nèi)存管理

內(nèi)存管理主要包括:內(nèi)存分配原則,存儲保護和內(nèi)存分配方式篷帅。

內(nèi)存分配原則

內(nèi)存分配原則包括快速性史侣、可靠性和高效性。其中魏身,快速性要求內(nèi)存分配過程要盡可能快惊橱,所以一般采用簡單、快速的分配算法箭昵;可靠性指的是內(nèi)存分配的請求必須得到滿足税朴;系統(tǒng)強調(diào)高效性的要求,不僅僅是對系統(tǒng)成本的要求,而且由于系統(tǒng)本身可配置的內(nèi)存容量也是很有限的正林,所以要盡可能地避免浪費茧跋。嵌入式系統(tǒng)通常會根據(jù)特定的需求對內(nèi)存分配方案進行規(guī)劃,從而避免內(nèi)存碎片卓囚。

存儲保護

通常在操作系統(tǒng)的內(nèi)存中既有系統(tǒng)程序也有用戶程序瘾杭,為了使兩者都能正常運行,避免程序間相互干擾哪亿,需要對內(nèi)存中的程序和數(shù)據(jù)進行保護粥烁。存儲保護通常需要硬件支持,在很多系統(tǒng)中都采用MMU蝇棉,并結合軟件實現(xiàn)讨阻;但由于嵌入式系統(tǒng)的成本限制內(nèi)核和用戶程序通常都在相同的內(nèi)存空間中。因此是否支持存儲保護一方面取決于CPU是否支持MMU及不同的運行級別篡殷,如ARM7TDMI核不支持MMU钝吮,大多數(shù)DSP都不支持MMU和運行級別;另一方面依賴于操作系統(tǒng)是否在軟件上進行支持板辽,uC/OS奇瘦、eCos等本身就不支持虛擬內(nèi)存管理。VxWorks也有不同的版本劲弦,6.0版本以下就不支持MMU耳标。

內(nèi)存分配方式

內(nèi)存分配方式可分為靜態(tài)分配和動態(tài)分配。靜態(tài)分配是在程序運行前一次性分配給相應內(nèi)存邑跪,并且在程序運行期間中不允許再申請或在內(nèi)存中移動次坡;動態(tài)分配則允許在程序運行整個過程中進行內(nèi)存分配。靜態(tài)分配使系統(tǒng)失去了靈活性画畅,但對于實時性要求比較高的系統(tǒng)是必需的砸琅,通常情況下這些系統(tǒng)的內(nèi)存有限,用戶的全局數(shù)據(jù)都會精心規(guī)劃轴踱,只有內(nèi)核本身會使用一些動態(tài)內(nèi)存症脂;而動態(tài)分配賦予了系統(tǒng)設計者更多自主性,可以靈活地調(diào)整系統(tǒng)的功能寇僧。

VxWorks對內(nèi)存的使用采用的是Flat Mode摊腋,可被靜態(tài)或動態(tài)鏈接沸版。VxWorks為用戶提供了兩種內(nèi)存區(qū)域Region和Partition嘁傀。Region是變長的內(nèi)存區(qū),用戶可以從創(chuàng)建的Region中分配Segment视粮,其特點是容易產(chǎn)生碎片细办,但靈活并且不浪費;Partition是定長的內(nèi)存區(qū),用戶可以從刨建的Partition中分配Buffer笑撞,其特點是不會產(chǎn)生碎片岛啸,效率高但是易浪費。VxWorks采用最先算法分配內(nèi)存茴肥。

μC/OS-II把連續(xù)的大塊內(nèi)存按分區(qū)來管理坚踩,每個分區(qū)中都包含整數(shù)個大小相同的內(nèi)存塊,但不同分區(qū)之間內(nèi)存的太小可以不同瓤狐。用戶動態(tài)分配內(nèi)存時瞬铸,只須選擇一個適當?shù)姆謪^(qū),按塊來分配內(nèi)存础锐,釋放時將該塊放回到以前所屬的分區(qū)嗓节,這樣就消除了因多次動態(tài)分配和釋放內(nèi)存所引起的碎片問題。

μClinux是針對沒有MMU的處理器設計的皆警,不能使用處理器的虛擬內(nèi)存管理技術拦宣,只能采用實存儲器管理策略。系統(tǒng)使用分頁內(nèi)存分配方式信姓,在啟動時對實際存儲器進行分頁鸵隧。系統(tǒng)對內(nèi)存的訪問是直接的,操作系統(tǒng)對內(nèi)存空間沒有保護意推,多個進程可共享一個運行空間掰派,所以,即使是一個無特權進程調(diào)用一個無效指針也會觸發(fā)一個地址錯誤左痢,并有可能引起程序崩潰甚至系統(tǒng)崩潰靡羡。

eCos對內(nèi)存分配既不分段也不分頁,而是采用一種基于內(nèi)存池的動態(tài)內(nèi)存分配機制俊性。通過兩種內(nèi)存池來實現(xiàn)兩種內(nèi)存管理方法:一種是變長的內(nèi)存池略步;另一種是定長的內(nèi)存池,類似于VxWorb的管理方案定页。表3為4種操作系統(tǒng)內(nèi)存管理的比較趟薄。

2.4??? 中斷管理

中斷管理是實時系統(tǒng)中一個很重要的部分,系統(tǒng)經(jīng)常通過中斷與外部事件交互典徊。主要考慮是否支持中斷嵌套杭煎、中斷處理機制、中斷延時等卒落。

VxWorks的中斷管理

VxWorks操作系統(tǒng)中斷管理采用中斷處理與普通任務分別在不同棧中處理的中斷處理機制羡铲,使得中斷只會引發(fā)一些關鍵寄存器的存儲,而不會導致任務的上下文切換儡毕,從而極大地縮短了中斷延時也切。同時,VxWorks的中斷處理程序一般在最短時間內(nèi)通告中斷的發(fā)生,而將其他的非實時處理盡量放入被引發(fā)的中斷服務任務中來完成雷恃,這也縮短了中斷處理的時間疆股,可有效減少中斷延時。所有中斷處理程序使用相同的中斷堆棧倒槐。為了能處理最壞情況下的中斷嵌套旬痹,必須分配足夠大的中斷堆棧空間讨越。

μC/OS-II的中斷管理

μC/OS-II中斷處理比較簡單唱凯。一個中斷向量上只能掛一個中斷服務子程序ISR,而且用戶代碼必須都在ISR中完成谎痢。ISR需要做的事情越多磕昼,中斷延時也就越長。是否支持中斷嵌套取決于具體實現(xiàn)节猿,如在ARM處理器上當選擇中斷嵌套時需要切換不同的處理器模式票从,實現(xiàn)起來也比較麻煩。

μClinux的中斷管理

μClinux操作系統(tǒng)將中斷處理分為兩部分:頂半處理和底半處理滨嘱。在頂半處理中峰鄙,必須關中斷運行,且僅進行必要的太雨、非常少吟榴、速度快的處理,其他處理交給底半處理囊扳;底半處理執(zhí)行那些復雜吩翻、耗時的處理,而且允許被中斷锥咸。通常在硬件中斷返回的時候會執(zhí)行底半部的軟中斷狭瞎,若軟中斷太多則會交給專門的內(nèi)核處理任務處理,此時中斷返回搏予,避免由于中斷運行時間過長影響其它其他進程熊锭。因此在頂半部中斷是不會嵌套的。所有的中斷服務下半部將順序執(zhí)行雪侥。所有的中斷處理程序共用系統(tǒng)堆棧碗殷。

eCos的中斷管理

eCos使用了分層式中斷處理機制,把中斷處理分為傳統(tǒng)的ISR和滯后中斷服務程序DSR速缨。類似于μClinux的處理機制锌妻,這種機制可以在中斷允許時運行DSR,因此在處理較低優(yōu)先級中斷時允許高優(yōu)先級的中斷和處理鸟廓。為了極大地縮短中斷延時从祝,ISR應當可以快速運行。如果中斷引起的服務量少引谜,則ISR可以單獨處理中斷牍陌;如果中斷服務復雜,則ISR只屏蔽中斷源员咽,然后交由DSR處理毒涧。

2.5??? 文件系統(tǒng)

所謂"文件系統(tǒng)"是指負責存取和管理文件信息的機構,也可以說是負責文件的建立贝室、撤銷契讲、組織、讀寫滑频、修改捡偏、復制,以及對文件管理所需的其他資源實施管理的軟件部分峡迷。

VxWorks操作系統(tǒng)在文件系統(tǒng)與設備驅(qū)動程序之間使用一種標準的I/O口操作接口银伟,且支持MS-DOS、RT-11绘搞、RFS彤避、CD-ROM、RAW等文件系統(tǒng)夯辖。這樣琉预,在單個VxWorks操作系統(tǒng)中可以運行多個相同或不同種類的文件系統(tǒng)。

μC/OS-II是面向中小型嵌入式系統(tǒng)的蒿褂,即使包含全部功能圆米,編譯后內(nèi)核也不到10 KB,所以系統(tǒng)本身并沒有提供對文件系統(tǒng)的支持啄栓。但是μC/OS-II具有良好的擴展性能榨咐,如果需要也可自行加入文件系統(tǒng)的內(nèi)容。

μClinux繼承了Linux完善的文件系統(tǒng)性能谴供,采用VFS機制块茁,可以支持ROMFS、NFS桂肌、ext2数焊、MS-DOS、JFFS等文件系統(tǒng)崎场。但一般采用ROMFS文件系統(tǒng)佩耳,這種文件系統(tǒng)相對于一般的文件系統(tǒng)(如ext2)占用更少的空間。但是ROMFS文件系統(tǒng)不支持動態(tài)擦寫保存谭跨,對于系統(tǒng)需要動態(tài)保存的數(shù)據(jù)須采用虛擬RAM盤/JFFS的方法進行處理干厚。

eCos操作系統(tǒng)的可配置性非常強大李滴,用戶可以自己加入所需的文件系統(tǒng)。

2.6??? 對硬件的支持

VxWorks蛮瞄、μC/OS-II所坯、μClinux和eCos這4種操作系統(tǒng)都支持當前流行的大部分嵌入式CPU。μC/OS-II支持從8位到32位的CPU挂捅,VxWorks芹助、μClinux和eCos可以在16位、32位和64位等不同體系結構之間移植闲先。

由于μClinux繼承了Linux的大部分性能状土,所以至少需要512KB的RAM空間,lMB的ROM/Flash空間伺糠;而μC/OS-II和eCos由于本身內(nèi)核就很小蒙谓,經(jīng)過裁剪后的代碼最小可以分別為2 KB和10 KB,所需的最小數(shù)據(jù)RAM空間分別為4 KB和10 KB训桶”宋冢總的來說,4種系統(tǒng)對硬件的要求比較低渊迁,比較經(jīng)濟慰照。具體比較如表4所列。

2.7??? 系統(tǒng)移植

嵌入式操作系統(tǒng)移植的目的是使嵌入式操作系統(tǒng)能在某個微處理器或微控制器上運行琉朽。4種系統(tǒng)中VxWorks是商用操作系統(tǒng)的有很多API函數(shù)及相關技術支持毒租,所以移植和二次開發(fā)比較容易,但是移植成本較高箱叁。其他3種系統(tǒng)的結構化設計便于把與處理器相關的部分分離出來墅垮,所以被移植到新的處理器上也是可能的。μC/OS-II的移植相對比較簡單耕漱,只需要修改與處理器相關的代碼就可以了算色。μClinux是Linux針對嵌入式系統(tǒng)的一種改良,其結構比較復雜螟够。移植μClinux灾梦,目標處理器除了應滿足μC/OS-II移植所需的條件外,還需要足夠容量的外部ROM和RAM妓笙。eCos系統(tǒng)的可移植性明顯比μC/OS-II和μClinux好若河。在eCos系統(tǒng)中,每個硬件平臺都有一個單獨的目錄寞宫,用于存放引對這一硬件平臺的硬件抽象層的代碼和配置信息萧福;而μClinux的硬件抽象層的代碼則分布在好幾個目錄中,通過命令來選擇不同硬件平臺的代碼辈赋。所以鲫忍,修改eCos代碼相對簡單膏燕,移植也相對容易。

2.8??? 結論

這4種嵌入式實時操作系統(tǒng)在嵌入式系統(tǒng)的應用非常廣泛悟民,但是又具有各自的特點坝辫。根據(jù)上述比較,歸納出各自的適用領域逾雄。

VxWorks是一套類似于Unix的實時操作系統(tǒng)阀溶,它內(nèi)建了符合POSIX規(guī)范的內(nèi)存管理腻脏,以及多處理器控制程序鸦泳,并且具有簡明易懂的用戶接口,在核心方面甚至可以微縮到8 KB永品。它由400多個相對獨立的做鹰、短小精悍的目標模塊組成,用戶可根據(jù)需要選擇適當模塊來裁剪和配置系統(tǒng)鼎姐,有效地保證了系統(tǒng)的安全性和可靠性钾麸。它被廣泛地應用在通信、軍事炕桨、航空饭尝、航天等高尖技術及實時性要求極高的領域,尤其是在許多關鍵應用方面献宫,VxWorks還是一枝獨秀钥平。例如,美國波音公司就在其最新的787客機中采用了此操作系統(tǒng)姊途;而在外層空間探索領域涉瘾,VxWorks則一直是美國太空總署NASA的最愛。

μC/OS-II是一個結構簡單捷兰、功能完備和實時性很強的嵌入式操作系統(tǒng)內(nèi)核立叛,適合于廣大的嵌入式系統(tǒng)開發(fā)人員和愛好者入門學習,以及高校教學和科研贡茅。μC/OS-II很適合開發(fā)那些對系統(tǒng)要求不是很苛刻秘蛇,且RAM和ROM有限的各種小型嵌入式系統(tǒng)設備。

μClinux最大特點在于針對無MMU處理器設計顶考,可以利用功能強大的Linux資源彤叉,因此適合開發(fā)對時間要求不高的小容量、低成本的各類產(chǎn)品村怪,特別適用于開發(fā)與網(wǎng)絡應用密切相關的嵌入式設備或者PDA設備秽浇。例如,CISCO公司的2500/3000/4000路由器就是基于μClinux操作系統(tǒng)開發(fā)的甚负。

eCos最大特點是配置靈活柬焕,而且是面向深度嵌入式應用的审残,很適合用于一些商業(yè)級或工業(yè)級對成本敏感的嵌入式系統(tǒng),例如消費電子類領域中的一些應用斑举。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末搅轿,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子富玷,更是在濱河造成了極大的恐慌璧坟,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赎懦,死亡現(xiàn)場離奇詭異雀鹃,居然都是意外死亡,警方通過查閱死者的電腦和手機励两,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門黎茎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人当悔,你說我怎么就攤上這事傅瞻。” “怎么了盲憎?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵嗅骄,是天一觀的道長。 經(jīng)常有香客問我饼疙,道長溺森,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任宏多,我火速辦了婚禮儿惫,結果婚禮上,老公的妹妹穿的比我還像新娘伸但。我一直安慰自己肾请,他們只是感情好,可當我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布更胖。 她就那樣靜靜地躺著铛铁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪却妨。 梳的紋絲不亂的頭發(fā)上饵逐,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天,我揣著相機與錄音彪标,去河邊找鬼倍权。 笑死,一個胖子當著我的面吹牛捞烟,可吹牛的內(nèi)容都是我干的薄声。 我是一名探鬼主播当船,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼默辨!你這毒婦竟也來了德频?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤缩幸,失蹤者是張志新(化名)和其女友劉穎壹置,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體表谊,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡钞护,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了铃肯。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片患亿。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡传蹈,死狀恐怖押逼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情惦界,我是刑警寧澤挑格,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站沾歪,受9級特大地震影響漂彤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜灾搏,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一挫望、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧狂窑,春花似錦媳板、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至丛晦,卻和暖如春奕纫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背烫沙。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工匹层, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人锌蓄。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓升筏,卻偏偏與公主長得像仲器,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子仰冠,可洞房花燭夜當晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容