实时系统Preempt RT与Xenomai之争!谁更主流,谁更实时

 

版权声明:本文主要内容基于“北京盟通科技有限公司”授权提供的文件,由“创龙科技”进行整理得出。感谢“盟通科技”的慷慨支持,让更多人了解Linux系统的“实时拓展”选择知识。

选择争论一直存在

大家知道EtherCAT是实时现场总线技术,当我们开发一款支持EtherCAT总线的控制器时,实时操作系统的选择不仅对于产品本身是最重要的一部分,而且对产品研发的整个过程也影响深远。

根据EtherCAT主站提供商Acontis公司对全球新客户的情况统计,选择实时Linux系统的客户比重在过去10年逐年增加,Acontis公司2019年所有新客户中采用实时Linux作为控制器操作系统的比例已超过60%。

从近几年的经验中,我们注意到一些客户对实时性的理解存在偏差和误区。此外,对于实时Linux系统的选择,主要是采用Preempt RT还是Xenomai存在大量争论。结合我们在以往项目中的经验以及实时Linux系统专家Jan Altenberg 2015年在Embedded Linux会议上的讲演,我们整理出此文。希望可以帮助大家理解实时性,同时对在Preempt RT和Xenomai之间做出合适的选择提供参考。

什么是“实时性”

我们在和客户的交流中注意到,部分工程师会把实时性与执行速度或性能相混淆。Altenberg在讲演中特别强调:实时性与执行速度和性能无关!

无论是实时操作系统还是实时现场总线,实时性的含义不是越快越好,而是在规定的时间内完成任务的确定性(Determinism and Timing Guarantees)。如果我们给实时性下定义,那么实时性就是关于时间的确定性。

实时性的一个重要特点,是在规定的时间段内完成规定的任务。在技术讨论中,有时客户对EtherCAT协议不存在对错误数据自动重传的机制有疑问,很显然是忽略了实时性的这一特性。EtherCAT主站的工作原理,是按时间段(循环周期)发送数据。每个循环周期内的过程数据(Process Data),只在这个周期内到达从站才有意义,因此EtherCAT在协议层面不会自动在后续周期重新发送之前周期发送失败的过程数据。

在Embedded Linux会议讲演中,Altenberg还表述了一个很有趣的观点,他希望大家忘掉“软实时”(即Soft Real Time的提法),只存在实时和非实时的、确定性和非确定性的区别。能保证确定性,那就是“硬实时”(Hard Real Time)。

Xenomai和Preempt RT实现原理

目前,对实时Linux方案的选择主要在Xenomai和Preempt RT之间。Xenomai是在Linux Kernel外增加独立的微内核的双内核方案,而Preempt RT是标准的单内核实时方案。

Xenomai的实时应用运行在微内核中,而把Linux系统作为微内核的一个低优先级任务。与RTAI不同,Xenomai实时性在用户空间实现。当高优先级的实时应用程序不在微内核运行时,Linux才有可能获得运行时间。下图是以Xenomai为代表的双内核方案的原理图。

图 1 Xenomai双内核方案原理图

Altenberg认为双内核实时方案有几个明显不足。首先,维护工作量大。由于Linux不是直接在硬件上运行,因此Xenomai在维护微内核的同时还需要维护硬件抽象层HAL层,这导致Xenomai的更新速度通常会比主线Linux落后一步。其次,不能使用标准C库。Xenomai实时应用的开发需要特殊的工具和库以及单独的API。

主流的实时Linux方案是基于Preempt RT的单内核方案,通过最大限度地提高Linux内核中的可抢占部分,使Linux本身具备实时性。下图为Premept RT单内核原理图。

图 2 Preempt RT单内核方案原理图

由于大约80%的Preempt RT功能已经融合进Linux主线,因此任何Linux开发者都可以使用Preempt RT的Linux内核组件。Preempt RT不仅仅把Linux变成实时系统,同时提高了Linux的稳定性。Preempt RT被广泛接受并拥有庞大的社区,开发者不需要深入了解Preempt RT,而是使用标准C库开发实时应用。开发者不需要深入了解Preempt RT,而是使用标准C库开发实时应用。Preempt RT就是Linux系统,Preempt RT的实时应用也是Linux的应用。

随着剩下的20%功能逐渐融入Linux主线,未来有可能不需要在Linux安装补丁程序而直接使用Preempt RT。

