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