强实时应用环境下VxWorks, Linux, RTAI和Xenomai系统的性能比较

上传人:豆浆 文档编号:755315 上传时间:2017-05-13 格式:DOC 页数:6 大小:471KB
返回 下载 相关 举报
强实时应用环境下VxWorks, Linux, RTAI和Xenomai系统的性能比较_第1页
第1页 / 共6页
强实时应用环境下VxWorks, Linux, RTAI和Xenomai系统的性能比较_第2页
第2页 / 共6页
强实时应用环境下VxWorks, Linux, RTAI和Xenomai系统的性能比较_第3页
第3页 / 共6页
强实时应用环境下VxWorks, Linux, RTAI和Xenomai系统的性能比较_第4页
第4页 / 共6页
强实时应用环境下VxWorks, Linux, RTAI和Xenomai系统的性能比较_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《强实时应用环境下VxWorks, Linux, RTAI和Xenomai系统的性能比较》由会员分享,可在线阅读,更多相关《强实时应用环境下VxWorks, Linux, RTAI和Xenomai系统的性能比较(6页珍藏版)》请在金锄头文库上搜索。

1、课程:嵌入式系统 作业:文献翻译 电工理论与新技术 _130501_徐浩泽_YS1310501037 如有需要可提供电子版强实时应用环境下 VxWorks, Linux, RTAI 和 Xenomai 系统的性能比较A. Barbalace, A. Luchetta, G. Manduchi, M. Moro, A. Soppelsa, and C. Taliercio摘要:使用配置 MPC7455 PowerPC 处理器的 VMEbus MVME5500 开发板对Wind River VxWorks, Linux, RTAI 和 Xenomai 四种不同操作系统进行性能测试。以一个时间实时应

2、用的框架为例对中断延迟,重调度和程序间通信时间进行比较。对 Gb 以太网通信的性能测试也在目标板上进行。为达成此目的,我们将 Linux IP stack 和 RTnet,Xenomai 和 RTAI 的一种开源强实时通信协议移植到所用的系统中。测试结果显示被测的开源软件适用于强实时应用环境。关键词:实时系统,Linux, RTAI, Xenomai, ADEOS, RTnet, VxWorks, PowerPC.1. 简介自 1998 年以来,实时反馈控制系统已经被广泛应用于 RFX-mod 实验。RFX-mod 是一个用于研究磁约束热核聚变的环形装置,坐落于意大利的帕多瓦。目前在使用的有

3、7 个控制单元,每个单元都包含一个使用摩托罗拉 MVME5500 单板机和其他 ADC/DAC 转换器以及其他数字接口板的模组箱。控制单元组成控制网络,数据在各单元间进行实时交换。一个提供了通用功能以及数据处理和通信功能的软件框架已经在 VxWorks 平台上搭建起来。VxWorks 被广泛应用于物理学研究的原因包括:提供了一个集成开发环境,简化了开发过程。程序在被下载到目标系统之前可以在主系统中做开发和仿真。提供了一个强大的多任务化环境,任务有固定的优先级,可以通过一组丰富的进程间通信(IPC)机制进行通信。VxWorks 的软件模式与 UNIX 非常相似,尤其是 I/O 和网络,对于熟练使

4、用UNIX 的开发者来说,编程变得非常简单。但是,近年来,Linux 系统的蓬勃发展使得将其应用于实时控制系统变得极富吸引力。但是对于数据采集,或者更广泛的说,对于所有不需要严格的时间确定性的任务,Linux 已经被应用于科学实验当中。但是 Linux 的一些特性使其不能被直接应用于实时应用,例如:动态优先级。使用随时变动的优先级是解决分时的一个好方法,但是可能会使一个紧急事件无法足够快的拿到 CPU 权限。分页。可能会引入额外的延迟除非将页在内存中锁定。内存管理单元的重新映射。用户程序占用 CPU 时重新映射进入内存管理单元(MMU )的页面表会减缓上下文切换。粗粒度的同步。由于内核为非先发

5、式,有时系统无法响应冗长的内核操作时。最近的 2.6 版本 Linux 内核为以上问题提供了解决方案。事实上将固定优先级与过程子集想联系是可能的,这一版本的内核通过精确定义不可中断的程序段和自旋锁保护而不是禁止中断已经被定制为先发制人的了。此外 Linux kernel 2.6 提供了一个新的 O 调度的实现。考虑到交互可以被禁止,而且,给定了级别范围,优先级可以被固定,我们可以将 Linux 暂时考虑成一个软实时操作系统并因此可以被应用于许多可以忍受偶尔的系统响应延迟的场合。但是 Linux 2.6 仍然不适用于聚变反应反馈课程:嵌入式系统 作业:文献翻译 电工理论与新技术 _130501_