Xenomai和Preempt RT性能对比

实时性能最重要的指标是延时的大小。网上有不少流传很广的文章,表示Xenomai在延迟方面有优势。Altenberg并不认同这种观点,他认为之所以得出这样的结论,是对Preempt RT的错误配置造成的。

为了确切证实,他们的团队分别找了Xenomai和Preempt RT专家,在相同的硬件平台上进行了测试。测试对象是高负载下Xenomai和Preempt RT在延时Latency和抖动Jitter两个方面的表现情况。

Altenberg强调了两点,第一是测试的最坏结果才有意义。另外一点是系统拿到中断后,在用户空间的应用响应延时是对应用最有意义的。

在用户空间的测试结果,Xenomai和Preempt RT最坏延时都在90-95微秒左右。当在Linux系统中只使用单核测试时,Preempt RT最坏的延时只有大约80微秒,结果优于Xenomai。

在Kernel空间延时的测试结果,Xenomai最高延时在30微秒,单核运行Preempt RT的最高延时60微秒。如果使用FIQ快速中断的话,Preempt RT的最坏延时也可达到30微秒,平均延时甚至到达10微秒。

专家观点

盟通指出:测试表明,对于开发人员最有意义的用户空间内最坏延时方面,两种实时方案在该性能指标上展示出近乎相同的数据。

但是Preempt RT几乎已经和Linux内核主线合并,从系统的开发和维护角度,Preempt RT的工作量与标准Linux相同。这使Preempt RT与Xenomai相比具备更多优势,例如工程师开发更简单、产品生命周期更长、系统维护工作更容易等。

实时系统工业平台,尽在创龙科技

创龙科技很多ARM嵌入式处理器平台已支持Preempt RT与Xenomai实时拓展,主要平台如下。更多型号或细节内容,欢迎与我们联系。

图 3 创龙科技Linux实时系统平台支持列举

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/803058.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java中使用加密盐

0 前言 众所周知,密码肯定不能用明文存储。 之前一直使用MD5进行加密,现在才知道有彩虹表这回事。所以记录一下对应的处理方式:加密盐。 1 彩虹表 例如用MD5加密,随便没法破解,但是有些常用的字符被收集到彩虹表里…

OSU!题解(概率dp)

题目:OSU! - 洛谷 思路: 设E()表示截止到i所获得的分数; 对于到i点的每一个l,如果第i1点为1,那么会新增分数3*l^23*l1; 就有递推公式方程: E()E()p[i1]p*(3*l^23*l1);(p代表截止到i获得长度l的概率)&a…

关于mybatis中语法的错误记录

大家注意再写mybatis时候的逗号,虽然不起眼,但是会一直报错,最后一个字段不需要逗号,其余字段全部需要逗号。

【个人笔记】685. 冗余连接 II 的解释(并查集)

一棵树有n个点和n条边,返回一条能删除的边,使得剩下的图是有 n 个节点的有根树。 解释: 注意不冗余的有根树的特性!**根节点入度为0,其余结点只有一个入度!**所以冗余的两种情况如下: &#xff…

Vue3项目基于Axios封装request请求

在 Vue 3 的项目开发中,使用 Axios 进行 HTTP 请求是非常常见的作法,为了更方便开发者更高效的进行代码编写和项目的维护,可以通过再次封装 Axios 来实现。 在本文中,博主将详细指导你如何在自己的 Vue 3 项目中使用 Axios 二次封…

Vue学习---vue cli 项目创建

使用的编辑工具webStorm 创建例子: hello vue create hello 选择 vue3 进行创建 运行 npm run serve 测试访问:http://localhost:8080 改动内容重新编译: npm run build dist 目录就是编译后的可运行内容

客流统计系统优化景区服务流程,增强游客满意度

在当今旅游业蓬勃发展的时代,景区面临着越来越多的挑战和机遇。如何提供更优质、更高效的服务,满足游客日益增长的需求,成为了景区管理者们关注的焦点。客流统计系统作为一种创新的技术手段,正逐渐成为优化景区服务流程、增强游客…

windows 打包pyd文件

1.新建一个py文件,myunit.py,里面的代码是: class Adder: def __init__(self, a, b): self.a a self.b b def add(self): return self.a self.b 2.新建一个py文件,setup.py,里面的代码是: from setuptools import setup fro…

