【无标题】实时系统Preempt RT与Xenomai之争!谁更主流,谁更实时?

news2024/9/23 17:19:40

选择争论一直存在

大家知道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实时系统平台支持列举

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【ssh】pycharm链接远程服务器出现:Bad owner or permissions on C:\\Users\\用户名/.ssh/config

一直以来是用的pycharm,最近改用了vscode登录,并配置了config文件实现了vscode自动连接远程服务器,但是回到pycharm发现terminal端口不管用了,电脑上的powershell也是链接不上远程服务器并报错Bad owner or permissions。 【解决…

算法06-搜索算法

算法0X-XX 总结大纲要求搜索算法-深度优先搜索例1:全排列放置扑克牌的案例n皇后案例 搜索算法-广度优先搜索 总结 本系列为C算法学习系列,会介绍 算法概念与描述,入门算法,基础算法,数值处理算法,排序算法&#xff0…

Vue3学习(四)服务器部署

注意后端SpringBoot需要提前安装Java1.8的环境和Mysql5.7的数据库 SpringBoot 打包后Jar包需要配置数据库 application.yml 文件 配置服务器数据库的IP和密码 ifconfig 查看内网IP,然后配置。 Vue配置 .env.prod VITE_ENV prod VITE_BASE_URL http://qing.vu…

线性回归与逻辑回归

文章目录 介绍1 实现简单示例函数1.1 提交解决方案 2 单变量线性回归2.1 绘制数据接下来需要实现数据可视化的代码,该部分数据绘制出的图像应与如下相同 2.2 梯度下降2.2.2 实现2.2.3 计算成本J(θ)2.2.4 梯度下降2.3 可视化成本函数 选做练习3 多变量线性回归3.1 特…

08-属性描述符Object.getOwnPropertyDescriptor(),原始数据不可重写

把原始数据作为属性值传入新对象中,发生原始数据修改丢失的问题怎么办? 应该使用Object.defineProperty()设置该属性用Object.defineProperty()设置的属性,默认writable、enumerable、configurable均为false并且自定义提醒该属性设置了不可重…

深度学习与机器学习区别

深度学习与机器学习区别 本文目录: 一、特征提取方面 1.1、机器学习 1.2、深度学习 1.3、机器学习特征提取 1.4、深度学习特征提取 1.5、深度学习特征提取例子 二、数据量和计算性能要求 三、算法代表 3.1、朴素贝叶斯算法 3.2、决策树 四、神经网络 一、…

pyspark报错 ‘DataFrame‘ object has no attribute ‘iteritems‘

修改pandas版本即可 我环境spark3.3.2 python3.9 numpy 1.25.0

AutoSAR系列讲解(入门篇)3.3-RTE对Ports的支撑(上)

目录 一、特征 1、扮演SWCs和BSW的交流途径 2、其他特征 二、S/R接口的不同方式 1、直接调用(Direct) 2、缓存调用(Buffered) 3、队列调用(Queued) 三、跨ECU的方式 一、特征 1、扮演SWCs和BSW的交…

数据分析入门-SARIMA模型案例分析(超详细)

由于代码中注释已经非常的清晰,文章中就不过多叙述了,直接上代码。 代码如下: # 在开始之前先导入所需要的包import warnings # do not disturbe mode warnings.filterwarnings(ignore)import numpy as np …

ChatGPT批量生成文章软件:创意无限,智能驱动文章

随着人工智能技术的不断发展,ChatGPT批量生成文章软件成为了当今互联网世界中备受瞩目的创新之一。作为一种基于大规模预训练语言模型的自然语言处理工具,ChatGPT能够以人类般的方式与用户进行对话,并且能够生成高质量的文章。这一技术的出现…

【LLMs系列】没钱玩GPT-4?来试试Mini-GPT4吧!

一、MiniGPT-4尝鲜 还在苦苦等待GPT-4开放?开源项目MiniGPT-4就能提前体验类似GPT-4的多模态对话功能。 2023年4月17日,多模态问答模型MiniGPT-4发布,实现了GPT-4里的宣传效果 《MiniGPT-4: Enhancing Vision-language Understanding with …

GDB常用调试方法及其底层原理

本文分为两个大模块,第一部分记录下本人常用到的GDB的调试方法和技巧,第二部分则尝试分析GDB调试的底层原理。 一、GDB调试 要让程序能被调试,首先得编译成debug版本,当然release版本的也能通过导入符号表来实现调试&#xff0c…

Centos7下tensorflow 2.12无法找到NVIDIA Tesla T4 GPU终极解决方法

目录 背景 系统信息 GPU信息 关键软件信息 问题现象 原因分析

解决element-ui消息提示$message重叠问题

在进行表单校验的时候,当触发两个提示消息的时候会出现上面的叠加情况,没有将提示消息分开显示,这样就给用户造成不好的视觉效果 我们的预期效果是达到上面的显示效果,就是在进行提示的时候,如果叠加就需分开显示&…

Centos8同步时间(阿里云NTP服务为例)

一、安装chrony sudo dnf install chrony二、使用 sed 命令一键完成配置 #pool 2.centos.pool.ntp.org iburst给这一行加注释 sudo sed -i s/^pool 2.centos.pool.ntp.org iburst/#&/ /etc/chrony.conf #添加3个阿里云NTP服务器 echo -e "server ntp1.aliyun.com ib…

withContext CoroutineScope协程切换,kotlin

withContext CoroutineScope协程切换&#xff0c;kotlin <dependency><groupId>org.jetbrains.kotlinx</groupId><artifactId>kotlinx-coroutines-core</artifactId><version>1.4.2</version></dependency> import kotlinx.co…

python 上传包到pypi

参考 https://www.jianshu.com/p/81fe5a5cd27a 1.打包 在pypi注册账号&#xff0c;并新建token 需要在用户下创建一个.pypirc文件。username__ token __ 是固定的&#xff0c;password 填入刚刚的token。 使用下面两个命令把dist中文件推送到pypi python setup.py sdist…

AI读心重磅突破登Nature!AI破译大脑信号

近日&#xff0c;洛桑联邦理工学院团队在Nature上提出了一种名为CEBRA的可实现AI读脑的最新算法&#xff0c;以高精度捕捉到了动物大脑的动态。 利用AI&#xff0c;一个研究团队「看见」了老鼠眼中的电影世界。更神奇的是&#xff0c;这种机器学习算法&#xff0c;还能揭示大脑…

【以太坊】本地搭建以太坊测试网络,部署合约

文章目录 工具建议参考测试 工具 Ganache 建议 推荐使用 Ganache 搭建&#xff0c;简单易上手 参考 https://www.npmjs.com/package/ganache 测试 npm install ganache --global && ganache --help ganache

[230609] 阅读TPO57汇总|9:30-10:50

TPO57 01 Pests and Pesticides [3]修辞目的题 修辞目的题做题技巧&#xff1a;找观点&#xff01;不能推理&#xff01;一般找例子前后的观点&#xff01; P3段 段意即观点&#xff0c;观点在段首或段尾&#xff01; 考察比较的作用 主要理解In other words后面的话&#…