新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 如何選擇實時操作系統(tǒng)

如何選擇實時操作系統(tǒng)

——
作者:Greg Hawley 時間:2007-02-28 來源: 收藏

很難作決定是買一個實時操作系統(tǒng),還是自己動手做。如果要買的話,決定買哪一種、從哪家供應(yīng)商買仍然充滿變數(shù)。 

嵌入式軟件工程師總是幾乎完全從零開始開發(fā)應(yīng)用程序。為什么會那樣?如果從我們的朋友——硬件工程師那里取點兒經(jīng)的話可能大有裨益。他們開始做一項新設(shè)計時,總是選擇現(xiàn)成的集成電路,只有到最后不得已時才自己設(shè)計邏輯電路。因此,對我們來說,重用他人的工作成果以達到目標的第一步就是要選擇一種實時操作系統(tǒng)(RTOS)。然而當你選擇RTOS時很有一些需要考慮的問題,一個清晰的思路無疑有助于成功地作出決定。 


實時操作系統(tǒng)對我來說真的必要嗎? 
Do I really need a real-time operating system? 

在一頭扎進如何選擇一個實時操作系統(tǒng)的討論之前,大多數(shù)人應(yīng)該問問自己:為什么需要實時操作系統(tǒng)?是否所有的嵌入式軟件系統(tǒng)在實時操作系統(tǒng)的支持下工作得最好?當然不是。有很多簡單的產(chǎn)品,不夠大也不夠復(fù)雜,根本負擔不起額外的開銷。 

有關(guān)是否使用RTOS的爭論非常類似于是否使用高級語言的爭論。正象高級語言一樣,RTOS使你可以更快地開發(fā)產(chǎn)品。它可能要求一些額外的開銷,但是隨著技術(shù)的進步,這種開銷在變小。 

正如有的應(yīng)用仍推崇匯編語言,也存在這樣一些應(yīng)用,它們很簡單,僅需求很少的一點操作系統(tǒng)服務(wù)。在這種情況下,更簡單的結(jié)構(gòu)——比如輪轉(zhuǎn)調(diào)度之類以狀態(tài)機為基礎(chǔ)的函數(shù)——可能就足夠了。難道你能指望在你的面包機里安裝一個實時操作系統(tǒng)嗎?除此之外,你應(yīng)該考慮RTOS。 


自建還是購買? 
Build vs. buy 

在“嵌入式”世界里,就一個工作組該購買還是自建實時操作系統(tǒng)展開了生動的討論。不幸的是,我們非常缺乏有效的統(tǒng)計數(shù)據(jù)。我認為在大多數(shù)情況下,購買RTOS是較好的選擇。我這樣說的時候,請注意我與RTOS工業(yè)界的任何公司沒有任何私人或者職務(wù)關(guān)系。 

關(guān)于購買RTOS的爭論還有一個小小的軼聞。以前我曾在一個為醫(yī)療設(shè)備開發(fā)嵌入式軟件的項目組工作。我們使用的是CMX公司的CMX-RTX。在嵌入式開發(fā)者一系列可能的選擇中,這個RTOS的特征是很典型的。隨OS還提供了11,000行的源代碼。想想吧,用CMX公司賣得的兩千美元你能定義、設(shè)計、實現(xiàn)并測試完成如此的產(chǎn)品嗎?我看不大可能。 

然而,堅持從零開始自建RTOS的人仍與購買現(xiàn)成專用RTOS的擁護者爭論不休。在性能絕對至關(guān)重要的場合,寫自己的實時操作系統(tǒng)可能允許你花費巨大代價換取有限的百分之幾的速度提升。 

另外,特定的工業(yè)(比如醫(yī)療設(shè)備、安全系統(tǒng)等)對軟件有特定的規(guī)則或標準要求。在某些情況下,現(xiàn)成的操作系統(tǒng)滿足不了這些要求。這時也只能選擇自建。 