巧用通义灵码助力护网面试

前言 前几年护网还算是一个比较敏感的话题,但是随着近段时间的常态化开始,护网行动也是逐渐走进了大众的视野,成为了社会各界共同关注的安全盛事。本篇也是受通义灵码备战求职季活动的启发,结合近期要开始的护网行动&#xff0c…

持续集成06--Jenkins构建触发器

前言 在持续集成(CI)的实践中,构建触发器是自动化流程中不可或缺的一环。它决定了何时启动构建过程,从而确保代码变更能够及时地得到验证和反馈。Jenkins,作为业界领先的CI/CD工具,提供了多种构建触发器选项…

2.I/O口

I/O输出(点灯) 分析电路 看电路图&#xff0c;元器件形成电压差&#xff0c;即可点亮LED灯 代码编写 使用不同操作进行LED控制 #include "reg52.h" //51单片机头文件 #include <intrins.h> sbit LED1 P1^0; //引脚初始化&#xff1a;P1^0&#xff1a;对应引脚…

RocketMQ~架构与工作流程了解

简介 RocketMQ 具有高性能、高可靠、高实时、分布式 的特点。它是一个采用 Java 语言开发的分布式的消息系统&#xff0c;由阿里巴巴团队开发&#xff0c;在 2016 年底贡献给 Apache&#xff0c;成为了 Apache 的一个顶级项目。 在阿里内部&#xff0c;RocketMQ 很好地服务了集…

字符串类中的常用方法

1 string对象的创建 静态创建 String s1  "abc";  String s2  "abc";  动态创建 String s3  new String("abc"); String s4  new String("abc"); 2string对象的不可变性 任何一个String对象在创建之后都不能对它的…

甲方建设项目的数智化管理

在军工、石化、电力、民航、食品等大型集团企业和政府机构中&#xff0c;基建、IT、技改等各类固定投资项目属于甲方建设型项目。这类项目无论是EPC总包还是按合同分包&#xff0c;都具有业主型、项目干系人多、跨组织协作频繁、全生命周期管理复杂等特点。如何高效地管理这些甲…

基于LAMMPS模拟岩石表面润湿性

润湿性是指不相混的两相流体与岩石固相表面接触时&#xff0c;其中一相流体沿着岩石表面铺开的现象&#xff0c;该相称为润湿相。润湿性一般采用接触角法来确定&#xff0c;通常根据水在固体表面的角度θ来定义系统的润湿性&#xff0c;接触角为0&#xff5e;75为水润湿&#x…

gihub导入gitee仓库实现仓库同步

昨天在GitHub里导入了gitee仓库&#xff0c;但是在仓库同步这里卡了很久&#xff0c;因为网上大多数都是从github导入gitee&#xff0c;然后github生成token放入实现同步&#xff0c;但是我找到一种更为方便的&#xff01; 1.首先找到项目文件下的.git文件里的config文件 2.在…

C++ | Leetcode C++题解之第238题除自身以外数组的乘积

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<int> productExceptSelf(vector<int>& nums) {int length nums.size();// L 和 R 分别表示左右两侧的乘积列表vector<int> L(length, 0), R(length, 0);vector<int> answer(l…

求解答word图标变白

把WPS卸载了之后就变成白色了&#xff0c;然后在注册表中把word的地址改成office word的地址之后图标变成这样了&#xff0c;怎么办

在国产芯片上实现YOLOv5/v8图像AI识别-专栏目录及必备知识点及相关设备

本专栏主要是提供一种国产化图像识别的解决方案&#xff0c;专栏中实现了YOLOv5/v8在国产化芯片上的使用部署&#xff0c;并可以实现网页端实时查看。根据自己的具体需求可以直接产品化部署使用。 学习本专栏内容需要准备以下硬件设备&#xff1a; 1、RK3588开发板 2、带有 显…

《藏语翻译通》App功能升级,支持藏文词典在线查单词!iPhone用户推荐使用的藏语学习工具!

《藏语翻译通》App上线了藏文词典查单词功能&#xff0c;该功能可以帮助你更有效地学习藏语&#xff0c;以及掌握工作中涉及到的专业术语。本次更新提供了藏汉词典、藏汉大词典、新术语在线查单词功能。 打开App Store搜索关键词&#xff1a;藏文词典 下载这个官方软件 点击首…