作者:Jacob Beningo
在嵌入式系統(tǒng)行業(yè)的開發(fā)人員和經(jīng)理中流傳著一個謠言,即所有RTOS都是平等的。開發(fā)團隊僅僅選擇RTOS的情況并不少見,因為他們的微控制器供應商支持RTOS,而不是仔細檢查RTOS提供的功能和特性。檢查RTOS的特性、API、功能和陷阱經(jīng)常被忽視,甚至有時會損害應用程序的需求。您可能從未意識到的撓癢癢問題:“所有實時操作系統(tǒng)都是等效的嗎?
對等效的需求
基本上有三種方法可以了解如何構建嵌入式軟件。首先,開發(fā)人員在沒有RTOS或操作系統(tǒng)的情況下構建系統(tǒng)裸機。這些通常適用于沒有很多功能或不關心重用、可移植性或可擴展性的小型嵌入式系統(tǒng)。接下來,一些團隊有一個需要可伸縮性和可重用性的系統(tǒng),但可能沒有可移植性。這些團隊將選擇一個實時操作系統(tǒng)來使用,并圍繞實時操作系統(tǒng)構建整個應用程序,使實時操作系統(tǒng)成為系統(tǒng)的基礎。
構建系統(tǒng)的最后一種方法,也是驅動對等效的需求或愿望的方法,是復雜的現(xiàn)代系統(tǒng),并提供廣泛的功能。在許多情況下,應用程序需要擴展、可重用和可移植。在這些情況下,團隊不能只選擇一個RTOS并圍繞它構建他們的應用程序。相反,他們需要一個RTOS抽象層,將其應用程序代碼與RTOS分離,以選擇提供應用程序所需服務和功能的任何RTOS或操作系統(tǒng)。圖 1 顯示了具有 RTOS 抽象層的分層軟件架構示例。
圖 1 – 現(xiàn)代系統(tǒng)將嵌入式應用程序與 RTOS 分離,以提高重用、可移植性、可擴展性和測試。(圖片來源:嵌入式軟件設計[1])
RTOS抽象層消除了對任何RTOS或操作系統(tǒng)的依賴,從而實現(xiàn)了更好的單元測試和超目標運行應用程序仿真的能力!當然,出現(xiàn)的問題是,當團隊創(chuàng)建RTOS抽象層時,他們拼命地試圖建議所有RTOS都提供等效的功能,當通用化時,就變成了“所有RTOS都是等效的”。
實時操作系統(tǒng)等效現(xiàn)實
不幸的是,或者幸運的是,對于嵌入式軟件架構師和團隊來說,并非所有RTOS都是平等的。每個RTOS都可以提供一組標準功能,但即使這些功能也已實現(xiàn)并提供廣泛的差異。例如,從當前可用的一百多個 RTOS 中選擇三個并檢查其 API 集。您會發(fā)現(xiàn)相似但差異很大的 API。
如果您花一些時間運行性能測量,您會發(fā)現(xiàn)每個RTOS都提供不同級別的實時性能和確定性。編譯每個,您會發(fā)現(xiàn)不同的內(nèi)存要求。如果您深入研究實時操作系統(tǒng),您甚至可能會發(fā)現(xiàn)可能破壞實時操作系統(tǒng)的錯誤或條件!有些在管理安全性方面寫得很好,而另一些則完全忽略了安全性是一個考慮因素。
當我第一次接觸實時操作系統(tǒng)時,我討厭它們。我的雇主當時提供給我的RTOS有缺陷,不一致,我花在與RTOS斗爭上的時間比編寫生產(chǎn)代碼的時間還要多。事實證明,“RTOS”并不是我們所認為的實時操作系統(tǒng)!相反,它是一個編寫不佳的協(xié)作調(diào)度程序,包括一些RTOS功能,如信號量和隊列。
結論
歸根結底,團隊可能希望所有實時操作系統(tǒng)都是等效的,但事實仍然是每個實時操作系統(tǒng)都是獨一無二的。每個都提供具有不同內(nèi)存占用、響應時間、API、安全性和安全功能的操作系統(tǒng)。RTOS 抽象層可以幫助嵌入式應用與標準功能分離。不過,要充分利用 RTOS,可能需要直接調(diào)用 RTOS 或創(chuàng)建抽象擴展來管理應用程序依賴關系。因此,下次當您想只使用微控制器供應商提供的RTOS運行時,請花一些時間來評估和驗證RTOS是否滿足您的需求,因為每個RTOS都是不同的,盡管它們看起來可能是等效的。
編輯:黃飛
-
嵌入式系統(tǒng)
+關注
關注
41文章
3567瀏覽量
129227 -
操作系統(tǒng)
+關注
關注
37文章
6738瀏覽量
123190 -
API
+關注
關注
2文章
1485瀏覽量
61816 -
RTOS
+關注
關注
21文章
809瀏覽量
119433
發(fā)布評論請先 登錄
相關推薦
評論