Xenomai 是 Linux 内核的一个实时开发框架。它希望通过无缝地集成到Linux 环境中来给用户空间应用程序提供全面的、与接口无关的硬实时性能。Xenomai 项目始于2001年8月,作为一个自由软件项目,完全遵守GNU/Linux自由软件协议。2003 年它和RTAI项目合并推出了RTAI/fusion。RTAI/fusion是Linux平台上的具有工业生产级别的实时自由软件开发平台,它基于Xenomai的抽象实时操作系统内核。2005年的时候RTAI/fusion项目又从RTAI中独立出来作为 Xenomai 项目。
与 RTLinux 类似,Xenomai 也是一种采用双内核机制的 Linux 内核的强实时扩展。在双内核技术下,存在一个支持强实时的微内核,它与Linux内核共同运行于硬件平台上,实时内核的优先级高于 Linux 内核,它负责处理系统的实时任务,而Linux则负责处理非实时任务,只有当实时内核不再有实时任务需要处理的时候,Linux 内核才能得到运行的机会。
Xenomai最新的技术架构可以访问其网站www.xenomai.org
双核(如RTLinux,RTAI,Xenomai)实时方案。运作一个real-time核心,然后将修改过的GNU / Linux核心程序码视为该实时核心的空闲任务。
在xenomai中,双内核就是Xenomai的Nucleus/Cobalt Core和Linux内核。
Xenomai改变整个系统架构,让ipipe - > xenomai scheduler来预先处理实时任务,而Linux则拉到上层成为一个任务。这样可以避免Linux因为庞大的架构而影响处理实时的时间。
一、Xenomai系统架构
xenomai的软件版本已经由2.xx版本过渡到3.xx,架构发生了较大变化,主要在实时内核不再是原来的Adeos,改由现在的cobalt。
以下是Xenomai 应用架构。
Xenomai是一个linux内核的补丁藉由在底层增加一个架构负责硬体与接收中断并将中断传给上层的OS(这边称为域)。Xenomai的两个域:
域1:Xenomai。调度核心(scheduler)为Nucleus/Cobalt,应用接口为Skin。xenomai2的调度器为Nucleus,xenomai3的调度器为Cobalt。
域2:Linux。调度核心(scheduler)为Linux原生,应用接口为Linux原生。这个底层的架构Adeos是另一个开源的项目。
二、Xenomai的特性
Xenomai 具有良好的移植性和兼容性
Xenomai 曾经一度与 RTAI 合并为一个项目,但最终还是分化为两个不同的开源项目,最重要的原因还是两者的根本目标不一致。RTAI 的目标是尽可能提高操作系统的实时性,为之牺牲其他的特性(包括可移植性和兼容性)也是可以接受的。与之相反,Xenomai 则是为了提高系统的以及实时任务程序的可移植性和兼容性,可以在一定程度上弱化对操作系统实时性的要求。由于 Xenomai 所提供的实时性能已经足以应付绝大部分的实时任务需求。而 Xenomai 对可移植性和兼容性的坚持能为笔者在实现过程中提供很大的便利。
Xenomai 拥有丰富的实时API
Xenomai 将自己的 API 称为皮肤(Skin)