0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

Tronlong创龙科技 来源: Tronlong创龙科技 作者: Tronlong创龙科技 2023-12-08 16:33 次阅读

版权声明:本文主要内容基于“北京盟通科技有限公司”授权提供的文件,由“创龙科技”进行整理得出。感谢“盟通科技”的慷慨支持,让更多人了解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为代表的双内核方案的原理图。

wKgZomTtkQCAewncAADv6oTnNLY380.png

图 1Xenomai双内核方案原理图

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

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

wKgZomTtkQGAQQwbAAFK0FhGDbo953.png

图 2Preempt 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实时拓展,主要平台如下。更多型号或细节内容,欢迎与我们联系。

wKgaomTtkQCAQN7KAAEuB5Vh9IA036.jpg

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


审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5056

    文章

    18955

    浏览量

    301665
  • ethercat
    +关注

    关注

    18

    文章

    631

    浏览量

    38533
  • Xenomai
    +关注

    关注

    0

    文章

    10

    浏览量

    7967
  • preempt-rt
    +关注

    关注

    0

    文章

    4

    浏览量

    1700
  • 创龙科技
    +关注

    关注

    2

    文章

    130

    浏览量

    7694
收藏 人收藏

    评论

    相关推荐

    迅为瑞芯微RK3568开发板/核心板《iTOP-3568开发板实时系统使用手册》

    iTOP-RK3568开发板使用手册上新,后续资料会不断更新,不断完善,帮助用户快速入门,大大提升研发速度。 iTOP-RK3568开发板支持了Preemption和Xenomai实时系统
    发表于 10-31 09:53

    航电实时测试系统解决方案

    航电实时测试系统主要应用于航空座舱的实时测试。座舱测试过程中,输入和输出信号的实时性至关重要,尤其是在多任务操作时,必须保证系统稳定的loo
    的头像 发表于 10-23 15:34 168次阅读
    航电<b class='flag-5'>实时</b>测试<b class='flag-5'>系统</b>解决方案

    迅为RK3568开发板/核心板助力实时系统

    iTOP-RK3568开发板使用手册上新,后续资料会不断更新,不断完善,帮助用户快速入门,大大提升研发速度。 iTOP-RK3568开发板支持了Preemption和Xenomai实时系统
    发表于 09-26 11:29

    新书发布——《RT-Thread嵌入式实时操作系统内核、驱动和应用开发技术》

    我们非常高兴地宣布,由郑苗秀、沈鸿飞和廖建尚编著的《RT-Thread嵌入式实时操作系统内核、驱动和应用开发技术》一书正式发布。本书的编写团队由多位在嵌入式和实时操作
    的头像 发表于 09-03 08:06 383次阅读
    新书发布——《<b class='flag-5'>RT</b>-Thread嵌入式<b class='flag-5'>实时</b>操作<b class='flag-5'>系统</b>内核、驱动和应用开发技术》

    实测14us,Linux-RT实时性能及开发案例分享—基于全志T507-H国产平台

    得出数据。 图1表 2 Linux-RT实时性测试数据 根据不隔离CPU核心、隔离CPU核心三种状态的测试结果可知:当程序指定至隔离的CPU3核心上运行时,Linux系统延迟最低,可有效提高
    发表于 07-25 15:58

    工业实时操作系统对比:鸿道Intewell跟rt-linux有啥区别

    Intewell和RT-Linux是两种不同的实时操作系统(RTOS),它们具有各自独特的特点和优势。以下是Intewell操作系统的一些关键特性,以及与
    的头像 发表于 07-03 10:00 388次阅读
    工业<b class='flag-5'>实时</b>操作<b class='flag-5'>系统</b>对比:鸿道Intewell跟<b class='flag-5'>rt</b>-linux有啥区别

    PROFINET实时性分析-RT与IRT区别

    1、引言 在工业自动化领域,尤其在基于以太网的通信协议中,PROFINET作为一种高性能、开放且灵活的工业以太网标准,备受青睐。其中,PROFINET RT实时)和IRT(等时实时)是其针对
    的头像 发表于 06-12 13:37 1994次阅读
    PROFINET<b class='flag-5'>实时</b>性分析-<b class='flag-5'>RT</b>与IRT区别

    基于全志T507-H的Linux-RT实时性测试案例分享

    内核开源、免费、功能完善。 RT PREEMPT补丁,使Linux内核成为硬实时操作系统,无需完整的内核重写。 既有实时性,又有相同的开发
    发表于 06-03 09:50

    实时操作系统RT-Thread及FreeRTOS

    RT-Thread与其他很多RTOS如FreeRTOS的主要区别之一是,它不仅仅是一个实时内核,还具备丰富的中间层组件,如下图所示。FreeRTOS和RT-Thread是两种常见的嵌入式实时
    的头像 发表于 05-29 08:10 3302次阅读
    <b class='flag-5'>实时</b>操作<b class='flag-5'>系统</b>之<b class='flag-5'>RT</b>-Thread及FreeRTOS

    新书发布——《实时操作系统应用技术:RT-Thread与ARM编程实践》

    RT-Thread又一本新书《实时操作系统应用技术——基于RT-Thread与ARM的编程实践》发布,标志着RT-Thread生态和
    的头像 发表于 05-11 08:35 670次阅读
    新书发布——《<b class='flag-5'>实时</b>操作<b class='flag-5'>系统</b>应用技术:<b class='flag-5'>RT</b>-Thread与ARM编程实践》

    实时级嵌入式系统半实物仿真测试平台ETest

    产品简介** ETest_RT是一款具有高实时性的嵌入式系统半实物仿真测试平台(Embedded System Real Time Test Studio RT,简称:ETest_
    发表于 04-25 17:01

    实测14us,Linux-RT实时性能及开发案例分享—基于全志T507-H国产平台

    ,Linux系统延迟最低,可有效提高系统实时性。故推荐对实时性要求较高的程序(功能)指定至T507-H隔离的CPU核心运行。 Linux-RT
    发表于 04-18 10:21

    带你认识实时操作系统(rtos)

    操作系统与传统的操作系统相比,它注重于实时性能的保证,确保系统能够在严格的时间限制条件下准确及时的响应处理。
    的头像 发表于 04-16 16:30 1071次阅读
    带你认识<b class='flag-5'>实时</b>操作<b class='flag-5'>系统</b>(rtos)

    使用 PREEMPT_RT 在 Ubuntu 中构建实时 Linux 内核

    盟通技术干货构建实时Linux内核简介盟通技术干货Motrotech如果需要在Linux中实现实时计算性能,进而有效地将Linux转变为RTOS,那么大多数发行版都可以打上名为PREEMPT_RT
    的头像 发表于 04-12 08:36 2032次阅读
    使用 <b class='flag-5'>PREEMPT_RT</b> 在 Ubuntu 中构建<b class='flag-5'>实时</b> Linux 内核

    【飞凌 OK113i-C 全志T113-i开发板】测试实时系统

    延时更加稳定,平均延时、最大延时更低,系统实时性更佳PREEMPT-RTxenomai在buildroot里面,大家可以选择xenomai
    发表于 12-25 09:50