icon
password
new update day
type
Post
status
Published
slug
2025/02/22/Overview-of-embedded-real-time-linux-with-xenomai-kernel-parsing
summary
Linux作为通用操作系统虽然强大,但缺乏硬实时性。为此,出现了三种基于Linux的实时解决方案:直接修改内核、双内核法和多核异构与实时虚拟化。PREEMPT-RT和Xenomai是最佳选择,尤其在对实时性要求高的应用场景中。
tags
Linux
rt-kernel
category
Linux
Property
Feb 24, 2025 02:46 AM
created days
Last edited time
Feb 24, 2025 02:46 AM
在上篇文章【原创】linux为什么不是实时操作系统中,我们介绍了Linux不具备实时性的原因。本文将探讨常见的Linux实时解决方案。
Linux作为一个GPOS(通用操作系统)已发展得相当成熟可靠。它遵循GPL协议,开放全部源代码,易于裁剪。与其他开源的GPOS或RTOS相比,Linux支持更多处理器和开发板,提供丰富的软件开发工具,并在网络和图形界面方面表现出色。这些特点使Linux在产品开发周期和成本控制方面具有显著优势。
虽然Linux功能强大、实用性强、易于二次开发,并提供标准API,但它最初就被设计为GPOS。其目标是构建完整、稳定的开源操作系统,注重缩短平均响应时间、提高吞吐量,以及改善整体性能。因此,标准Linux并不提供硬实时性。
为解决Linux缺乏硬实时性的问题,出现了三类基于Linux的硬实时解决方案:

方案一:直接修改现有Linux代码
1)直接修改Linux内核源代码。
这种方法在遵循GPL协议的前提下,通过对内核代码进行适度修改,将Linux改造成完全可抢占的实时系统。主要缺点是难以确保实时进程不受非实时进程的不可预测活动干扰。该方法的代表是RT-patch(Real Preemption Patch)。
这种修改现有内核机制实现实时的方法,即PREEMPT-RT,始于2004年。随着主线内核发展,它为内核贡献了众多特性。

由于需要修改Linux众多机制来实现实时性,涉及几乎所有内核文件,导致代码修改量巨大。虽然早期PREEMPT-RT发展缓慢,但现已成为Linux实时增强的标准,广泛应用于电信、工业自动化、专业音频、医疗设备、数据采集和汽车等领域。
方案二:双内核
2)双内核法。
这种方法通过添加实时内核与Linux内核并存于内核空间,将标准Linux内核作为实时内核上的普通进程调度。相比直接修改Linux内核,重写实时调度核较为简单,因此双内核法有着超过20年的发展历史。其优势在于可实现硬实时,且便于实现新的调度策略。主要代表有RT-Linux、RTAI(Real-Time Application Interface)和Xenomai。
RT-Linux是双核法的开创者和代表作。它基于实时硬件抽象层技术RTHAL(Real Time Hardware Abstraction Layer)并获得专利。后来被WindRiver收购商业化,但于2011年8月停止更新维护,现已停止发展。

Uploading file...
双内核方案的发展历程如下:

- 1991年9月17日 Linux 发布。
- RTLinux诞生于美国新墨西哥州立大学数据挖掘技术学院。RTLinux通过控制硬件和操作系统间的中断来支持硬实时操作。实时核心处理确定性所需的中断,其他中断则转发给非实时操作系统。操作系统作为低优先级线程运行,通过FIFO管道或共享内存实现实时核心与操作系统间的数据共享。
- RTLinux的核心思想是将硬件置于小型硬实时系统控制之下,让整个Linux作为实时系统中的低优先级任务运行。它仅支持以内核模块形式提供实时应用。
- 2000年,Karim发表《操作系统的自适应域环境》论文,提出基于管道处理中断的思路,奠定了Adeos的基础。
- 2001年8月2日,Philippe Gerum宣布启动新的自由软件项目(GPL)XENODAPTOR。其主要目标是帮助依赖专有商业RTOS的应用程序开发者顺利迁移到基于Linux的硬实时扩展。该项目基于RTAI和RTLinux。
- 2002年6月6日,Philippe Gerum发布首个基于Linux 2.4.18的ADEOS补丁。几个月后,来自意大利米兰大学的RTAI项目采用了该补丁。
- 2003年,XENODAPTOR与RTAI项目合并,推出RTAI/fusion。这是一个基于Linux平台的工业级实时自由软件开发平台,采用Xenomai的抽象实时操作系统内核。
- 2005年,RTAI/fusion从RTAI分离,成为独立的Xenomai 2.0项目。尽管Xenomai和RTAI都基于ADEOS(Adaptive Domain Environment for Operating System)技术,但它们的目标和实现方式有显著差异。RTAI专注于实现最低延迟,而Xenomai除关注实时性外,还重视扩展性、可移植性和可维护性。此外,Xenomai不仅提供双核方案,还支持PREEMPT RT实时抢占补丁。
- 2015年,Xenomai 3.0发布,支持Cobalt和Mercury两种方式构建实时应用。
- 2016年,Xenomai社区开发dovetail替代难以维护的ipipe,同时催生了现今Xenomai 4实时内核EVL的雏形。
几种linux实时方案对比如下表--Linux实时性改造优缺点对比。
性能 | 直接修改内核 | 直接修改内核 | 双内核 | 双内核 | 双内核 |
ㅤ | RT-patch | 其他 | RT-Linux | RTAI | xenomai |
实时性 | 好 | 差 | 好 | 较好 | 较好 |
硬件支持 | 较好 | 好 | 一般 | 一般 | 较好 |
API | 丰富 | 一般 | 一般 | 一般 | 丰富 |
维护难度 | 易 | 易 | 难 | 难 | 难 |
社区活跃度 | 较好 | 差 | 较差 | 一般 | 良好 |
用户态实时任务 | 支持 | 支持 | 不支持 | 支持 | 支持 |
内核实时任务 | 支持 | 不支持 | 支持 | 支持 | 支持 |
非实时任务吞吐量 | 较差 | - | 良好 | 良好 | 良好 |
极限优化下WCET | 30us | - | - | 5us | user 5us,kernel 3us |
综上所述,从硬件支持、社区活跃度、API和商业版权等方面综合考虑,preempt-RT是最佳选择。对于实时性要求更高的场景(如运动控制、数控系统、硬件在环仿真等),Xenomai则是基于Linux实时操作系统的唯一选择。当WCET要求低于3us时,如果没有CPU特殊支持,这基本已达到支持Linux硬件的极限。此时只能通过FPGA等辅助硬件,实现专用的确定性逻辑来分担实时部分的任务。
方案三:多核异构与实时虚拟化
在AMP(非对称多处理)CPU架构中,一个或多个核心运行Linux系统,而其他核心运行裸机程序或RTOS,各操作系统在调度层面实现完全隔离。
在SMP(对称多处理)CPU架构中则通过虚拟化技术实现,详见本博客关于实时虚拟化介绍
参考:
刘剑, 仲宇, 王琦. 嵌入式Linux实时性改造技术综述[J]. 航天控制, 2018, 36(2): 93-97.
作者:wsg1100
本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
欢迎加入“喵星计算机技术研究院”,原创技术文章第一时间推送。

- 作者:tangcuyu
- 链接:https://expoli.tech/articles/2025/02/22/Overview-of-embedded-real-time-linux-with-xenomai-kernel-parsing
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章