新聞中心

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è)計邏輯電路。因此,對我們來說,重用他人的工作成果以達到目標(biāo)的第一步就是要選擇一種實時操作系統(tǒng)(RTOS)。然而當(dāng)你選擇RTOS時很有一些需要考慮的問題,一個清晰的思路無疑有助于成功地作出決定。 


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

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

有關(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ù)。我認(rèn)為在大多數(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ī)則或標(biāo)準(zhǔn)要求。在某些情況下,現(xiàn)成的操作系統(tǒng)滿足不了這些要求。這時也只能選擇自建。 

最后,在嵌入式系統(tǒng)中,為了使用專用代碼而安裝的基礎(chǔ)系統(tǒng)相當(dā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)時是很有用的。然而,重要的是要了解在線仿真器的操作對性能的影響。有時當(dāng)ICE執(zhí)行操作時增加了額外的開銷,比如中斷某行源代碼在某個任務(wù)中的執(zhí)行。 

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

選擇準(zhǔn)則 
Selection criteria 

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

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

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

第二,你可以創(chuàng)建一個實現(xiàn)極少特性的框架,但這樣做有點違背購買現(xiàn)成RTOS的目的。當(dāng)深入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)存中。盡管如此,當(dāng)供應(yīng)商給出一個內(nèi)核要求的最小存儲器大小時,很重要的一點是要了解這個內(nèi)核中包括了什么。最小的內(nèi)核經(jīng)常是僅僅支持很少的特性,而典型的配置可能產(chǎn)生大得多的內(nèi)核。如果你的設(shè)計非常在乎RAM或ROM的大小,一定要澄清這個問題。有時供應(yīng)商可以提供一份詳細(xì)的列表,說明了創(chuàng)建包含不同服務(wù)的內(nèi)核分別需要多大的RAM和ROM。 


性能 
Performance 

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

有幾種性能建模工具可以幫助你建立系統(tǒng)性能模型,供應(yīng)商是Tri-Pacific Software和CARDtools Systems之類。隨著設(shè)計的深入還要繼續(xù)細(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)該通過各種標(biāo)準(zhǔn)加大開發(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)境。對主機-目標(biāo)式調(diào)試器來說,應(yīng)用在RAM中運行是它工作得很好。如果你希望從ROM運行代碼,看看這種調(diào)試服務(wù)還有多大用處。 

標(biāo)準(zhǔn)兼容性 
Standards compatibility 

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


技術(shù)支持 
Technical support 

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


源代碼還是目標(biāo)代碼? 
Source vs. object code 

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

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


許可 
Licensing 

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


聲譽 
Reputation 

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

首先,打電話了解他們。然而供應(yīng)商肯定怕給你壞印象,因此與真正的用戶交流才能得到對該操作系統(tǒng)質(zhì)量的較好的認(rèn)識。下面是一個你應(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認(rèn)證嗎?



評論


相關(guān)推薦

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

關(guān)閉