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的硬实时解决方案:
notion image

方案一:直接修改现有Linux代码

1)直接修改Linux内核源代码
这种方法在遵循GPL协议的前提下,通过对内核代码进行适度修改,将Linux改造成完全可抢占的实时系统。主要缺点是难以确保实时进程不受非实时进程的不可预测活动干扰。该方法的代表是RT-patch(Real Preemption Patch)。
这种修改现有内核机制实现实时的方法,即PREEMPT-RT,始于2004年。随着主线内核发展,它为内核贡献了众多特性。
notion image
由于需要修改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月停止更新维护,现已停止发展。
notion image
Uploading file...
双内核方案的发展历程如下:
notion image
  1. 1991年9月17日 Linux 发布。
  1. RTLinux诞生于美国新墨西哥州立大学数据挖掘技术学院RTLinux通过控制硬件和操作系统间的中断来支持硬实时操作。实时核心处理确定性所需的中断,其他中断则转发给非实时操作系统。操作系统作为低优先级线程运行,通过FIFO管道或共享内存实现实时核心与操作系统间的数据共享。
  1. RTLinux的核心思想是将硬件置于小型硬实时系统控制之下,让整个Linux作为实时系统中的低优先级任务运行。它仅支持以内核模块形式提供实时应用。
  1. 2000年,Karim发表《操作系统的自适应域环境》论文,提出基于管道处理中断的思路,奠定了Adeos的基础。
  1. 2001年8月2日,Philippe Gerum宣布启动新的自由软件项目(GPL)XENODAPTOR。其主要目标是帮助依赖专有商业RTOS的应用程序开发者顺利迁移到基于Linux的硬实时扩展。该项目基于RTAI和RTLinux。
  1. 2002年6月6日,Philippe Gerum发布首个基于Linux 2.4.18的ADEOS补丁。几个月后,来自意大利米兰大学的RTAI项目采用了该补丁。
  1. 2003年,XENODAPTORRTAI项目合并,推出RTAI/fusion。这是一个基于Linux平台的工业级实时自由软件开发平台,采用Xenomai的抽象实时操作系统内核。
  1. 2005年,RTAI/fusion从RTAI分离,成为独立的Xenomai 2.0项目。尽管Xenomai和RTAI都基于ADEOS(Adaptive Domain Environment for Operating System)技术,但它们的目标和实现方式有显著差异。RTAI专注于实现最低延迟,而Xenomai除关注实时性外,还重视扩展性、可移植性和可维护性。此外,Xenomai不仅提供双核方案,还支持PREEMPT RT实时抢占补丁。
  1. 2015年,Xenomai 3.0发布,支持CobaltMercury两种方式构建实时应用。
  1. 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
本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
 
 
欢迎加入喵星计算机技术研究院,原创技术文章第一时间推送。
notion image
 
Overview :: Xenomai 3【转载】为什么Linux不是实时操作系统 - 沐多 - 博客园