6、徐浩泽_YS1310501037 如有需要可提供电子版控制这种强实时场合,在这种情况下,事实上,不可预测的反应时间可能恶化控制的质量,或者更糟糕的是,导致不可恢复的不稳定性。然而,在引用文献4和5中,借助脉冲性质的实验,Linux 已经被成功的应用到了强实时场合。在这种情况下,大多数的时间过程控制系统不需要运行在实时模式。只有在等离子放电这一在大多数现有聚变实验中只持续数秒的过程中才需要实时控制。因此当需要进行实时操作时禁止中断是可行的,这实现了一个循环周期 12s 的整体抖动。在禁用中断时,尤其要注意:代码和数据必须被锁定到内存中来防止页面错误,软件不能依赖系统服务控制 I/O。因此除了轮询

7、输入数据和写输出数据,控制代码不能与外部环境通信,对于一个固定的迭代次数,使用预配置的地址窗口。这个解决方案尽管在特定的应用程序成功,仍然有各种各样的原因使其不能被认为是一个结论,最主要的是因为在下一代聚变装置中,控制系统被期望用于控制长时间放电,或者准稳态过程。2. Linux 系统的实时扩展我们主要希望能找到一种方法,给Linux 增加一些定义新的实时任务的可能性,从而保证在它们已经准备好运行时,能在一个确定的时间内获得控制。这个特性是由两个开源 Linux 扩展: RTAI 和 Xenomai提供。RTAI 和 Xenomai 大多数概念相同(他们源自同一个项目),都代表而不是代替了 L

8、inux,一个结合 Linux 工作的额外的组件,处理的实时任务的调度,让 Linux 提供所有剩余的功能。但是,为了与 Linux 配合,额外的组件和 Linux 共享底层硬件是必要的。通过使用 ADEOS 超微内核作为硬件功能的代理,RTAI 和 Xenomai 都实现了这种共享。特别的,ADEOS 通常掌控硬件中断,并为其他组件传播通知序列。所以,Linux 和RTAI(或 Xenomai)代表 ADEOS 域,并由超微内核作为管线从逻辑上组织起来。声明在流水线前端的组件将先接收到中断通知,然后可以决定 ADEOS 是否让它们沿着域管传播。在 RTAI(或Xenomai)位于管道前端因而

9、优先于 Linux的情况下,可以忽略 Linux 的实际运行,确定响应时间。如 图 1 所示这个组织在Xenomai 中已经完全实现。图 1 Xenomai 分层图 2 RTAI 的分层如 图 2 所示 RTAI 有稍微不同的组织形式,与 Xenomai 让 ADEOS 掌控所有的中断源不同的是,RTAI 拦截它们,使用ADEOS 将那些 RTAI 不感兴趣的中断通知送给 Linux(也就是,中断不影响实时时序)。这样混合过程的目的是提高性能,因为课程:嵌入式系统 作业:文献翻译 电工理论与新技术 _130501_徐浩泽_YS1310501037 如有需要可提供电子版在这种情况下,如果中断是要

