選擇嵌入式系統OS:作業系統特性

作者 : Jacob Beningo

如何在裸機(bare metal)、RTOS或Linux之間進行選擇,並不一定都會十分明確。每一種方案都有其優點和缺點。本文探討在選擇作業系統時應考慮的系統特性。

嵌入式系統開發人員如今可以使用範圍廣泛的作業系統(operating system;OS)。當然,最直接的作業系統就是沒有作業系統!然而,當今的許多系統都是複雜的連接系統,因此可能需要作業系統。當需要作業系統時,開發人員通常尋求使用即時作業系統(RTOS)或Linux來協助管理複雜性。

遺憾的是,如何在裸機(bare metal)、RTOS或Linux之間進行選擇,並不一定都會十分明確。每一種方案都有其優點和缺點。本文探討在選擇作業系統時應考慮的系統特性。

產品的生命週期成本

在為嵌入式系統選擇作業系統時,首先要瞭解產品的生命週期成本和要求。需要在產品的物料清單(BOM)成本和軟體維護成本之間進行權衡。例如,使用Linux的嵌入式系統,更容易利用開源軟體並找到可以編寫系統軟體的開發人員。但是,基於Linux的系統比基於微控制器(MCU)的系統具有更複雜的硬體要求,而且可能具有更高的BOM成本。基於MCU的系統成本可能較低,但能夠成功設計和維護這些系統的開發人員也較少。

設計人員需要權衡硬體和軟體成本,從而確定自己的產品是否適合使用可以執行Linux的硬體,或者是否更適合使用較便宜且CPU密集度更低的解決方案。

要考慮的物理特徵

說到硬體功能和要求,在選擇嵌入式作業系統時,檢查硬體選擇的物理特性也是必不可少的。應該考慮的微處理器(MPU)或MCU的物理因素包括:

  • 週邊功能集
  • CPU時脈速度
  • 可用的快閃記憶體(flash)
  • 可用的RAM

硬體對系統施加的物理限制,可能會立即限制所能使用的解決方案。例如,執行嵌入式Linux,通常需要包含記憶體管理單元(MMU)的處理器。遺憾的是,MCU中沒有MMU。因此,為了執行Linux,設計人員至少需要使用Cortex-A範圍內的應用處理器,而不是Cortex-M系列中的MCU (但情況變化很快,有人可能會取得具有MMU和合理時脈速率的MCU)。

為了執行嵌入式Linux,硬體還必須具有至少8GB的儲存空間、16GB的RAM和8~16MB的內部快閃記憶體儲存空間。像Linux這樣的核心也可能需要至少500MHz的處理器。這些比執行RTOS所需的更高得多;RTOS至少需要4kB的RAM、64kB的快閃記憶體和以24MHz執行的CPU。

即時性能

從經驗中得知,探索裸機、RTOS和Linux系統之間的即時性能特徵是一個燙手山芋。專注於基於MCU即時系統的工程師經常會告訴我們,使用者無法從Linux系統中獲得實際的即時性能。Linux工程師會反駁這並不可能存在——Linux有即時增補程式可以提供實際的即時行為。自此,爭論通常會變得激烈。

無論選哪一邊站,我們都必須查看即時要求並在選擇作業系統時套用。評估系統需要的確定性,並根據這些需求評估自己的作業系統。例如我已經看到幾種執行良好的Linux即時版本,其他則不佳。因此,沒有普遍正確的答案,只有適合自己應用的答案。

軟體庫整合

使用裸機、RTOS或Linux之間的一個顯著差異在於開發人員可用軟體庫的可用性和整合程度。在裸機空間中只能靠自己,除非從頭開始編寫軟體,不然就自己整合協力廠商的工具庫。另一方面,RTOS會附帶一套已經與RTOS整合的工具庫。例如,可能會發現循環緩衝、記憶體管理工具和檔案系統等。更多的庫可用並實現了整合,但可能仍然需要自己做一些工作。

當我們查看Linux時,感覺就像開發人員擁有幾乎無限的可用庫,並且已經與系統整合。嵌入式Linux最具吸引力和增值的特性,是軟體庫的可用性和整合。開發人員可以使用一個整體的作業系統,儘管很強大,但也有潛在的危險。

不要忘記安全性

如今,許多設計人員正在建構必須具有安全解決方案的連接系統。作業系統在安全解決方案中發揮著重要作用。例如,如果在Linux核心使用的標準庫中發現漏洞,則在修補之前每個Linux裝置都有該漏洞。裸機或基於RTOS的系統則很可能不會有同樣的漏洞。特定的作業系統比其他作業系統更容易成為駭客的目標,因為他們可以使用工具集來破解這些設備。例如,我已經將使用RTOS的嵌入式系統在沒有施加保護的情況下直接放到網際網路上,它們已使用了數週卻沒有受到損害。然而,我曾經把一個基於Linux的系統放到網際網路上,它在48小時內就受到駭客入侵而成為中國僵屍網路的一部份。在Linux系統防禦中,我相信仍然設置了預設密碼,但這表示如果我們不花時間正確配置作業系統,則破解它也不需要太多時間。

總結

開發人員在選擇作業系統時應考慮許多特性。第一個特性更多地與成本和建構產品的業務方面有關。然而,更重要的特性,如可用庫、安全性和可維護性等,也起著至關重要的作用。

(參考原文:How to select your embedded systems operating system: OS characteristics,by Jacob Beningo)

加入LINE@,最新消息一手掌握!

發表評論