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

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

3天内不再提示

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

Tronlong创龙科技 2023-07-31 16:53 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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


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


关于盟通


北京盟通科技有限公司成立于2013年,是工业自动化领域的高新技术企业,公司专注于实时现场总线技术及工业通讯技术的研发、推广及技术支持服务。依托于核心团队多年的海外和行业经验,与欧洲多家自动化领域的佼佼者战略合作,为客户提供EtherCAT主站协议栈、OPC UA SDK软件开发包、CANopen协议栈、FSoE协议软件、DINA功能安全模块及现场总线设备等标准和定制化产品,也可提供工业4.0框架内完整的通讯解决方案。


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

    关注

    88

    文章

    11817

    浏览量

    219549
  • 实时系统
    +关注

    关注

    0

    文章

    38

    浏览量

    14854
  • Xenomai
    +关注

    关注

    0

    文章

    13

    浏览量

    8238
  • preempt-rt
    +关注

    关注

    0

    文章

    6

    浏览量

    1838
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    米尔RK3506核心板SDK重磅升级,解锁三核A7实时控制新架构

    解决方案。 RT-Linux+ IGH EtherCAT:通过对标准Linux内核打入实时补丁(Preempt-RT),并集成开源IGH EtherCAT主站协议栈,使整个Linux系统
    发表于 12-19 20:35

    RK3588核心板/开发板RT-Linux系统实时性及硬件中断延迟测试

    本文介绍瑞芯微RK3588芯片平台RT-Linux系统实时性及硬件中断延迟测试,基于触觉智能RK3588核心板/开发板演示。Linux-RT实时
    的头像 发表于 11-28 18:57 1008次阅读
    RK3588核心板/开发板<b class='flag-5'>RT</b>-Linux<b class='flag-5'>系统</b><b class='flag-5'>实时</b>性及硬件中断延迟测试

    技术分享 | RK3588增加Xenomai3实时补丁

    Xenomai是一套为嵌入式系统设计的实时开发框架,通过“双内核”架构,让Linux既能处理复杂的通用任务,又能可靠地完成那些对响应时间有极端要求的任务,广泛用于工业自动化、机器人、航空航天等对
    的头像 发表于 11-27 17:29 1832次阅读
    技术分享 | RK3588增加<b class='flag-5'>Xenomai</b>3<b class='flag-5'>实时</b>补丁

    【飞凌OK-T153 开发板试用】实时性测试

    CONFIG_PREEMPT_RT root@OKT153:~# 性能模式(4 x A7@1.6G) echo performance > /sys/devices/system/cpu
    发表于 11-22 05:29

    嵌入式实时操作系统的特点

    任务的系统实时嵌入式操作系统与传统的桌面操作系统相比,注重对实时任务的响应和精确控制。它们
    发表于 11-13 06:30

    【米尔RK3506国产开发板评测】3、实时补丁以及EtherCAT IGH移植

    EtherCAT IgH需要保证高实时性,Preempt-RT是一种针对实时性能进行了优化的Linux内核。与普通的Linux内核相比,Preempt-RT具有以下优势:
    发表于 10-27 10:09

    从微秒级响应到确定性延迟:深入解析米尔全志T536核心板的实时性技术突破

    RT-PREEMPT补丁+软隔离、Xenomai、OpenAMP框架(openAMP框架基于全志V1.2SDK,其他测试项基于全志V1.1SDK) 测试工具:cyclictest、stress-ng等专业实时性测试
    发表于 10-22 17:25

    深入解析米尔全志T536核心板的实时性技术突破

    CPU隔离技术将特定核心专用于实时任务,减少系统干扰。优势:无需修改内核,配置相对简单。挑战:隔离不彻底,Linux内核活动仍可能影响实时任务,最坏情况延迟改善有限。2.3 RT-PREEMP
    发表于 10-17 17:41

    RK3576核心板/开发板RT-Linux系统实时性及硬件中断延迟测试

    本文介绍瑞芯微RK3576芯片平台RT-Linux系统实时性及硬件中断延迟测试,基于触觉智能RK3576开发板PurplePiOH2演示。Linux-RT
    的头像 发表于 09-30 16:52 2182次阅读
    RK3576核心板/开发板<b class='flag-5'>RT</b>-Linux<b class='flag-5'>系统</b><b class='flag-5'>实时</b>性及硬件中断延迟测试

    瑞芯微RK35XX系列Linux实时性详细测试对比( PREEMPT_RTXenomai

    需求。本文基于触觉智能旗下瑞芯微RK系列开发板,历经240小时实测!展开RT-Linux实时系统两大内核:PREEMPT_RTXenomai
    的头像 发表于 09-30 16:37 2120次阅读
    瑞芯微RK35XX系列Linux<b class='flag-5'>实时</b>性详细测试对比( <b class='flag-5'>PREEMPT_RT</b>和<b class='flag-5'>Xenomai</b> )

    请问rt_kprintf会影响RT-Threat系统实时性吗?

    有人说频繁调用rt_kprintf可能阻塞实时任务,影响系统响应,是这样吗?
    发表于 09-23 07:06

    RK3506开发板Xenomai内核RT-Linux实时系统适配教程与性能实测,实测仅7μs稳定延时

    本文基于触觉智能RK3506核心板/开发板,介绍Xenomai内核RT-Linux实时系统适配,并附性能实测。简介与实测数据Xenomai
    的头像 发表于 09-18 14:21 1674次阅读
    RK3506开发板<b class='flag-5'>Xenomai</b>内核<b class='flag-5'>RT</b>-Linux<b class='flag-5'>实时</b>性<b class='flag-5'>系统</b>适配教程与性能实测,实测仅7μs稳定延时

    【米尔NXP i.MX 91开发板评测】移植和运行RT-Linux,实时性能测试

    介绍 实时系统应用广泛,在工业自动化、医疗设备、汽车电子等领域扮演着十分重要的角色,我们用i.MX91开发板来移植运行RT-Linux,看看它的实时性能表现如何
    发表于 09-01 10:11

    【HZ-RK3568开发板免费体验】3、开启Linux Kernel RT功能

    Preempt-RT是一种针对实时性能进行了优化的Linux内核。与普通的Linux内核相比,Preempt-RT具有以下优势: 实时性能: Pre
    发表于 07-22 14:03

    一文读懂:嵌入式Linux实时性进阶

    深入了解。同时,对硬件支持依赖较大,不同硬件平台的支持程度不同。 ✅资源占用: PREEMPT_RT:对系统的修改程度相对较小,资源占用相对较低。 Xenomai:由于引入了额外的实时
    发表于 07-10 15:26