最后,在嵌入式系統(tǒng)中,為了使用專用代碼而安裝的基礎(chǔ)系統(tǒng)相當大。把老代碼剝離出來移植到新的操作系統(tǒng)上難說是個明智的主意。而將產(chǎn)品移植到一種新的微處理器上是說得通的。如果該專用RTOS尚未被移植到新的微處理器上,這可能是考慮使用現(xiàn)成RTOS的一個好時機。 


工具的相互關(guān)系 
Tool interrelationships 

一個工程師選擇實時操作系統(tǒng)時如果不考慮其余與之相關(guān)的工具是不行的。微處理器、在線仿真器(ICE)、編譯器、匯編器、連接器、調(diào)試器以及模擬器——都這樣或那樣地影響著操作系統(tǒng)。 

有些在線仿真器供應(yīng)商提供其ICE與實時操作系統(tǒng)接口的軟件。檢查一下你的ICE是否能與你的RTOS協(xié)同工作,這在調(diào)試那些最隱蔽的小錯誤(bugs)時是很有用的。然而,重要的是要了解在線仿真器的操作對性能的影響。有時當ICE執(zhí)行操作時增加了額外的開銷,比如中斷某行源代碼在某個任務(wù)中的執(zhí)行。 

對給定微處理器家族上的某種操作系統(tǒng)來說,很可能OS供應(yīng)商只支持所有可用編譯工具(包括編譯器、匯編器和連接器)的一個子集。應(yīng)該確認供應(yīng)商支持你所用的。你應(yīng)該避免我們項目組當初選擇一種現(xiàn)成的實時操作系統(tǒng)所碰到的災(zāi)難。OS供應(yīng)商將我們選擇的RTOS以源代碼的形式提供給了我們,但是我們沒有考慮到的一個問題是這種RTOS與我們使用的編譯器不能合作。經(jīng)過六周的艱苦努力,負責修改RTOS源代碼的工程師終于完成了任務(wù)。 

選擇準則 
Selection criteria 

除了開發(fā)工具箱中其他工具的影響之外,如果你能很好地組織在調(diào)查研究RTOS期間所搜集的信息,作出選擇就會容易一些。首先列一份可供選擇的RTOS清單。到選擇RTOS時,你可能已經(jīng)選定了微處理器。據(jù)此你可以立即劃掉不支持你的MCU的RTOS從而得到較短的清單。如果你選擇了無所不在的68000或者x86系列,則需要更多的準則來幫助你作出選擇。 

有了一個短的清單之后,艱難的工作才真正開始。首先,要決定對你的應(yīng)用來說哪條準則是真正重要的。本文討論了選擇時要考慮的幾條重要特征,然而每一個應(yīng)用開發(fā)都有差異,需要認真考察到底什么是最重要的。應(yīng)該根據(jù)各項選擇準則列一個表,針對每個項目評價每種RTOS。甚至在填完了整張表格之后,模模糊糊的仍然不知該選哪一個,這種事情確實很難干脆果斷。參與選擇過程的每個人應(yīng)該對這個表格展開討論。討論之后拿出決定或者拿出作決定的計劃。 

在選擇RTOS的過程中有兩個基本的因素。第一組基本準則圍繞著一個特定產(chǎn)品的細節(jié)。你現(xiàn)在正在使用的工具哪些要與RTOS一起繼續(xù)使用?把所有的決定建立在如此簡單、短視的判斷上不可能最好。開闊視野,將眼光擴展到公司的整個產(chǎn)品線。這樣的話,你需要考察RTOS與整個產(chǎn)品線的兼容性。該RTOS在將來的幾年中仍會有所發(fā)展嗎?該RTOS與你期望選用的其他微處理器兼容嗎? 

