xenomai的移植构建围绕这三部分来进行:
1.用户空间中的实时应用程序库libcobalt;
2.内核空间中的实时内核Cobalt;
3.硬件架构与Linux内核版本相关层 ipipe-core;
其中libcobalt和Cobalt的源码随xenomai更新,位于同一源码包内,ipipe-core则与硬件架构和具体linux版本相关,以补丁的方式提供,需要单独下载。ipipe-core实现必要功能的同时,也是xenomai与硬件架构、linux版本间的解耦层,社区提供了常见架构下各linux版本的补丁,目前提供的最新ipipe-core是基于linux 4.19(2020-04-16)。
xenomai的移植步骤如下:
1.环境准备;
2.对准备好的linux源码打ipip-core补丁,打cobalt内核补丁;
3.配置编译内核并安装;
4.安装libcobalt库并测试。
步骤一:环境准备
1.1 安装内核编译工具
sudo apt-get install gcc
sudo apt-get install libncurses-dev
sudo apt-get install flex
sudo apt-get install bison
sudo apt-get install openssl-dev
sudo apt-get install dkms
sudo apt-get install libelf-dev
sudo apt-get install libudev-dev
sudo apt-get install libpci-dev
sudo apt-get install libiberty-dev
sudo apt-get install build-dep
1.2 准备内核及补丁文件
内核:下载linux源码,linux内核源码网址:https://cdn.kernel.org/pub/linux/kernel/v4.x/
ipipe补丁文件:先浏览https://xenomai.org/downloads/ipipe/v4.x/看xenomai提供了哪些linux版本的补丁,再去下载对应linux内核源码,并下载与linux版本对应的ipipe-core补丁。
xenomai内核源码包:到https://xenomai.org/downloads/xenomai/stable/下载最新版的xenomai源码包。
最终选择如下:
linux kernel:linux-4.19.114.tar.xz
ipip-core:ipipe-core-4.19.114-cip24-x86-12.patch
xenomai:xenomai-3.1.tar.bz2
用mkdir命令创建目录/homw/work/xenomai,并将上述文件copy到/homw/work/xenomai中。
mkdir /homw/work/xenomai
cp ~/Downloads/linux-4.19.114.tar.xz /homw/work/xenomai
cp ~/Downloads/ipipe-core-4.19.114-cip24-x86-12.patch /homw/work/xenomai
cp ~/Downloads/xenomai-3.1.tar.bz2 /homw/work/xenomai
步骤二:对准备好的linux源码打ipip-core和cobalt补丁
2.1 打ipipe补丁
解压linux内核源码:
cd /home/work/xenomai
sudo tar -xvf linux-4.19.114.tar.xz
进入linux内核源码目录打ipipe补丁:
cd /home/work/xenomai/linux-4.19.114
sudo patch -p1 < /home/work/xenomai/ipipe-core-4.19.114-cip24-x86-12.patch
2.2 打cobalt补丁
解压xenomai源码包:
cd /home/work/xenomai
sudo tar -xvf xenomai-3.1.tar.bz2
进入xenomai源码目录scripts,使用脚本prepare-kernel.sh对linux内核源码打cobalt内核补丁;
cd /home/work/xenomai/xenomai-3.1/scripts
sudo ./prepare-kernel.sh --linux=/home/work/xenomai/linux-4.19.114 --arch=x86_64 --outpatch=/home/work/xenomai/cobalt-core-3.1-4.19.114.patch
cd /home/work/xenomai/linux-4.19.114
sudo patch -p1 < …/cobalt-core-3.1-4.19.114.patch
步骤三:配置编译内核并安装
3.1 xenomai 内核配置
cd /home/work/xenomai/linux-4.19.114
sudo make menuconfig
General setup —>
1.Preemption Model (Preemptible Kernel (Low-Latency Desktop)) —>
(X) Low-Latency Desktop
2.Local version - append to kernel release: -xenomai-3.1
3.Timers subsystem–>
High Resolution Timer Support (Enable)
Processor type and features —>
1.Processor family (Core 2/newer Xeon) —>
(X)Generic-x86-64 //(if “cat /proc/cpuinfo | grep family” returns 6, set as Generic otherwise)
2.[*] Multi-core scheduler support
3.[ ] CPU core priorities scheduler support
4.Enable maximum number of SMP processors and NUMA nodes (Disable)
Power management and ACPI options —>
1.CPU Frequency scaling —>
[ ] CPU Frequency scaling
2.[*] ACPI (Advanced Configuration and Power Interface) Support —>
< > Processor
3. CPU Idle —>
[ ] CPU idle PM support
Memory power savings -->
Intel chipset idle memory power saving driver (Disable)
Run-time PM core functionality (Disable)
Memory Management options —>
1.[ ] Contiguous Memory Allocator
2.[ ] Transparent Hugepage Support
3.[ ] Allow for memory compaction
4.[ ] Page migration
Device Drivers
1.Microsoft Hyper-V guest support —>
< > Micro