24小(xiǎo)时联系電(diàn)话:18217114652、13661815404
中文(wén)
- 您当前的位置:
- 首页>
- 電(diàn)子资讯>
- 技术专题>
- 嵌入式Linux或RTOS:...
技术专题
嵌入式Linux或RTOS:用(yòng)于物(wù)联网
嵌入式Linux或RTOS:用(yòng)于物(wù)联网
嵌入式Linux将Linux内核用(yòng)于嵌入式设备,但与标准Linux操作系统有(yǒu)很(hěn)大不同。其在嵌入式系统中的应用(yòng)是受设备支持,文(wén)件系统,网络连接和UI支持的可(kě)用(yòng)性推动的。它是针对嵌入式系统的Linux的定制版本,因此具有(yǒu)更小(xiǎo)的尺寸和最小(xiǎo)的功能(néng),并且需要的处理(lǐ)能(néng)力也更少。根据嵌入式系统要求,对Linux内核进行了修改和优化。这种嵌入式Linux只能(néng)运行特定于设备的专用(yòng)应用(yòng)程序。
具有(yǒu)最少代码的实时操作系统(RTOS)用(yòng)于需要最少固定处理(lǐ)时间的此类应用(yòng)程序。RTOS是一个基于时钟中断的分(fēn)时系统,该时钟中断实现优先级序列以执行进程。在高优先级的情况下,系统会产生中断,正在运行的低优先级进程将停止并处理(lǐ)中断。实时操作系统需要较少的操作内存,并且可(kě)以使进程彼此通信,从而使进程同步,因此可(kě)以有(yǒu)效地使用(yòng)资源,而不会浪费时间。
比较
尺寸
嵌入式Linux和RTOS之间的主要區(qū)别在于它们的大小(xiǎo)。在AVR上运行的RTOS大约需要4.4
KB的ROM。另一方面,嵌入式Linux相对较大。可(kě)以剥离不需要的内核,即使如此,占用(yòng)空间通常以兆字节為(wèi)单位。
嵌入式Linux RAM的需求约為(wèi)几兆字节。在实际应用(yòng)中,它需要的不仅仅是这些,因為(wèi)一些其他(tā)任務(wù)在这些Linux内核下运行。RTOS的内存需求比Linux小(xiǎo)得多(duō)。一个非常简单的设置(在8位架构上运行两个任務(wù),一个调度程序,一个通信队列和一个信号灯)将使用(yòng)大约200个字节。
排程器
RT系统中的调度程序对于确保任務(wù)在固定时间内完成非常重要。与用(yòng)于通用(yòng)系统的常规调度程序相比,确保“公平”分(fēn)配CPU时间不是调度程序的主要任務(wù)。一种常见的技术就是简单地让具有(yǒu)最高优先级的任務(wù)先于所有(yǒu)具有(yǒu)较低优先级的任務(wù)运行。它对于软实时系统工作正常,但对于硬实时,系统必须提供更好的保证。
RTOS调度程序
RTOS使用(yòng)优先级最高的调度程序。这意味着优先级最高的任務(wù)始终在运行。这可(kě)以通过具有(yǒu)抢占式调度程序来实现,该调度程序在滴答(dá)中断时决定是否允许当前正在运行的任務(wù)继续执行,或者需要根据优先级将其切换為(wèi)另一个任務(wù)。调度程序使用(yòng)优先级来调度具有(yǒu)最高优先级的任務(wù)。具有(yǒu)相同优先级的任務(wù)将获得“公平”的处理(lǐ)时间。此计划使我们能(néng)够实现软实时,但由于没有(yǒu)任何基于截止日期的计划,很(hěn)难实现硬实时。
為(wèi)此,可(kě)以选择具有(yǒu)抢占式或协作式调度程序。在抢占模式下,可(kě)以优先抢占任務(wù),而在协作模式下,所有(yǒu)任務(wù)都必须“足够”地分(fēn)配CPU,从而可(kě)以运行更高优先级的任務(wù)。典型的RTOS实时内核可(kě)实现从零到几微秒(miǎo)的调度程序延迟。
嵌入式Linux调度程序
在嵌入式Linux中,有(yǒu)更多(duō)选择来选择调度程序。嵌入式Linux的模块化允许更改系统的不同部分(fēn)。一个简单的insmod可(kě)以更改调度程序。有(yǒu)几个针对不同事物(wù)设计的调度程序。
首先,它具有(yǒu)一个基本的最高优先级优先调度程序,该调度程序使用(yòng)任務(wù)的优先级并对其进行优先调度。嵌入式Linux还首先实施最早期限,该期限使用(yòng)嵌入式Linux的定期功能(néng)。假设每个任務(wù)的截止日期是下次再次运行时,则可(kě)以实现快速的EDF。从理(lǐ)论上讲,这是最佳选择,因為(wèi)它可(kě)以将任務(wù)安排為(wèi)100%CPU使用(yòng)率。实际上,由于一些开销,它是不一样的。与在空闲过程中一样,嵌入式Linux运行一个普通的Linux内核,并且当没有(yǒu)rt-tasks可(kě)以运行时,Linux就可(kě)以运行了。这会导致Linux饥饿,从而有(yǒu)效地禁用(yòng)Linux。但是,实时系统的重要性在于运行实时任務(wù),这对于系统而言不是一个大问题。
CPU资源
嵌入式Linux需要大量的CPU资源,也许是> 200MIPS,32位处理(lǐ)器,理(lǐ)想情况下具有(yǒu)MMU,4Mb ROM和16MB RAM,并且启动可(kě)能(néng)需要几秒(miǎo)钟的时间。
另一方面,RTOS在8位以上的微控制器上以不到10Kb的速度运行,并在数毫秒(miǎo)内启动。
IoT的OS实施
对于极低功耗的应用(yòng)程序(例如传感器),使用(yòng)電(diàn)池运行数月之久,通常首选嵌入式Linux。低功耗本质通常会阻止直接IP连接,而直接IP连接充当Internet连接的网关。网关将低功耗协议传达给传感器,并将其转换為(wèi)IP。Linux可(kě)能(néng)具有(yǒu)满足要求的现有(yǒu)协议。
物(wù)联网设备的基本要求是网络连接,通常是通过Web服務(wù)器以IP的形式。RTOS可(kě)以提供IP连接性,但是除非您进行检查,否则可(kě)能(néng)会出现错误。例如,通常,RTOS不会将IP堆栈用(yòng)户与IP堆栈本身隔离开。网络连通性可(kě)能(néng)需要处理(lǐ)低速或拥塞的链接,当堆栈与其他(tā)代码混合在一起时,这可(kě)能(néng)导致模糊和难以调试的缓冲區(qū)处理(lǐ)问题。另一方面,嵌入式Linux利用(yòng)硬件分(fēn)离和广泛使用(yòng)的IP堆栈(可(kě)能(néng)已暴露于极端情况)。
在经常暴露于开放Internet的IoT设备中,安全性至关重要。Internet接口上的系统漏洞很(hěn)容易受到入侵者的侵害,并且可(kě)以劫持设备的信息或控制权。开发人员可(kě)以利用(yòng)本机,嵌入式Linux功能(néng)(多(duō)用(yòng)户,SELinux和容器)来控制和限制损害。
Linux当然是一个强大而安全的操作系统,并且该系统已经在嵌入式操作系统中成熟。然而,缺点之一是,与实时操作系统相比,它的内存占用(yòng)空间很(hěn)小(xiǎo),即使可(kě)以通过删除嵌入式系统中不需要的工具和系统服務(wù)来进行修整,但它仍然是一个大型软件。它根本无法在8位或16位MCU上运行,并且需要更多(duō)板载RAM用(yòng)于Linux内核。例如,基于ARM
Cortex-M架构的MCU通常只有(yǒu)几百KB的RAM,而Linux无法在这些芯片上运行。
联网系统的常见工程解决方案是在设备中使用(yòng)两个处理(lǐ)器。在这种布置中,传感器或执行器使用(yòng)8位或16位MCU,而运行RTOS的网络接口则使用(yòng)32位处理(lǐ)器。在过去的几年中,32位MCU的销量激增,并已成為(wèi)MCU市场的最大细分(fēn)市场。