实时系统必须尊重时间限制,以确保其执行具有功能意义。它必须是确定性的,确保系统进程的执行先验。在分析了实时配置的一般特征后,我们将重点关注商业和市场方面,并以实时 Linux 嵌入式操作系统 (OS) 为例。
实时操作系统 (RTOS) 可以描述为满足其控制下的进程的时序要求的系统。Linux 并非旨在提供实时性能。对于相对耗时的实时应用程序,如果环境得到适当控制(固定数量的进程、测试的驱动程序等)可能就足够了。另一方面,标准 Linux 内核对于需要极快响应时间或硬实时的应用程序来说是不够的。但是,标准 Linux 的当前开发版本可用于软实时和硬实时应用程序。前者可以承受不尊重时间限制,即使样本持续时间只有几十毫秒。一个例子是视频处理,其中偶尔的闪烁通常是可以接受的。硬实时应用,另一方面,需要严格的确定性和快速的时间。自 1997 年以来,适用于此类应用程序的 Linux 实时变体已经出现,这要归功于来自新墨西哥理工大学、米兰理工大学和堪萨斯大学的研究小组,这些研究小组制作了广泛分布并成功商业化的开源版本。修改作为操作系统核心的标准 Linux 内核有两种基本方法。这些中的每一个都作为标准内核的补丁分发。第一种方法:微内核,即在硬件和标准内核之间插入一个新的、高效的代码层。称为微内核的附加代码层负责所有这些实时功能,包括中断、调度和高时间分辨率。微内核(图 1)将标准内核作为后台任务进行管理。第二种方法:IEEE 1003.1d 内核,它在标准 Linux 内核框架内实现对 POSIX.1 的实时扩展。这些扩展将计时器、编程和抢占式逻辑直接添加到单个单片内核中。较新版本的标准内核表现出大约 1 ms 的延迟(中断的延迟时间)和抖动(周期性事件的时序变化)。Linux 的实时版本在数百兆赫的处理器上运行时具有大约几微秒的延迟和抖动。单片内核。较新版本的标准内核表现出大约 1 ms 的延迟(中断的延迟时间)和抖动(周期性事件的时序变化)。Linux 的实时版本在数百兆赫的处理器上运行时具有大约几微秒的延迟和抖动。单片内核。较新版本的标准内核表现出大约 1 ms 的延迟(中断的延迟时间)和抖动(周期性事件的时序变化)。Linux 的实时版本在数百兆赫的处理器上运行时具有大约几微秒的延迟和抖动。
实时:关键方面和参数
通常,操作系统负责管理计算机的硬件资源,该计算机承载在计算机上运行的应用程序。RTOS 执行这些任务,但也专门设计用于运行具有非常精确的时序和高度可靠性的应用程序。这在停机或程序延迟可能导致安全隐患的测量和自动化系统中尤为重要。
操作系统必须对其执行的每个关键操作都有一个已知的最大时间,才能被视为“实时”。其中一些操作包括操作系统调用和中断处理(图 2)。能够绝对保证这些操作的最大时间的操作系统通常被称为“硬实时”,而能够保证大部分时间的系统被称为“软实时”。
许多开发人员尝试添加对 Linux 的实时支持,从而填补其作为嵌入式系统功能的空白。即使某些应用程序需要实时,某些系统也可以在没有它的情况下运行。Linux 实时系统的总体思路是在 Linux 下运行一个小的实时内核,这意味着实时内核的优先级高于标准的 Linux 内核。实时任务由实时内核执行,普通Linux程序可以在没有实时操作的情况下执行。因为实时内核具有更高的优先级,所以当实时任务准备好运行时,普通的 Linux 进程会被抢占。
通常,实时系统是这样一种系统,其中计算的准确性不仅取决于相应的计算逻辑,还取决于创建结果的时刻。由于能够量化事件激活和处理时间之间可能发生的延迟,因此及时性是操作的决定性因素。这种延迟通常称为“延迟”。中断延迟是中断和相应中断处理程序执行之间的延迟。
许多事情可能会延迟中断处理,包括系统总线争用、DMA 操作,或者仅仅是对中断本身的屏蔽。内核软件在处理关键代码片段时需要后者,以便在内核处理特定数据结构时没有中断处理程序可以更改特定数据结构。类似地,中断处理程序可以将任务放入队列中,以便随后在时间关键的上下文中执行和处理从设备接收到的待处理数据。
此后,内核可能需要一些时间来完成其当前功能,然后再将 CPU 交给下一个任务。这种延迟称为运输延迟或调度延迟。要测量基于 Linux 的操作系统的实时性能,可能需要调查其他问题,包括最坏情况下的执行时间和抖动。抖动是接受和完成申请所需的时间。硬 RTOS 的抖动小于软 RTOS。另一方面,最坏情况执行时间通常用于可靠的实时系统,其中最坏情况的理解对于系统可靠性很重要。
例如,在监控车辆发动机行为的系统中,可能需要在特定时间段内响应输入。如果可以在最坏的情况下确定软件的运行时间,那么系统设计人员可以将其与调度分析等其他技术结合使用,以确保系统响应足够快。
通常,RTOS 需要以下特性:多任务处理、具有相对优先级的进程以及足够数量的中断级别。小型嵌入式操作系统通常需要 RTOS,这些嵌入式操作系统封装为微设备的一部分。一些内核适用于 RTOS。但是,由于特定解决方案通常需要其他组件,例如设备驱动程序,因此 RTOS 通常比内核更大。
图 1:带有微内核的 Linux 实时系统
图 2:实时系统中的中断管理示例
RTOS 与通用操作系统
两种操作系统的主要区别如下:
确定性:通用操作系统和实时操作系统之间的主要区别在于“确定性”时序行为。这意味着操作系统系统只消耗已知和预定量的时间。
任务调度:通用操作系统经过优化,可以同时运行各种应用程序和进程,从而确保所有任务至少获得一些处理时间。因此,低优先级任务可以被提升到设计人员可能不想要的其他优先级任务。但是,RTOS 使用基于优先级的抢占式调度,这使它们能够始终如一地满足其最后期限。所有系统调用都是确定性的,这意味着所有操作的正常运行时间都是有限的。这在嵌入式系统中尤为重要,因为延迟可能会带来安全风险。
抢占式内核:在 RTOS 中,所有内核操作都是可抢占式的。
优先级颠倒:RTOS 具有避免优先级颠倒的机制。
用途:RTOS 通常用于嵌入式应用程序,而通用操作系统用于台式 PC 或其他 PC。
实时 Ubuntu
Ubuntu爱好者应该知道,通过安装相应的软件包可以使其“实时”。桌面系统广泛应用于嵌入式系统,例如最流行的树莓派:一种用于广泛工业应用的微型计算机。可用于较新 Ubuntu 版本的 Linux 实时软件包可以为 Ubuntu Linux 带来实时功能。实时 Linux (RTLinux) 可以安装在 12.04 和更早版本的 Ubuntu 发行版上。对于 Ubuntu 12.04,您可以直接从以下命令添加 PPA:
$ sudo add-apt-repository ppa: abogani / realtime.
对于 Ubuntu 11.10 或更高版本,您需要编辑 sources.list 文件以手动添加存储库:$ sudo gedit /etc/apt/sources.list。在文件末尾添加以下行:
deb http://ppa.launchpad.net/abogani/realtime/ubuntu
deb-src http://ppa.launchpad.net/abogani/realtime/ubuntu
保存文件并更新 apt 存储库: $ Sudo apt-get update。完成后,您可以在 Ubuntu 系统上安装 RTLinux: $ Sudo apt-get install linux-realtime。
最后两个步骤也适用于 Ubuntu 12.04 中的 PPA 方法。
看市场
QNX Neutrino(图 3)是市场上最传统的 RTOS 之一。它具有微内核架构,完全兼容 POSIX 标准,并通过了 FAA DO-278 和 MIL-STD-1553 标准的认证。在该架构中,内核只实现了四个基本任务:任务调度、任务间通信、底层网络通信和中断处理。系统的所有剩余部分(包括设备驱动程序)都作为用户任务实现,从而使内核快速、可靠且体积小。
与其他类型的内核相比,微内核的优势之一是即使发生严重错误(例如在文件系统中),系统的所有其他部分也不受影响。这意味着微内核架构提供了比其他操作系统更健壮的环境,尽管它的问题是开销,这是由必须非常频繁地使用的内存保护引起的。
Neutrino 支持 ARM、MIPS、PowerPC、SH4 和 PC 架构。自适应分区是该操作系统的一项新功能,允许在处理器活动中创建限制。
VxWorks(来自 Wind River)是嵌入式系统行业中使用最广泛的 RTOS(图 4)。使用 VxWorks 的一个应用示例是著名的 NASA 机器人漫游者 Spirit。该 RTOS 已通过各种国际机构和标准的可靠性和关键安全应用认证。许多其他产品都基于 VxWorks:VxWorks 653 的设计遵循航空航天和国防工业的完整 ARINC 6532 合规性规范,以及关键任务应用的安全要求。VxWorks MILS 3 还专为航空航天和国防而设计,为安全数据传输提供高度保障。VxWorks MILS 使系统能够以不同的安全级别运行应用程序,同时确保共享或不共享安全和通信级别,按照严格的标准。另一个操作系统是 LynxOS-178 RTOS,现在是第三代,用于硬实时确定性安全关键应用程序。所有互联安全市场都受益于 LynxOS-178,包括民用和军用航空、铁路、运输和陆地车辆。LynxOS-178 2.2.3 为开发人员提供了实现最高级别的可靠性和安全性所需的认证证书和当前工具。
图 3:QNX Neutrino 架构
图 4:VxWorks 6.2 架构
图 5:影响嵌入式系统设计/选择的因素
结论
Wind River 著名的 QNX Neutrino 和 VxWorks 系统已经证明了确定性和可靠性。然而,两个未被广泛使用的新系统,Windows CE 和 Linux RTAI 也显示出有希望的特性。RTAI 提供了使用免费软件实时构建可靠系统的可能性,并具有 Linux 社区的所有优势。
思科系统公司预测,到 2020 年,预计将有 500 亿台物联网设备投入使用。智能手机、平板电脑和其他使用应用处理器和通用操作系统(如 Linux、Android 和 Windows)的消费类设备占其中的 20%单位。其他 80% 将根深蒂固并依赖于微控制器。正是在这 80% 中,RTOS 发挥了重要作用。
云技术认真考虑了稳定性、数据量、连接性和网络设备等方面,这大大加快了开发时间。构成物联网的数十亿智能设备和系统必须提供决策和解决问题的功能,以及完美的用户体验。RTOS(图 5)处于物联网的最前沿,因为它们提供无故障的可靠性、实时功能以及支持数百种新兴协议的能力。它们还支持所有有线和无线通信标准,包括 CAN、蓝牙、ZigBee、Wi-Fi 和以太网。
灵活且可扩展的 RTOS 有助于提高投资回报、降低开发成本,进而缩短上市时间。尽管嵌入式系统历来完全围绕 8 位和 16 位 MCU 构建,但 32 位 MCU 的价格迅速下降,使其成为基本产品。因此,它们在嵌入式设备中的受欢迎程度飙升。网络嵌入式系统的一个常见技术解决方案是在设备中使用两个处理器。在这种安排中,8 位或 16 位 MCU 用于传感器或执行器,而 32 位处理器用于网络接口。第二个处理器在不断发展和设计中运行在 RTOS 上。
审核编辑:郭婷
评论
查看更多