選擇嵌入式系統OS:選擇指南

作者 : Jacob Beningo

為應用選擇正確的作業系統,歸結為對團隊和使用者最需要的東西做出權衡。本文探討何時何地使用裸機(bare metal)、RTOS和Linux才有意義...

在上一篇文章「選擇嵌入式系統OS:作業系統特性」中,我們討論了團隊在選擇作業系統(OS)時要考慮的系統特性。我們看到產品的生命週期成本、物理特性、即時性能、庫整合和安全性等特性發揮了作用(僅舉幾例)。這篇文章將準確探討何時何地使用裸機(bare metal)、即時作業系統(RTOS)和Linux才有意義。請記住,這些內容是一般性指導方針,會因不同產業而異,甚至因各產品而異。

何時使用裸機(無作業系統)

當我們查看有關連接、物聯網和機器學習等前沿主題的行銷頭條時,可能會認為每個嵌入式系統都需要一個作業系統。遺憾的是,印象與事實相去甚遠!雖然許多尖端技術可能受益於作業系統,但我們可以在沒有RTOS或Linux的情況下實現相當多的應用。如果我們查看AspenCore所做的2019年嵌入式市場調查,就會發現約50%的專案是裸機!

在幾種情況下,不使用作業系統會很有意義。首先,如果我們使用的是8位元或16位元MCU,我們幾乎總是希望使用裸機或使用羽量級協作調度程式。許多作業系統開發人員不會將自己的軟體移植到更小的架構上,因為這些系統已經受到處理器和資源的限制。添加作業系統通常會消耗太多時脈週期而使系統效率低下。

接下來,裸機解決方案在MCU接腳數較少且可用快閃記憶體和SRAM有限的應用中非常有意義。在資源受限的環境中工作時,每個位元組和每個時脈週期都會對產品是否可用產生影響。如果MCU資源有限,最有效的解決方案可能是沒有作業系統。

最後,如果我們正在開發一個沒有任何連接或高性能處理需求的「簡單」控制應用,那麼裸機就可能對我們的應用有意義。當今在嵌入式系統中使用作業系統的重要驅動因素之一,是需要支援基礎設施程式碼。例如,連接網際網路的感測器必須連接到雲端、管理安全分區、執行安全更新、運行DSP演算法等。作業系統可以協助我們管理所有這些活動的時間和資源,但如果不涉及所有這些東西的話,就可以不需要使用作業系統。

何時使用RTOS

當MCU的內置資源達到40MHz的最低時脈速度、至少64KB的快閃記憶體和8KB的RAM時,就可以開始使用作業系統了。如果任何資源不足的話,則將花費更多時間來滿足RTOS的需求,而不是應用的需求。例如,當使用RTOS時,每個任務都有自己的堆疊。堆疊至少需要512~1024位元組的SRAM。如果某個設計需要六個任務,那麼很快就會耗盡記憶體。我們可能需要更多的快閃記憶體和RAM來建構合適的系統。

當我決定是使用RTOS還是使用裸機時,我會問自己幾個問題:

  • 添加RTOS會簡化軟體架構嗎?
  • 添加RTOS會提高軟體的可維護性嗎?
  • 應用的即時性能會得到改善嗎?

RTOS是一種應該為應用和整個軟體發展生命週期提供價值的工具。如果RTOS是一個障礙,那麼就不應該僅僅因為自己想使用它而使用它。

在某些特定的應用中,使用RTOS會立即變得有意義。例如,如果我正在開發某個物聯網產品,幾乎總是使用RTOS。這是因為RTOS提供了工具和機制來輕鬆管理低層級資源並將應用分解為半獨立的程式。當某個應用很複雜時,將它分解為任務就很有意義。例如,物聯網產品通常需要幾個任務來管理連接,更不用說終端應用了。另一個例子是有顯示器的裝置,儘管有時這些應用最適合使用多核心處理器。

何時使用Linux

近年來,在嵌入式系統中使用Linux,已成為一種流行的選擇。Linux受歡迎的部份原因,在於它提供了一個功能齊全的作業系統,並附帶了所有華麗的點綴。Linux帶有大量的庫和特性。開發人員可以利用多工處理甚至核心的即時增補程式。此外,運行Linux的硬體成本在過去五年中大幅下降,這使其成為了特定應用的解決方案。

在查看一個項目是否可以使用嵌入式Linux時,可以考慮以下幾點:首先,產品必須能夠支援硬體的財務成本。最近有一個客戶,我第三次協助他們重新設計了產品,因為前兩位設計者無法滿足製造價格目標。該產品的目標受眾願意為該產品支付大約40美元。最初的設計者使用Linux建構了一個系統,材料成本超過100美元!使用MCU和用於作業系統的RTOS重新設計這個產品,我能夠將BOM降至11美元左右。這就是擁有可持續發展的公司和不存在可持續發展的公司之間的區別。

使用Linux時要考慮的第二點是產品的體積。如果我們有一個小批量的產品,使用者可能已經支付了更大的金額。當我們查看非經常性工程成本和產品成本之間的權衡時,可能會發現使用Linux可以顯著降低一次性工程(NRE)費用和上市時間。如果客戶對價格不敏感,Linux可能更具有商業意義。

最後,不要忘記Linux為我們提供了強大的抽象、服務和庫,可以簡化工程。如果我們的產品非常複雜,可以利用Linux來簡化我們與硬體的對話模式。可以使用更現代的程式設計語言,如Python。如果需要,還可以自訂核心。Linux非常適用於許多嵌入式應用。如果我們需要靈活性以及利用現有庫的能力,Linux可能是應用的絕佳選擇。

總結

選擇用於嵌入式產品的作業系統,可能會影響專案的成敗。過於羽量級的應用會導致開發團隊花費更多的精力和時間來使其正常工作。另一方面,應用過重則會導致更高的物料清單成本。正如我們所見,為應用選擇正確的作業系統,歸結為對團隊和使用者最需要的東西做出權衡。

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

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

發表評論