2.2Xenomai3源码介绍

2.2 Xenomai3源码介绍

xenomai
├── aclocal.m4
├── autom4te.cache
├── config
├── configure
├── configure.ac
├── CONTRIBUTING.md
├── debian
├── demo
├── doc
├── include
├── kernel
├── lib
├── Makefile.am
├── Makefile.in
├── README
├── scripts
├── testsuite
├── tracing
└── utils

Xenomai 采用分离源码模型,将内核空间支持与用户空间库解耦。其中,Xenomai 内核代码位于 kernel/ 目录,用户空间代码分别位于 lib/testsuite/utils/demo/ 目录。

scripts/ 目录包含了各类脚本,包括 Xenomai 编译、构建、测试等脚本。后续章节在使用到其中的脚本时,会具体介绍。

接下来,重点介绍几个最重要的目录。

1. Xenomai 内核代码

xenomai/kernel/
├── cobalt
└── drivers

kernel/ 子目录实现了 Cobalt 实时内核代码及实时驱动程序,被视为 Linux 内核的内置扩展。至于 Mercury 核心,属于单一内核,不需要内核空间中的 Xenomai 特定代码, 由于长时间得不到反馈,目前可能也运行不起来了。

Cobalt 实时内核代码依赖于 Dovetail 实时补丁。Dovetail 补丁通过中断管道技术,对 Linux 内核的中断子系统、时间子系统、系统调用、系统调度进行了改造,以支持 Cobalt 实时内核和 Linux 内核的双内核模型。Dovetail 源码在一个独立的代码库中,并没有在 Xenomai 源码库中。

使用 scripts/prepare-kernel.sh 脚本,可以将 Xenomai 实时内核源码安装到 Linux 内核源码树中。

Linux 内核源码树在先后安装了 Dovetail 实时补丁和 Cobalt 实时内核代码后,可以通过标准的 Linux 内核配置过程(例如 make menuconfig)来定义 Xenomai 内核组件的各种设置。配置完成后,可以通过标准的 Linux 内核编译方法完成双内核的统一编译(例如 make all),生成一个包含双内核的内核映像文件。

2. Xenomai 用户空间运行库

xenomai/lib
├── alchemy
├── analogy
├── boilerplate
├── cobalt
├── copperplate
├── Makefile.am
├── Makefile.in
├── mercury
├── psos
├── smokey
├── trank
└── vxworks

lib/ 子目录包含 Xenomai 框架导出给应用程序的各种用户空间库。此树与内核支持分开构建,库的构建是为了支持选定的核心,无论是 Cobalt 还是 Mercury。

Xenomai 用户空间库原生提供了 POSIX 兼容接口,应用程序可以调用这些接口实现实时任务的创建、调度、同步、通信等。在 POSIX 接口之上,Xenomai 还模拟出了 Alchemy/pSOS/VxWorks‌ 接口,并提供了对应的用户空间运行库。除此之外, trank 目录是 Transition Kit的缩写,它提供了一个用户空间运行库,用于兼容 Xenomai 2/Native 接口。

最后,smokey 目录包含了 Xenomai 自身的单元测试框架和测试用例,与应用程序运行无关。

3. Xenomai 用户空间工具

  • xenomai/testsuite/

    • Xenomai 测试套件,包括时钟漂移测试工具 clocktest、延迟测试工具 latency 、Smokey 单元测试工具,xeno-test 基准测试、硬件测试工具等。
    • 最终安装到 /usr/xenomai/bin/ 目录。
  • xenomai/utils/

    • 包括开发测试、设备管理、系统监控、系统设置和故障诊断等工具
    • 最终安装到 /usr/xenomai/bin//usr/xenomai/sbin/目录。

上述工具的具体作用和使用方法,参考后续章节介绍。

4. Xenomai 用户空间实时应用示例

xenomai/demo/ 目录包含了 Xenomai 实时应用示例,包括 POSIX 接口和 Alchemy 接口的示例。

按功能划分,包括实时设备模型(RTDM)示例程序、RTIPC进程间通信示例程序、Linux cyclictest 移植示例。

除了关注功能之外,还可以从这些源码中学习到实时线程创建、线程同步、信号初始化与捕捉、线程调度策略、线程优先级等最佳实践。

不足之处在于,这些示例程序的 makefile 是由 autoconf 统一生成的,所以这些示例程序并不适合直接作为一般的用户空间程序单独构建。

总之,开发者可以通过这些示例程序快速上手,理解Xenomai的基本用法和高级特性。

这些实时应用示例的源码,会在后续章节中根据需要进行分析。

5. Xenomai 用户空间构建相关文件与目录

用户空间代码的构建是单独进行的,不需要依赖内核源码。Xenomai 用户空间使用 GNU Autotools(也称为 Autoconf/Automake 工具链)进行自动配置和构建。

文件/目录说明
Makefile.amAutomake 的输入文件,定义了如何构建目标(如可执行文件、库等)。
Makefile.inMakefile.am 生成的模板文件,configure 脚本会根据它生成最终的 Makefile
aclocal.m4aclocal 工具生成,包含 Autoconf 宏定义,供 autoconf 使用。
autom4te.cache/Autoconf/Automake 缓存目录,用于加速配置过程,通常不提交到版本库。
config/配置相关的脚本等。
configureconfigure.ac 生成的 shell 脚本,用于检测系统环境并生成 Makefile
configure.acAutoconf 的输入文件,定义了项目配置逻辑,如检测编译器、库、头文件等。

如果上述文件缺失,说明是直接从源码树 git clone 命令克隆。这种情况下,需要先运行 scripts/bootstrap 脚本。此脚本实际执行的是 autoreconf -fi 命令。

除此之外,debian 目录在的脚本和配置文件,用于将 Xenomai 用户空间构建并打包为 debian 软件包。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值