發布日期:2022-04-22 點擊率:49
開發物聯網 (IoT) 設備可能比許多開發人員或公司所設想的更具挑戰性。將嵌入式系統連接至云端極大地增加了系統的時序復雜性。時序復雜性的增加意味著開發人員需要一種更好的方法,用以管理軟件何時應該運行什么代碼。要避免編寫自定義調度程序或處理裸機時序,最佳方法是使用實時操作系統 (RTOS) 來管理時序復雜性。
目前,使用 RTOS 的一項挑戰在于許多開發人員習慣于沒有操作系統 (OS) 的裸機環境,因而為特定應用選擇合適的 RTOS 難度頗大。對 RTOS 市場的快速網絡調查表明,市面上共有百余種 RTOS 可供開發人員使用,從開源系統到經認證的商業 RTOS。那么,該如何選擇 RTOS 并開始使用呢?
本文將闡示如何評估最適合應用的 RTOS,并介紹支持 RTOS 的 STMicroelectronics 和 Renesas 開發平臺。
實時操作系統是開發人員構建應用程序代碼的基礎。為確保應用基礎牢固且能經受考驗,選擇合適的 RTOS 至關重要。不過在多數情況下,RTOS 選擇僅依據單一參數:成本。
雖然成本是一個重要的考慮因素,但不應該是唯一的因素。如果開發團隊難以連接、實施系統或對所選擇的 RTOS 缺乏支持,即便花費十倍于商業 RTOS 的成本也是很平常的,更不用說因此而損失的項目時間。一般而言,開發團隊為應用選擇 RTOS 時應考慮八個不同的類別,其中包括:
法律責任與風險
性能
特性
成本
生態系統
中間件
RTOS 供應商
工程偏好
每個類別均可能包含幾項標準,評估各款 RTOS 時應參照這些標準。例如,在法律責任方面,團隊可能需要考慮以下事項:
RTOS 侵權責任
賠償
保修
需要從法律角度審查 RTOS
在性能方面,開發人員可能需要考慮以下事項:
可執行內存占用
RAM 占用
最高的確定性
運行時效率
開發和執行團隊檢查各個主要類別,確定用于評估 RTOS 的標準。一旦確定了標準,就可以使用 Kepner-Tregoe (KT) 矩陣來評估幾種不同的 RTOS。這種合理的決策模型有助于收集、優先排序和評估信息,且側重于評估和確定風險的優先級,以期消除決策過程中的個人偏見,進而作出最佳選擇,同時將負面影響降至最低。下面將詳細說明如何使用 KT 矩陣來選擇 RTOS。
用于 RTOS 選擇的 KT 矩陣如圖 1 和圖 2 所示。整體構想是,確定每個選擇類別的選擇標準并在一列中逐一羅列。為各標準分別確定權重,并按重要性對權重賦值,從 1 到 5,其中 5 代表至關重要(如成本),1 表示不重要(如法律責任)。然后團隊各成員就各標準對每款待評估 RTOS 的重要性進行排名,并將結果逐列填入矩陣中,再對各標準進行加權、求和,進而生成無偏見的數值結果。具有最高數值的 RTOS 則是最符合標準的 RTOS。
圖 1:用于 RTOS 選擇的 KT 矩陣上半部分,包括對責任風險、RTOS 性能、特性和成本的評估。(圖片來源:Beningo Embedded Group)
圖 2:用于 RTOS 選擇的 KT 矩陣下半部分,包括對生態系統、中間件、供應商和業務的評估。(圖片來源:Beningo Embedded Group)
圖 1 和圖 2 中示例的評估標準數量多,涵蓋面廣,可能超出了大部分開發團隊所設想的評估范圍,而只需將權重設置為 0 或隱藏電子表格相應的行,即可輕松刪減標準數量。
開發人員認為較難評估 RTOS 的一個領域,可能是確定其是否滿足性能和功能的需求。除非開發人員深入評估,開始使用該 RTOS 卻使他們陷入困境,否則多數情況下無從知曉。事實證明,一種簡單又經濟的 RTOS 評估和測試方法是利用支持 RTOS 的現有開發平臺。下面我們將了解一些支持常用開源 FreeRTOS 和 Express Logic 的 ThreadX 操作系統的平臺。
首先介紹的是 STMicroelectronics 的 STM32Cube 平臺。STM32Cube 平臺支持 FreeRTOS,屬于 STMicroelectronics 的 STM32CubeMx 和 STM32CubeIDE 開發環境的一部分。這些工具可讓開發人員方便地啟用 FreeRTOS,他們只需選中 FreeRTOS 框,然后使用 FreeRTOS 配置工具來設置所有配置值即可。因此開發人員能夠非常快速地著手運行 FreeRTOS,以便開始評估其功能和性能特點。
在 STMicroelectronics 的工具鏈中,有多種不同的開發板可供選擇。多年來,一款久經考驗的開發板一直深受青睞,STM32F429 Discovery 板 (STM32F429I-DISC1)(圖 3)。
STM32F429 采用 Arm? Cortex?-M4 處理器,時鐘速度高達 168 MHz。該微控制器支持 2 MB 的閃存和 256 KB 的 SRAM,代碼和內存足以用于高級應用的開發。該開發板還包括 LCD、數個 LED 和可擴展的 I/O。
圖 3:STM32F429I Discovery 開發板成本低廉,采用 Arm Cortex-M4 處理器,可為開發人員提供充分的處理能力以評估 RTOS。(圖片來源:STMicroelectronics)
若基于 RTOS 的物聯網邊緣設備還需執行機器學習,則開發人員更適合選用 STM32F7 Discovery 板 (STM32F746G-DISCO)(圖 4)。STM32F7 Discovery 板基于 Arm Cortex-M7 處理器,帶緩存,時鐘速度高達 216 MHz,具有 1 MB 的閃存和 340 KB 的 SRAM。此外,該開發板還包括 4.3 英寸 480 x 272 像素顯示屏、以太網、SD 插槽、USB、麥克風和揚聲器連接等。
圖 4:STM32F746G Discovery 開發板成本低廉,采用 Arm Cortex-M7 處理器。開發人員不僅可用于評估 RTOS,還可評估物聯網邊緣設備上所需使用的任何機器學習接口。(圖片來源:STMicroelectronics)
最后介紹的一款開發板是 STM32L0 Nucleo 板 (NUCLEO-L073RZ)(圖 5)。STM32L0 Nucleo 板基于 Arm Cortex-M0+,旨在實現最低能耗,非常適合電池供電的低功耗物聯網邊緣設備。STM32L0 微控制器的時鐘速度高達 24 MHz,具有 192 KB 的閃存和 20 KB 的 SRAM。該開發板的特性可滿足 RTOS 運行的最低需求,組件很簡單,只包括用戶開關和 LED。
圖 5:NUCLEO-L073RZ STM32L0 開發板基于 Arm Cortex-M0+ 處理器,旨在為低功耗設備提供高性能。(圖片來源:STMicroelectronics)
接下來介紹的是 Renesas Synergy? 平臺。在嵌入式行業中,該平臺的獨特之處在于附帶豐富的第三方軟件和各供應商的開發工具。
例如,如果開發人員使用 STMicroelectronics 開發板,并希望將 Express Logic 的 ThreadX RTOS 與 IAR Systems 的 Embedded Workbench 編譯器和開發環境結合使用,那么編譯器需要使用 IAR 產品,RTOS 需使用 Express Logic 產品,就必須分別購買使用許可證。但是,開發人員只需購買 Renesas Synergy 平臺中的某個微控制器,就能免費使用這些工具和 RTOS 以及其他中間件。
若開發人員希望在高端處理器上測試 ThreadX,Renesas Synergy 的 SK-S7G2 開發板 (YSSKS7G2E30) 不失為絕佳的選擇(圖 6)。SK-S7G2 基于 Arm Cortex-M4 處理器,時鐘速度達 240 MHz,具有 3 MB 的閃存和 640 KB 的 RAM。該開發板組件豐富,包括 LCD、大量 LED、I/O 擴展、CAN、PMOD 擴展,可輕松訪問串口和附加 I/O。
圖 6:Renesas Synergy 的 SK-S7G2 開發板附帶商用開發工具,包括 Express Logic 的 ThreadX RTOS。(圖片來源:Renesas)
另一款可用于測試 ThreadX 的開發板是 Renesas Synergy 的 TB-S5D5 (YSTBS5D5E10)(圖 7)。TB-S5D5 開發板成本低廉,采用 Arm Cortex-M4 處理器,時鐘速度達 120 MHz,具有 1 MB 的閃存和 384 KB 的 SRAM。該開發板的功能較少,從而能最大限度地降低成本,只包括用戶按鈕、電容式觸控和 LED。
圖 7:Renesas Synergy 的 TB-S5D5 開發板為開發人員提供 1 MB 的代碼閃存和 384 KB 的 SRAM,可用于測試 ThreadX。(圖片來源:Renesas)
對于開發人員,尤其是對物聯網應用感興趣的開發人員,其他值得關注的選擇還有 Renesas Synergy 的 AE-Cloud1 物聯網套件 YSAECLOUD1(圖 8)和 Renesas Synergy 的 AE-Cloud2 蜂窩物聯網套件 YSAECLOUD2(圖 9)。
Synergy Cloud1 物聯網套件讓開發人員可以通過 Wi-Fi 連接至云端,而 Cloud2 蜂窩物聯網套件則可通過蜂窩網絡連接。這兩款開發板均基于 S5D9 處理器,具有板載傳感器和 LED 可從云端進行監視和控制。此外,這兩款套件還附帶 ThreadX 等預裝軟件,因此開發人員可使用自帶 RTOS 測試整個連接解決方案。(開發人員可以此評估上述 KT 矩陣的中間件部分。)
圖 8:Renesas Synergy 的 AE-Cloud1 物聯網套件是專為物聯網設備設計的開發板,可通過 Wi-Fi 連接至云端。該套件可以控制 LED、監控來自 Amazon Web Services (AWS) 或 Microsoft Azure 等云服務提供商的傳感器值。(圖片來源:Renesas)
圖 9:Renesas Synergy 的 AE-Cloud2 蜂窩物聯網套件是專為物聯網設備設計的開發板,可通過 Wi-Fi 或蜂窩網絡連接至云端。該套件可以控制 LED、監控來自 AWS 或 Azure 等云服務提供商的傳感器值。(圖片來源:Renesas)
關于上述平臺的一個重要注意事項:評估 RTOS 時,請確保執行同環境比較。例如,若在時鐘速度達 168 MHz 的 STM32F429 Discovery 板上評估 FreeRTOS,則請確保使用相同的開發板或時鐘速度相同的開發板來評估其他 RTOS。
每款 RTOS 都有各自的“技巧與訣竅”,但有幾條經驗法則可以普遍應用于各款 RTOS:
靜態分配任務和 RTOS 對象。動態分配任務和對象需要使用內存分配程序 (malloc()),而這具有非確定性,可能會導致堆碎片問題,從而導致性能變差,甚至在最壞的情況下導致系統崩潰。
根據應用需求更改默認堆棧大小。對于多數任務而言,許多 RTOS 提供的默認堆棧值過大,這會導致 RAM 浪費。手動配置默認堆棧大小,但請務必根據任務的功能和需求調整各任務的堆棧大小。
從任務調用的函數必須可重入。從多個任務調用該函數時,若被更高優先級的任務中斷,即可確保不存在損壞其他任務數據的風險。
盡量使用內存塊池(如有)。內存塊池是具有確定性行為的內存池,可用于運行時動態分配內存。該方法比使用 malloc() 更穩妥,但多數開源操作系統并不具備此內存管理功能。
最大限度地減少應用中使用的任務數。使用 RTOS 時,許多開發人員喜歡創建大量任務,但是創建任務就需要任務控制塊及相關的獨立堆棧空間,因此創建不必要的任務會大幅減少可用內存。
物聯網設備的應用促使嵌入式系統的軟件復雜度相應增加,因此為了幫助開發人員克服這一挑戰并將復雜性進行抽象化,使用 RTOS 已成為必要之舉。然而,訣竅不僅僅在于選擇 RTOS。每款 RTOS 都各有所長,若選擇的 RTOS 與開發人員的應用需求不符,則可能會浪費大量的時間和精力。
相反,開發人員應采取積極主動的方法來選擇 RTOS,仔細評估各個不同方面,不光是 RTOS 本身的特性,還包括 RTOS 供應商以及遇到問題時可用的支持等外圍因素。一種有效方法則是使用 KT 矩陣仔細評估待選 RTOS,然后在完全支持該系統的微控制器平臺上運行所選擇的 RTOS,以確保其適合應用。
下一篇: PLC、DCS、FCS三大控
上一篇: 近零時間的 Z-Wave: