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