广州菱控自动化科技有限公司
主营:欧姆龙,三菱,安川,Pro-face
首页 > 解决方案 > 机械_嵌入式 > 使用嵌入式 Linux 进行实时系统开发
行业类别
全部 航空航天 新能源 冶金 石油 石化 化工 汽车 建材 包装 造纸印刷 纺织印染 机械 机床 木工 矿业 塑胶 交通 铁路 机场 港口 仓储 物流 能源 电力 输配电 水利 环保水处理 电子 食品饮料 制药医疗 烟草 电梯 网络通讯 市政 商业 楼宇 安防 锅炉供暖 制冷 金融保险 邮政 广电 军工 机器人 其它
产品类别
全部 PLC 变频器 伺服 DCS 触摸屏 传感器 机器视觉 仪器仪表 工业以太网 现场总线 工控机 嵌入式 数据采集 软件 低压电器 数传 电源 数控 机柜箱体 工具 单片机 流体 工业安全 安防 媒体 其它

使用嵌入式 Linux 进行实时系统开发

发布日期:2025/8/2

对于实时、决策或者低延时应用,Linux能够提供多种方案。第一种方法是和 Linux 内核一起运行一个 hypervisor或者co-kernel。这种方案中hypervisor或者co-kernel的优先级高于 Linux,实时任务则运行于其中。另外一种方式是使用非对称异构多核系统,Linux和另外一个实时内核分别运行在不同处理器内核上。最后,还可使 Linux 更具抢占性从而提高其实时性能。这通常可以通过 PREEMPT_RT 补丁实现。

实时系统的实时能力,并不表示其能够达到很高的处理速度。实时能力是指系统能够在规定的时间内完成响应,这个时间可以是微秒、毫秒甚至是秒级。越小的时间范围对于系统的软件和硬件要求也会更高。本文我们使用 Toradex 计算机模块上通过三种不同的方法实嵌入式实时Linux方案。

以 200us 为单位,翻转一个 GPIO,并测试信号在翻转时候的抖动。下面是具体测试情况:

1).   普通Linux

Linux:3.14.52,CONFIG_PREEMPT_VOLUNTARY=y

92%的翻转抖动在40us以内,最糟糕的情况是超过15ms的延时。普通的 Linux很难保证每次任务都在规定的时间内完成,即使我们把响应时间上线放宽到10ms。

2).   Real-timeLinux – PREEMPT_RT

Linux:3.14.52,PREEMPT_RT_FULL<p CxSpLast" style="margin-left:18.0pt">PREEMPT_RT 

在使用 PREEMPT_RT 补丁后,几乎所有的任务都在 40us.相比于普通 Linux,抖动分布更加集中在10 us以内,并且最大的延时为106us。

3).   Real-timeLinux – Xenomai

模块:Colibri iMX6

Linux:3.14.52,Xenomai

Xenomai 通过 co-kernel 的方式提供高于 Linux内核优先级运行任务。同 PREEMPT_RT有相近的实时性能表现,但最大的延时为17.5us。

4).   iMX7 – HMP异构多核处理

模块:ColibriiMX7

Linux:4.1.15 onCortex-A7

FreeRTOS: v8.0.0 onCortex-M4

Colibri iMX7 在同一个处理器上集成了 Cortex-A7和 Cortex-M4 内核,Cortex-A7 上可以运行 Linux 等复杂、多任务操作系统,而 Cortex-M4 则能运行 FreeRTOS 等实时操作系统,甚至是直接运行应用程序。由于实时任务和Linux 分别运行在独立的处理器内核上,所以两者之间不会产生 CPU 资源竞争,保证 M4 内核上任务的独占性。从上面测试的结果可以看到,信号翻转几乎都在 200us 的时间点上完成,最大的抖动是0.5us。

从上面的测试中可以看到,普通的Linux内核很难保证任务的实时性,即在规定时间内完成响应。通过内核补丁,或者像Xenomai一样,引入高优先级的co-kernel,都可以很大程度上改善Linux的实时性。用户可以在不改变硬件平台的情况下实现实时应用。基于软件方式实现的实时Linux,意味着部分Linux内核API发生了变化。为了保证整个任务的实时性,用户可能需要修改部分外设驱动代码,例如CAN驱动。因为默认的外设驱动并不是针对实时Linux内核。Colibri iMX7通过硬件的方式,通过不同的处理器内核分离非实时和实时任务。

 


销售热线

销售微信