使用 RTOS 或裸機調度程序是嵌入式系統開發人員争論的熱門話題。
在裸機方面,嵌入式開發人員認為他們可以結合使用基于優先級的中斷和計時器來獲得具有更好性能和内存占用的等效行為。 RTOS
方面認為對于初學者來說易于調度和系統集成。無論人們站在哪一邊,這裡有七個原因使開發人員可能決定從 RTOS 開始而不是裸機調度程序。
原因1–并發性
基于微控制器的系統通常隻有一個處理核心,但需要執行多個任務。在任務需要同時或并發執行的應用程序中,使用RTOS是有意義的。RTOS可以在内存中同時擁有多個任務,并且可以根據事件和優先級在任務之間切換。可以使用裸機調度程序,但是裸機系統中的任務通常一次執行一個,而不是同時執行。
原因2–搶占
搶占是操作系統暫停一個任務以執行更高優先級任務的能力。如果正在開發的嵌入式軟件需要區分任務的優先級并中斷當前正在運行的任務,那麼RTOS就是最好的操作系統。大多數RTOS系統的本質是根據任務的優先級和系統條件來确定在任何給定的時間應該執行哪些任務。可以開發裸機調度程序,使用基于優先級的中斷來模拟這種類型的行為,但是使用RTOS更适合這種情況。
原因3–可用内存
微控制器上可用RAM的數量是嵌入式開發人員決定使用RTOS還是裸機調度器的一個重要因素。由于每個任務都有自己的任務控制塊和堆棧,所以RAM少于4千字節的資源受限系統可能很難适應内存。另一方面,裸機系統通常隻有一個堆棧,不需要額外的開銷來跟蹤每個系統任務的狀态。在使用RTOS解決方案之前,基于微控制器的系統至少應該有4千字節的RAM(最好是8千字節)。
原因4–可用閃存
由于開發人員在決定使用RTOS之前應該查看系統上有多少可用内存,所以開發人員還應該查看有多少可用閃存空間。RTOS系統不會占用太多的閃存空間,通常在8到10千字節的數量級,但如果微控制器隻有16千字節的閃存空間,就沒有多少空間留給應用程序代碼了。如果微控制器具有至少32千字節的閃存空間,則該系統是使用RTOS的良好候選。如果做得不夠,可能是時候清理裸機調度程序或升級硬件了。
原因5–同步工具
使用裸機調度程序的一個問題是,它缺少默認包含在RTOS中的同步工具。例如,RTOS具有可用于保護共享資源的互斥體、可用于發送信号和同步任務的信号量以及在任務間傳輸數據的消息隊列。正确地設計和實現這些核心軟件功能并不簡單,從頭開始将它們添加到裸機調度程序中無疑會引入錯誤。如果一個系統有多個任務和受保護的資源需要同步,那麼使用RTOS是明智的決定。
原因6–第三方軟件
當今許多嵌入式開發人員面臨的一個問題是如何将第三方軟件棧和工具集成到他們的嵌入式系統中。很少有開發者想寫TCP/IP或者USB棧。市場上提供的許多第三方堆棧和工具都與各種RTOS兼容。RTOS的使用使得這些組件在軟件中即插即用,并且可以極大地加速軟件開發。使用第三方軟件的決定可能是應該使用RTOS而不是裸機調度程序的一個主要指标。
原因7–易于使用
幾乎每個微控制器和幾乎所有可以想象的應用都可以使用RTOS系統。無論開發人員隻是想創建一個快速原型還是構建一個健壯的安全關鍵系統,RTOS都是存在的,開發人員可以利用它并快速啟動和運行。創建任務和利用RTOS工具很容易,而且非常強大,但是開發者需要注意,他們正确地分析了他們的任務,并考慮了他們的系統設計。RTOS是一個強大的工具,但使用不當會導緻悲劇性的後果。
結論
開發人員無疑會繼續争論是使用裸機調度程序還是RTOS。在某種程度上,決策是基于設計系統的開發人員的技能和經驗。在其他情況下,RTOS無疑是首要解決方案。如果有一點是明确的,那就是嵌入式開發人員需要了解每種解決方案的優缺點,以及如何在任一場景中正确地實現解決方案。