24小時聯系電話:18217114652、13661815404
中文
技術專題
嵌入式Linux或RTOS:用于物聯網
嵌入式Linux或RTOS:用于物聯網
嵌入式Linux將Linux內核用于嵌入式設備,但與標準Linux操作系統有很大不同。其在嵌入式系統中的應用是受設備支持,文件系統,網絡連接和UI支持的可用性推動的。它是針對嵌入式系統的Linux的定制版本,因此具有更小的尺寸和最小的功能,并且需要的處理能力也更少。根據嵌入式系統要求,對Linux內核進行了修改和優化。這種嵌入式Linux只能運行特定于設備的專用應用程序。
具有最少代碼的實時操作系統(RTOS)用于需要最少固定處理時間的此類應用程序。RTOS是一個基于時鐘中斷的分時系統,該時鐘中斷實現優先級序列以執行進程。在高優先級的情況下,系統會產生中斷,正在運行的低優先級進程將停止并處理中斷。實時操作系統需要較少的操作內存,并且可以使進程彼此通信,從而使進程同步,因此可以有效地使用資源,而不會浪費時間。
比較
尺寸
嵌入式Linux和RTOS之間的主要區別在于它們的大小。在AVR上運行的RTOS大約需要4.4
KB的ROM。另一方面,嵌入式Linux相對較大。可以剝離不需要的內核,即使如此,占用空間通常以兆字節為單位。
嵌入式Linux RAM的需求約為幾兆字節。在實際應用中,它需要的不僅僅是這些,因為一些其他任務在這些Linux內核下運行。RTOS的內存需求比Linux小得多。一個非常簡單的設置(在8位架構上運行兩個任務,一個調度程序,一個通信隊列和一個信號燈)將使用大約200個字節。
排程器
RT系統中的調度程序對于確保任務在固定時間內完成非常重要。與用于通用系統的常規調度程序相比,確保“公平”分配CPU時間不是調度程序的主要任務。一種常見的技術就是簡單地讓具有最高優先級的任務先于所有具有較低優先級的任務運行。它對于軟實時系統工作正常,但對于硬實時,系統必須提供更好的保證。
RTOS調度程序
RTOS使用優先級最高的調度程序。這意味著優先級最高的任務始終在運行。這可以通過具有搶占式調度程序來實現,該調度程序在滴答中斷時決定是否允許當前正在運行的任務繼續執行,或者需要根據優先級將其切換為另一個任務。調度程序使用優先級來調度具有最高優先級的任務。具有相同優先級的任務將獲得“公平”的處理時間。此計劃使我們能夠實現軟實時,但由于沒有任何基于截止日期的計劃,很難實現硬實時。
為此,可以選擇具有搶占式或協作式調度程序。在搶占模式下,可以優先搶占任務,而在協作模式下,所有任務都必須“足夠”地分配CPU,從而可以運行更高優先級的任務。典型的RTOS實時內核可實現從零到幾微秒的調度程序延遲。
嵌入式Linux調度程序
在嵌入式Linux中,有更多選擇來選擇調度程序。嵌入式Linux的模塊化允許更改系統的不同部分。一個簡單的insmod可以更改調度程序。有幾個針對不同事物設計的調度程序。
首先,它具有一個基本的最高優先級優先調度程序,該調度程序使用任務的優先級并對其進行優先調度。嵌入式Linux還首先實施最早期限,該期限使用嵌入式Linux的定期功能。假設每個任務的截止日期是下次再次運行時,則可以實現快速的EDF。從理論上講,這是最佳選擇,因為它可以將任務安排為100%CPU使用率。實際上,由于一些開銷,它是不一樣的。與在空閑過程中一樣,嵌入式Linux運行一個普通的Linux內核,并且當沒有rt-tasks可以運行時,Linux就可以運行了。這會導致Linux饑餓,從而有效地禁用Linux。但是,實時系統的重要性在于運行實時任務,這對于系統而言不是一個大問題。
CPU資源
嵌入式Linux需要大量的CPU資源,也許是> 200MIPS,32位處理器,理想情況下具有MMU,4Mb ROM和16MB RAM,并且啟動可能需要幾秒鐘的時間。
另一方面,RTOS在8位以上的微控制器上以不到10Kb的速度運行,并在數毫秒內啟動。
IoT的OS實施
對于極低功耗的應用程序(例如傳感器),使用電池運行數月之久,通常首選嵌入式Linux。低功耗本質通常會阻止直接IP連接,而直接IP連接充當Internet連接的網關。網關將低功耗協議傳達給傳感器,并將其轉換為IP。Linux可能具有滿足要求的現有協議。
物聯網設備的基本要求是網絡連接,通常是通過Web服務器以IP的形式。RTOS可以提供IP連接性,但是除非您進行檢查,否則可能會出現錯誤。例如,通常,RTOS不會將IP堆棧用戶與IP堆棧本身隔離開。網絡連通性可能需要處理低速或擁塞的鏈接,當堆棧與其他代碼混合在一起時,這可能導致模糊和難以調試的緩沖區處理問題。另一方面,嵌入式Linux利用硬件分離和廣泛使用的IP堆棧(可能已暴露于極端情況)。
在經常暴露于開放Internet的IoT設備中,安全性至關重要。Internet接口上的系統漏洞很容易受到入侵者的侵害,并且可以劫持設備的信息或控制權。開發人員可以利用本機,嵌入式Linux功能(多用戶,SELinux和容器)來控制和限制損害。
Linux當然是一個強大而安全的操作系統,并且該系統已經在嵌入式操作系統中成熟。然而,缺點之一是,與實時操作系統相比,它的內存占用空間很小,即使可以通過刪除嵌入式系統中不需要的工具和系統服務來進行修整,但它仍然是一個大型軟件。它根本無法在8位或16位MCU上運行,并且需要更多板載RAM用于Linux內核。例如,基于ARM
Cortex-M架構的MCU通常只有幾百KB的RAM,而Linux無法在這些芯片上運行。
聯網系統的常見工程解決方案是在設備中使用兩個處理器。在這種布置中,傳感器或執行器使用8位或16位MCU,而運行RTOS的網絡接口則使用32位處理器。在過去的幾年中,32位MCU的銷量激增,并已成為MCU市場的最大細分市場。