幾乎所有現(xiàn)代嵌入式系統(tǒng)都是使用某種操作系統(tǒng) (OS) 構(gòu)建的。這意味著該操作系統(tǒng)的選擇往往發(fā)生在設(shè)計過程的早期。許多開發(fā)人員發(fā)現(xiàn)這個選擇過程具有挑戰(zhàn)性。您如何為您的特定應(yīng)用選擇操作系統(tǒng)?
你需要一個操作系統(tǒng)嗎?
對于許多嵌入式應(yīng)用程序,顯然需要一個操作系統(tǒng)。如果應(yīng)用程序很復(fù)雜并且在高端處理器上運行,那么幾乎可以肯定操作系統(tǒng)是有益的。另一方面,在低端芯片上運行的簡單軟件根本不需要操作系統(tǒng)。還有另外兩種可能性:低端 CPU 上的復(fù)雜軟件和復(fù)雜處理器上的簡單軟件。在這兩種情況下,操作系統(tǒng)似乎都不會提供太多優(yōu)勢,而且實際上可能會妨礙效率。但是,圍繞多任務(wù)模型構(gòu)建代碼是使其可擴展的好方法,從而在將來某個時候遷移到更強大的設(shè)備和/或需要為應(yīng)用程序增加更多復(fù)雜性時最大限度地減少工作量。
你在哪里可以獲得操作系統(tǒng)?
大致而言,有三種方法可以獲得嵌入式操作系統(tǒng):
自己寫一個
利用“免費”或開源產(chǎn)品
從商業(yè)供應(yīng)商處購買/許可產(chǎn)品
選項(1)很少是一個好的選擇,因為您的特定需求不太可能如此專業(yè)以至于現(xiàn)有產(chǎn)品無法滿足它們。“重新發(fā)明輪子”從來不是一個明智的決定。唯一可能的例外可能是將編寫操作系統(tǒng)作為一項學(xué)術(shù)練習(xí),以充分了解此類產(chǎn)品的工作原理。
選擇標準
操作系統(tǒng)的選擇取決于您可能會問自己或他人的一系列問題。很容易想象這完全是關(guān)于操作系統(tǒng)的技術(shù)問題,事實上,這些問題主導(dǎo)了這個過程。但是,需要考慮商業(yè)因素——比如成本——并且不能忽視個人經(jīng)驗等因素。
技術(shù)因素
操作系統(tǒng)的技術(shù)方面在選擇過程中占主導(dǎo)地位。在考慮其他參數(shù)之前,這些問題需要完全清楚。
您的應(yīng)用程序是實時的嗎?
實時應(yīng)用程序是響應(yīng)時間至關(guān)重要的應(yīng)用程序。它可能不快,但需要在可預(yù)測的(確定的)時間內(nèi)響應(yīng)外部事件;它必須足夠快(或慢)。操作系統(tǒng)選擇的含義是實時操作系統(tǒng) (RTOS) 最有可能是正確的選擇,因為它是專門為滿足應(yīng)用程序的要求而設(shè)計的。Linux 本質(zhì)上不是實時的,但實時擴展可能使其成為一個可行的選擇。
內(nèi)存大小有限制嗎?
過去,嵌入式系統(tǒng)的內(nèi)存容量通常非常小——可能只有幾 K?,F(xiàn)在,有一個更加慷慨的規(guī)定,盡管帶有微控制器的片上內(nèi)存可能仍然非常有限。在設(shè)計簽署后向系統(tǒng)添加更多內(nèi)存并非易事。更重量級的操作系統(tǒng),如 Linux,非常需要內(nèi)存,因此空間限制是一個真正的挑戰(zhàn)。大多數(shù) RTOS 產(chǎn)品更輕量級并且可能具有可擴展性,這意味著內(nèi)存僅用于實際需要的功能。
CPU 功率有限制嗎?
CPU 的功率是衡量它在給定時間內(nèi)可以完成多少工作(可以執(zhí)行多少條指令)的指標。大多數(shù)嵌入式設(shè)計都會有一個有足夠功率的 CPU,但可能沒有多余的。任何一種操作系統(tǒng)都是開銷;它的執(zhí)行使用 CPU 能力,但不直接影響應(yīng)用程序功能。將此開銷保持在最低限度通常很重要。操作系統(tǒng)的效率差異很大,但 RTOS 產(chǎn)品傾向于最節(jié)儉地使用 CPU。
設(shè)備功耗是個問題嗎?
嵌入式系統(tǒng)的功耗成為優(yōu)先事項越來越普遍。這通常用于保持電池壽命,但也可能出于環(huán)境考慮。從歷史上看,功耗被認為是純粹的硬件問題?,F(xiàn)在人們認識到,軟件可以極大地促進能源使用的優(yōu)化。
簡單來說,代碼越小,所需的內(nèi)存就越少,從而節(jié)省電力。同樣,代碼的效率對必要的 CPU 能力有影響。RTOS 可能是緊湊和高效的。
許多系統(tǒng)包括電源管理功能。這可能只是低功耗模式(如睡眠和掛起)的可用性,但更高級的電源管理正在變得普遍。這可能包括外圍設(shè)備的選擇性斷電以及 CPU 電壓和時鐘頻率的控制。Linux 和許多 RTOS 產(chǎn)品都支持電源管理。
您的系統(tǒng)是否有晦澀或自定義的外圍設(shè)備?
嵌入式應(yīng)用程序中一些最具挑戰(zhàn)性的代碼是外圍設(shè)備的接口。使用操作系統(tǒng)時,這通常封裝在驅(qū)動程序中。大多數(shù) RTOS 都提供了適用于許多標準設(shè)備的驅(qū)動程序。Linux 的功能更多,包括對許多相當晦澀的硬件的支持。
如果您有自定義外圍設(shè)備,顯然將無法獲得支持,因此需要自定義驅(qū)動程序。RTOS 供應(yīng)商通常會在這方面提供良好的支持。Linux 驅(qū)動程序開發(fā)專業(yè)知識相當廣泛。
你有內(nèi)存管理單元(MMU)嗎?
大多數(shù)高端嵌入式 CPU 都有一個 MMU,至少作為一個選項。這允許重新映射和/或保護存儲區(qū)域。MMU 對于部署 Linux 是必不可少的;如果沒有可用的 MMU,則不能選擇 Linux。RTOS 通常不需要MMU,但如果可用,可以通過促進“輕量級進程模型”(也稱為“線程保護模式”)來使用 MMU。
應(yīng)用程序安全是一個問題嗎?
一些嵌入式應(yīng)用程序具有安全意識——必須保護代碼免受外部干擾。這可以看作是保護每個任務(wù)免受其他任務(wù)的影響。Linux 等采用的進程模型使用 MMU,是提高安全性的一種非常好的方法。如果 RTOS 可以使用 MMU,如上所述,這提供了幾乎相同的安全性和更少的開銷。
您的應(yīng)用程序是否需要安全認證?
在許多行業(yè)——如航空航天、醫(yī)療、汽車和工業(yè)——都有安全認證計劃。獲得認證的過程既復(fù)雜又昂貴。通常需要整個應(yīng)用程序的所有源代碼——包括操作系統(tǒng)。因此,擁有操作系統(tǒng)源代碼是必不可少的;源代碼并不總是可用的。在某種程度上,要認證的代碼大小會影響過程的成本,因此操作系統(tǒng)越小越好。
通常不可能只對操作系統(tǒng)進行認證——對整個應(yīng)用程序進行評估。但是,一些 RTOS 供應(yīng)商可以提供“預(yù)認證包”,其中提供了有關(guān)操作系統(tǒng)所需的大部分初始文檔。當然,選擇具有在類似應(yīng)用領(lǐng)域使用和認證的“跟蹤記錄”的操作系統(tǒng)也是明智之舉。
商業(yè)因素
盡管工程師喜歡嵌入式軟件開發(fā)的技術(shù)挑戰(zhàn),但此類項目也受到商業(yè)考慮。一切都取決于金錢。實施一個操作系統(tǒng)需要花錢,但是它是獲得的:
內(nèi)部開發(fā)顯然要花錢
商業(yè)產(chǎn)品有價格
開源不是“免費的”;有實施成本和持續(xù)維護
商業(yè)操作系統(tǒng)產(chǎn)品提供各種商業(yè)模式。例如,每個發(fā)貨單位的起始付款和持續(xù)特許權(quán)使用費可能較低,或者預(yù)付費用可能較高且沒有持續(xù)特許權(quán)使用費??山邮艿男吞柸Q于售價和預(yù)計的出貨量。
其他注意事項
操作系統(tǒng)選擇過程中可能容易被忽視的一個方面是借鑒過去的經(jīng)驗。您和您的團隊之前可能使用過一個或多個操作系統(tǒng),這可能會產(chǎn)生重大影響。
例如,一個操作系統(tǒng)的 API 的詳細知識需要一些時間來獲得,因此能夠重用這些知識是一個很大的好處。如果 API 是專有的,這可能是指向特定產(chǎn)品的強指針。如果 API 是標準,如 POSIX,您仍然可以選擇。當然,使用混亂且不靈活的 API 的糟糕體驗可能會產(chǎn)生相反的效果!
與特定供應(yīng)商合作的經(jīng)驗是另一個因素。他們的技術(shù)支持好嗎?文檔是否符合要求?源代碼是否可用并得到很好的評論?
多核系統(tǒng)和操作系統(tǒng)選擇
使用多核設(shè)計實現(xiàn)嵌入式系統(tǒng)正變得越來越普遍。從軟件的角度來看,有兩種多核系統(tǒng):
對稱多處理 (SMP),其中所有內(nèi)核都是相同的,并且單個操作系統(tǒng)在所有內(nèi)核上運行。
非對稱多處理 (AMP),其中內(nèi)核不一定相同,并且每個內(nèi)核都運行自己的操作系統(tǒng)。
對于 SMP 系統(tǒng),操作系統(tǒng)的選擇是按照本文迄今為止描述的方式進行的,另外一個因素是操作系統(tǒng)必須支持 SMP 功能。Linux 以 SMP 形式提供,許多 RTOS 產(chǎn)品也提供它作為選項。
對于 AMP 系統(tǒng),需要根據(jù)其特定要求使用上述方法為每個內(nèi)核選擇操作系統(tǒng)。
結(jié)論
總的來說,可以看出對于選擇嵌入式操作系統(tǒng)的問題沒有真正簡單的答案。有許多相互關(guān)聯(lián)的因素。不僅要關(guān)注技術(shù)方面的考慮,還要考慮商業(yè)問題和過去的經(jīng)驗,這一點很重要。
對于臺式計算機,有大約四種操作系統(tǒng)可供選擇。在嵌入式世界中,至少有幾十個。這是為什么?簡而言之,臺式計算機都大同小異,但每個嵌入式系統(tǒng)都不同。這種差異既是技術(shù)上的,也是商業(yè)上的。因此需要詳細的選擇過程。
審核編輯:郭婷
-
嵌入式
+關(guān)注
關(guān)注
5082文章
19126瀏覽量
305299 -
Linux
+關(guān)注
關(guān)注
87文章
11304瀏覽量
209537 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6827瀏覽量
123335
發(fā)布評論請先 登錄
相關(guān)推薦
評論