1.1 I-pipe与Xenomai

Interrupt Pipeline系列文章大纲-优快云博客

        如何提高Linux的实时性?有两种思路。

       第一种,对Linux内核的内部进行实时改造,尽可能减少内核不可抢占的代码。最知名的是PREEMPT_RT补丁集,在2015年成为Linux Foundation的正式项目“Real Time Linux Collaborative Project”。

       第二种,采用双内核的办法,在硬件之上运行一个实时内核,把Linux内核当成的实时内核的一个普通的进程,其代表有RTLinux、RTAI和Xenomai。

       Xenomai由Philippe Gerum在2001年发起。RTLinux既有商业版RTLinux/Pro也有社区版RTLinux/Free,申请了双内核相关专利。为了绕过RTLinux的专利,Philippe选择ADEOS作为解决方案。ADEOS来自于卡里姆Karim Yaghmour的论文《Adaptive Domain Environment for Operating Systems》。Philippe Gerum和Karim Yaghmour是《构建嵌入式LINUX系统》的共同作者。Xenomai曾在2003~2004与RTAI一起合作,开发了RTAI/fusion项目,后来在2005年Xenomai独立发展。Xenomai和RTAI分开后,二者对ADEOS的使用有所不同。Xenomai让ADEOS完全控制中断,然后分发给实时内核和Linux内核;而RTAI直接处理感兴趣的中断,把不感兴趣的中断透过ADEOS传给Linux。理论上RTAI实时性更强。但是RTAI更新速度比较慢,最新的版本是2021/5/19发布的RTAI 5.3,适配Linux 4.19,主页上宣称支持的硬件是x86和x86_64,对ARM的支持处于rework中。反观Xenomai,支持x86、x86_64、PowerPC/32、ARM、ARM64等硬件,社区活跃,版本从Xenomai2迭代到了Xenomai4。

       Xenomai2目前已经EOL,Xenomai4比较新,而Xenomai3比较稳定,处于长期维护中,应该是当前使用比较广泛的版本。这里重点学习Xenomai3.2.1版本。

       Xenomai3由两大部分构成:ADEOS和实时内核Cobalt。

       ADEOS的设计目标,是为了让多个操作系统可以共享同一套系统硬件。每个操作系统在自身的操作系统域中运行,分为两类。第一类操作系统,感知不到ADEOS的存在,只接收来自ADEOS的中断;第二类操作系统,知道ADEOS的存在,不仅接收来自ADEOS的中断,还主动与ADEOS交互。

2379232e346c4b81956eefa1204ce7e7.png

        ADEOS提出了Interrupt pipeline中断流水线的方法,可以让硬件中断在多个操作系统域中传递。先拿到中断的操作系统域,意味着有更高的优先级运行。操作系统必须找到一种方式,实现对中断的关闭与打开操作,也称为stall/unstall操做。

c70d753e9865425db810966516290fe8.png

       Xenomai3中实现的ADEOS与原论文中的有不同点:

  • Xenomai3 ADEOS仅支持2个操作系统域:Linux域(root域)和Cobalt域(head域)。
  • Linux域和Cobalt域都属于第一类操作系统,感知不到ADEOS的存在,只接收来自ADEOS的中断。Cobalt域优先接收并处理中断。
  • 原论文中,以x86架构为例,通过把Linux内核从Ring0移动到Ring1,来完成Linux对中断的关闭(stall)/打开(unstall)操作。Xenomai 3 ADEOS采取了另一篇论文《Fast Interrupt Priority Management in OS Kernels》的思想,通过virtual interrupt flag来完成Linux对中断的关闭(stall)/打开(unstall)操作。

        也许正是因为这些不同点,Xenomai3 ADEOS的项目名称并不是ADEOS,而是ipipe。以ARM64架构为例,代码仓库为:xenomai / ipipe-arm64 · GitLab。在代码仓中,Documentation/ipipe.rst描述了设计思想和基本框架。

点击查看系列文章 =》 Interrupt Pipeline系列文章大纲-优快云博客

原创不易,需要大家多多鼓励!您的关注、点赞、收藏就是我的创作动力!

资料:

Adaptive Domain Environment for Operating Systems

Fast Interrupt Priority Management in OS Kernels

[开源名人访谈录] Philippe Gerum

<think>好的,我现在需要回答用户关于如何通过`uname -a`查看Xenomai内核配置及版本信息的问题。首先,我要回忆一下Xenomai的相关知识,特别是关于系统信息的部分。 用户提到他们安装的是Xenomai3,可能使用Dovetail补丁,这在引用[3]里有提到。Xenomai通常作为实时补丁应用到Linux内核上,所以内核的版本信息应该会包含Xenomai的标识。比如,在编译内核时,可能会在版本字符串中加入Xenomai的版本号或其他标识符。 接下来,`uname -a`命令会显示内核的信息,包括版本号、构建日期等。对于Xenomai,通常会在版本字符串中包含如“xenomai”或“PREEMPT_RT”之类的关键词。例如,用户提供的引用[2]中,安装后的内核显示“5.4.105-xenomai-3.1”,这说明版本号里直接包含了Xenomai的版本。 但是,用户可能遇到的情况是,某些配置可能不会在`uname -a`中明确显示Xenomai的信息。这时候可能需要其他方法,比如检查系统日志(dmesg)或使用Xenomai提供的工具,如`xeno-info`,来确认实时内核的版本和配置。 另外,用户可能需要确认内核配置选项是否正确启用了Xenomai相关的选项。这可以通过查看内核的配置文件,通常位于`/boot/config-$(uname -r)`,搜索XENOMAI相关的配置项,比如CONFIG_XENOMAI。 总结一下,步骤可能是: 1. 运行`uname -a`,检查输出中是否有Xenomai相关标识。 2. 如果没有明显标识,使用`dmesg | grep -i xenomai`查看启动日志。 3. 使用`xeno-info`命令获取Xenomai的详细信息。 4. 检查内核配置文件中的Xenomai配置项。 需要确保回答中提到的命令和步骤都是正确的,并且符合用户的实际环境,比如他们使用的是Ubuntu系统,可能路径或命令稍有不同,但基本方法应该通用。 最后,生成相关问题时要围绕Xenomai的安装验证、配置检查以及常见问题处理,帮助用户进一步排查问题。</think>### 通过 `uname -a` 查看 Xenomai 内核信息的方法 1. **运行 `uname -a` 检查内核标识** 在终端输入命令: ```bash uname -a ``` 如果系统已正确安装 Xenomai 实时内核补丁,输出中通常会包含 **`xenomai`** 或 **`PREEMPT_RT`** 等标识。例如: ```bash Linux hostname 5.4.105-xenomai-3.1 #1 SMP ... x86_64 GNU/Linux ``` 此处 `5.4.105-xenomai-3.1` 表示内核版本和 Xenomai 版本[^2]。 2. **若未显示标识,进一步验证 Xenomai 状态** - 使用 `dmesg` 检查启动日志: ```bash dmesg | grep -i xenomai ``` 若输出包含 `Xenomai: real-time core initialized`,则表明 Xenomai 已加载[^3]。 - 运行 Xenomai 工具 `xeno-info`: ```bash sudo xeno-info ``` 该命令会明确输出 Xenomai 版本、内核配置和实时性支持状态。 3. **检查内核配置文件** 内核配置通常位于 `/boot/config-$(uname -r)`,使用以下命令查看 Xenomai 相关选项: ```bash grep CONFIG_XENOMAI /boot/config-$(uname -r) ``` 若输出 `CONFIG_XENOMAI=y`,则说明内核已启用 Xenomai 支持[^3]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值