首页 | 供应信息 | 求购信息  | 下载系统 | 技术资讯 | 企业信息 | 产品信息 | 论文信息 | 展会信息 | 在线工具
作者: 发布时间:2016-12-27 来源:韬睿(上海)计算机科技有限公司 繁体版
对于实时、决策或者低延时应用,Linux能够提供多种方案。第一种方法是和 Linux 内核一起运行一个hypervisor或者co-kernel。这种方案中hypervisor或者co-kernel的优先级高于 Linux,实时任务则运行于其中。另外一种方式是

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


1tj自动化在线网

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

1tj自动化在线网

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


1tj自动化在线网

1).   普通Linux1tj自动化在线网

Linux:3.14.52,CONFIG_PREEMPT_VOLUNTARY=y1tj自动化在线网

1tj自动化在线网

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


1tj自动化在线网

2).   Real-timeLinux – PREEMPT_RT1tj自动化在线网

Linux:3.14.52,PREEMPT_RT_FULL1tj自动化在线网

<p CxSpLast" style="margin-left:18.0pt">PREEMPT_RT patch: https://www.kernel.org/pub/linux/kernel/projects/rt/1tj自动化在线网


1tj自动化在线网

1tj自动化在线网

1tj自动化在线网


1tj自动化在线网


1tj自动化在线网

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


1tj自动化在线网

3).   Real-timeLinux – Xenomai1tj自动化在线网

模块:Colibri iMX61tj自动化在线网

Linux:3.14.52,Xenomai1tj自动化在线网


1tj自动化在线网

1tj自动化在线网

1tj自动化在线网


1tj自动化在线网


1tj自动化在线网

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


1tj自动化在线网

4).   iMX7 – HMP异构多核处理1tj自动化在线网

模块:ColibriiMX71tj自动化在线网

Linux:4.1.15 onCortex-A71tj自动化在线网

FreeRTOS: v8.0.0 onCortex-M41tj自动化在线网


1tj自动化在线网

1tj自动化在线网

1tj自动化在线网


1tj自动化在线网

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


1tj自动化在线网


1tj自动化在线网

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

Cortex-A7采用普通的Linux内核,兼容所有的外设驱动,用户能够利用Linux系统丰富的开发资源。而实时任务由Cortex-M4完成,目前FreeRTOS所支持的外设驱动包括ADC、GPIO、I2C、UART、WDOG、SPI、CAN。Linux和FreeRTOS之间通过 rpmsg协议进行通信。1tj自动化在线网

1tj自动化在线网



使用嵌入式 Linux 进行实时系统开发
评论】【加入收藏夹】【 】【关闭
※ 相关信息
无相关信息
※ 其他信息
访问数: | 共有条评论
发表评论
用户名:
密码:
验证码: 看不清楚,点击刷新
匿名发表

 搜索新闻
[提交投稿]  [管理投稿]
 最新新闻
 热点新闻
数据加载中..

网站地图
Autooo.Net 版权所有
Copyright © 2007--2016 All rights reserved