10、唤醒一个实时任务,就避免了由 ADEOS 管理中断的开销。RTAI 和 Xenomai 都有一个活跃的开发者社区,都可以作为一个 VxWorks 的开源替代。为了评估是否适合我们的目标,我们进行了一组测量比较了Linux, RTAI, Xenomai 和 VxWorks 的性能。我们使用 PowerPC 架构,使用摩托罗拉 MVME5500 单板机,这个选择的原因是PowerPC 构架在执行浮点运算时性能要优于 x86 构架。此外,在开发 RFX-mod 的实时控制系统时,我们得到一个非常有价值的经验:使用 PowerPC 系列处理器提供的向量构架组件((AltiVec)进行并行浮点运行。但是

11、,RTAI 还没有往 PowerPC 构架进行移植,ADEOS 也有程序错误而无法在我们的平台上应用。因此,为了在MVME5500 单板机上使用 RTAI 和Xenomai(两者都在 ADEOS 分层)我们先开发了一个补丁集。3. MVME5500 平台上LINUX,ADEOS ,RTAI和 XENOMAI 的移植为了将 Linux, ADEOS, RTAI 和 Xenomai 移植到目标板上,我们开发了一些补丁。为了安装 Linux,Vanilla Linux Kernel v 2.6.14 使用了一个从摩托罗拉公司获得的补丁。但是我们必须开发一个附加的补丁修正一些 VME 数据存取中的错误

12、。超微内核 ADEOS 已经被移植到 PowerPC 架构,但是有一个程序错误使其不能被应用于使用 Galileo GT-64260 系统控制器的所有平台。我们在一个新的补丁中已经修正了这个错误。安装 Xenomai 时并未做任何改动,因为已经有 PowerPC 使用的版本,而且不需要特定板支持。Xenomai 已经在 AEDOS完全分层。RTAI 没有 PowerPC 可用的版本,所以需要进一步的开发。最后,RTnet不需要额外的开发。ADEOS 和 RTAI 两个系统开发的补丁已经被集成在官方的配置中。在 RFX-mod官网上可以得到 MVME5500 板的所有Linux 补丁。由于目标板

13、是无盘的,系统引导首先由厂商提供的引导装载程序 Motload 完成。Motload 使用普通文件传送协议 (TFTP)从服务器下载内核。Linux 使用网络文件系统(NFS)进行文件输入/输出。4. 性能测定为了评估性能,我们重点关注两个特性:中断延迟和延期时间。我们使用一个测试程序,acqloop,通过 VME 总线从ADC 获得 64 个 cannel 产生一个输出到DAC 板,对应于获得的第一个信号。虽然很简单,这个程序可以测试我们感兴趣的特性,因为当一组新的数字化数据已经准备好后 ADC 会产生一个中断。通过用示波器测量一个输入信号和系统的输出间的延迟,我们可以对系统的总体性能进行非

14、扰乱性的测量,测定中断延迟和延迟时间的不同。整体延迟中的其他部分实际上是对 VME I/O 的访问引起的,在所有被测系统中可以认为是相同的。最后,我们考虑网络实时通信,因为大多数聚变装置的控制系统都涉及实时通信。RTAI 和 Xenomai 都依靠 Linux IP 堆栈实现网络通信。因此我们首先扩展我们的测试程序 acqloop,通过以太网连接和使用 UDP 协议在另一块板上生成输出信号,对 VxWorks 和 Linux 的 IP 堆栈性能进行了比较。我们对 UDP 协议感兴趣是因为它正在被现有的控制系统 RFX-mod 用于实时通信。然后我们考虑用一个开源项目 RTnet,实现实时网络通

15、信。RTnet 实现了一种新的IP 堆栈 (对于 UDP),非确定性的原因被精确的避免了。特别的,为了避免内存动态分配,数据包的内存分配由预分配所有需要提前的缓冲区实现。RTAI 和 Xenomai 都课程:嵌入式系统 作业:文献翻译 电工理论与新技术 _130501_徐浩泽_YS1310501037 如有需要可提供电子版可以使用 RTnet。在第一轮测试中,我们关注被测系统中断延迟时间的差别。该情况下,acqloop首先安装一个中断服务程序(ISR) ,直接读取 ADC 数据寄存器并写入 DAC(通过VME) 。对于 VxWorks (v 5.5.1) acqloop 为一个 C 函数实现,

16、然后由 shell 调用,所有代码运行在本机的内核模式。其他系统,这段代码集成为 Linux 模块,因为它必须在内核模式执行。整个测量延迟是由于完成以下工作所需的时间组成:1) ADC 板用于 AD 转换;2) 控制板上的 VME 芯片用于检测VME 中断,并将其传播到系统控制器;3) 操作系统(OS)来处理中断和调用副 ISR;4) ISR 从 VME 读 ADC 数据;5) ISR 向 DAC 写输出值;6) DAC 转换器输出相应的电压值以上各段时间,只有第三段依靠操作系统实现。因此,被测系统的不同的测量延迟突出表现中断延迟的差异。测得的时间如 图 3 所示图 3 无重调度的测量延迟和抖动整体性能数据是相似的,最快的(VxWorks) 和最慢的 (Xenomai)约有 5%的差别。进一步分析表明 RTAI 和 Xenomai的差异是因为在 Xenomai 中,中断总是首先被调度进入超微内核,这就 Linux 而言引入一个小的开销。相反的,RTAI 在管理中断时旁

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号