第二,你可以創(chuàng)建一個實現(xiàn)極少特性的框架,但這樣做有點違背購買現(xiàn)成RTOS的目的。當深入RTOS的結(jié)構(gòu)之后,一系列問題始終困擾著開發(fā)者。這些問題包括:該RTOS可以動態(tài)地創(chuàng)建和刪除任務(wù)嗎?一個任務(wù)能同時等待多個事件嗎?任務(wù)有多少優(yōu)先級?很難預(yù)料在整個應(yīng)用的設(shè)計過程中需要RTOS的哪些服務(wù)。一般來說,很多特性可以實現(xiàn)你想要的大多數(shù)功能。如果有困難,要積極地資訊供應(yīng)商的技術(shù)支持和應(yīng)用工程師。如果你有使用其他RTOS的經(jīng)驗,現(xiàn)在要用一種新的OS,試著在新的RTOS中找找那些你熟悉的特性。因為不同的供應(yīng)商往往用不同的方式解決同一個問題。最好選擇其中與你過去熟悉的方式接近的那種。 

內(nèi)核要求的最小存儲器大小 
Footprint 

實時操作系統(tǒng)可以裝入小得令人驚訝的內(nèi)存中。盡管如此,當供應(yīng)商給出一個內(nèi)核要求的最小存儲器大小時,很重要的一點是要了解這個內(nèi)核中包括了什么。最小的內(nèi)核經(jīng)常是僅僅支持很少的特性,而典型的配置可能產(chǎn)生大得多的內(nèi)核。如果你的設(shè)計非常在乎RAM或ROM的大小,一定要澄清這個問題。有時供應(yīng)商可以提供一份詳細的列表,說明了創(chuàng)建包含不同服務(wù)的內(nèi)核分別需要多大的RAM和ROM。 


性能 
Performance 

對所有的項目來說,性能無不是個大問題。但是要了解RTOS對系統(tǒng)的影響卻不那么容易。當你比較供應(yīng)商提供的benchmark時你要明白他們是要測試什么。供應(yīng)商使用的是什么評估板?微處理器的時鐘頻率是多少?使用的什么存儲系統(tǒng)?存儲器訪問使用了幾個等待周期?只有弄清楚了這些你才能作出公平的對比。 

有幾種性能建模工具可以幫助你建立系統(tǒng)性能模型,供應(yīng)商是Tri-Pacific Software和CARDtools Systems之類。隨著設(shè)計的深入還要繼續(xù)細化性能模型。 


軟件組件和設(shè)備驅(qū)動程序 
Software components and device drivers 

在1998年11月的嵌入式系統(tǒng)會議上,Wind River Systems的合伙創(chuàng)始人之一Jerry Fiddler描繪了將來十年嵌入式系統(tǒng)的圖景——網(wǎng)絡(luò)化的、無所不在的普通設(shè)備。到處都會有計算機,但計算機的外表不再是一成不變的。為了使美景成真,嵌入式系統(tǒng)應(yīng)該通過各種標準加大開發(fā)需求的互操作性,開發(fā)者可能要依賴于他人開發(fā)的組件。假如你的應(yīng)用需要通信協(xié)議、服務(wù)、庫或者其他組件(如TCP/IP、HTTP、ftp、telnet、SNMP、CORBA和圖形),現(xiàn)看看哪里可以獲得它們。類似的,在設(shè)計中用到現(xiàn)成的板卡或IC時,要確定是否可以得到設(shè)備驅(qū)動程序。 

有些操作系統(tǒng)供應(yīng)商提供這些特性或驅(qū)動程序的方式不同,可能作為操作系統(tǒng)的一部分,也可能作為可選配件。另外,這些服務(wù)也可以從第三方供應(yīng)商獲得。與供應(yīng)商交涉時,要弄清楚你的RTOS里集成了哪些組件。 


調(diào)試工具 
Debugging tools 

RTOS供應(yīng)商可能有有助于找到錯誤的調(diào)試工具,這些錯誤(比如死鎖、忘了放信號燈等等)用其他源碼級調(diào)試器更難于發(fā)現(xiàn)。許多工具允許開發(fā)者在任務(wù)之間相互傳遞信號燈時、在任務(wù)切換時和發(fā)生中斷時進行Watch(以增加CPU開銷為代價)。 

