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