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