少數(shù)供應(yīng)商提供給用戶的是集成開發(fā)環(huán)境。對主機-目標式調(diào)試器來說,應(yīng)用在RAM中運行是它工作得很好。如果你希望從ROM運行代碼,看看這種調(diào)試服務(wù)還有多大用處。 

標準兼容性 
Standards compatibility 

你正在考察的RTOS支持一般的標準嗎?例如,RTOS服務(wù)有一個POSIX標準。即使大多數(shù)開發(fā)者不需要POSIX,這也可以作為一個考慮因素。如果你在開發(fā)安全性敏感的系統(tǒng),應(yīng)該考慮一下該行業(yè)所要求的安全標準。有些RTOS供應(yīng)商已經(jīng)開始認證他們的產(chǎn)品。 


技術(shù)支持 
Technical support 

購買了RTOS之后,你還需要技術(shù)支持。RTOS供應(yīng)商提供多種支持渠道,其中都有電話和/或電子支持。但是要確認在你購買之后這種支持能持續(xù)多久。最好能感受一下供應(yīng)商技術(shù)支持的質(zhì)量如何。如果你對RTOS完全是新手,供應(yīng)商的培訓就很有用了。這種培訓一般是上門服務(wù)。如果供應(yīng)商能提供高質(zhì)量的附帶幾個好實例的文檔,那么對培訓的要求就可以降低一些了。 


源代碼還是目標代碼? 
Source vs. object code 

有些供應(yīng)商當你購買了一個開發(fā)許可時會提供給你全部源代碼。而其他的僅提供目標代碼。第一次使用沒有源代碼的RTOS可能會令人不安。其實這兩種方式都能開發(fā)出優(yōu)秀的產(chǎn)品。如果你對RTOS的源代碼大動手腳而不僅僅是作簡單的修改,趕快住手,拿起電話叫技術(shù)支持吧。若對RTOS作重大的改動,豈不是違背了購買他人現(xiàn)成實時操作系統(tǒng)的初衷? 

對那些沒有源代碼的來說,也不必擔心無法配置內(nèi)核。供應(yīng)商會在頭文件中給出必要的常量使開發(fā)者可以根據(jù)需要微調(diào)內(nèi)核。 


許可 
Licensing 

購買某些高級的RTOS屬于重大的商業(yè)事務(wù),有許多費用要考慮。典型情況是開發(fā)工具的費用由實時操作系統(tǒng)供應(yīng)商來承擔,并為RTOS發(fā)放許可證以開發(fā)產(chǎn)品。有的供應(yīng)商一次性地收取一大筆費用,而有的供應(yīng)商的收費遍及每用戶、每平臺、每產(chǎn)品、每位置。我干過的項目經(jīng)歷了這兩個極端。不過說不上這兩種方式哪種更好,只要你明白為什么掏錢就行了。 


聲譽 
Reputation 

還有一點是要了解該RTOS供應(yīng)商的聲譽。這也許有些困難,這里有一些建議也許有所幫助。 

首先,打電話了解他們。然而供應(yīng)商肯定怕給你壞印象,因此與真正的用戶交流才能得到對該操作系統(tǒng)質(zhì)量的較好的認識。下面是一個你應(yīng)該問的問題清單:
技術(shù)支持如何? 
問題得到解答要多長時間? 
使操作系統(tǒng)運轉(zhuǎn)起來要多長時間? 
你覺得對OS的投資有價值嗎? 

其次,對該公司作一番調(diào)查。下面是一個有助于你評價該公司的問題清單: 
穩(wěn)定的商務(wù)活動開始多久了? 
公司有多少職員? 
供應(yīng)商的網(wǎng)站上有有價值的信息嗎? 
這種RTOS在哪個行業(yè)表現(xiàn)最好? 
該操作系統(tǒng)為哪些特殊的應(yīng)用領(lǐng)域做過優(yōu)化(如安全系統(tǒng)、VME卡、嵌入式PC等)? 
公司的質(zhì)量系統(tǒng)狀況如何? 
公司通過了ISO 9001認證嗎?



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