RK3588增加Xenomai3实时补丁
RK3588增加Xenomai3实时补丁
说明:
客户要求RK3588使用Xenomai3做实时操作系统.
Xenomai官网:
主要参考:
https://blog.csdn.net/qq_22654551/article/details/106038163?spm=1001.2014.3001.5502
https://www.cnblogs.com/wsg1100/p/12864199.html
步骤:
只需要打两个补丁,Dovetail或者I-pipe补丁,以及xenoma3的内核补丁。
Dovetail 是 I-pipe 的后继产品,二选一,Dovetail支持5.10之后的内核, I-pipe反之。
打Dovetail补丁
我现在内核是6.1.99,主要Dovetail的补丁是RK发放的,RK修改过的,要用有这个补丁的内核版本,没有对应内核的Dovetail补丁问FAE也没用。
在sdk里面位置 `docs/Patches/Real-Time-Performance/XENOMAI/kernel-6.1/6.1.99/`
cd kernel
git apply docs/Patches/Real-Time-Performance/XENOMAI/kernel-6.1/6.1.99/*
ps:
https://source.denx.de/Xenomai/linux-dovetail.git
有跟随内核主线维护的Dovetail的内核仓库,这个仓库就是加了Dovetail的内核,也有对应的patch但是我没有找到。
这个补丁的作用是把硬件资源抽象化ADEOS,并且划分作用域。

打xenoma3的内核补丁
作用是上图中的域2。
需要下载xenoma3的源码,
# 在sdk的根目录下 需要FQ
git clone https://source.denx.de/Xenomai/xenomai.git
cd xenomai
# 选择版本
git checkout stable/v3.3.x
# 生成patch
scripts/prepare-kernel.sh --linux=/home/yangx/linux2/yangx/RK3588/IAC-RK3588-MB-kernel-6.1/kernel/ --arch=aarch64 --outpatch=/home/yangx/linux2/yangx/RK3588/IAC-RK3588-MB-kernel-6.1/cobalt.patch
# 进入kernel 打patch即可
git apply ../cobalt.patch
配置内核选项
Wiki · xenomai / xenomai · GitLab
查看以上链接

以及这些选项配置:有的没有,尽量一致

make menuconfig ARCH=arm64
进入menuconfig的界面,打入的补丁正常的话会显示:

内核的相关配置就结束了。
编译xenoma3库
# 在sdk的根目录下
cd xenomai
source 一下NXP的编译器 或者 配置一下编译器的环境变量
source /opt/fsl-imx-wayland/6.1-mickledore/environment-setup-armv8a-poky-linux
# 生成Makefile
./scripts/bootstrap
./configure CFLAGS="-mtune=cortex-a76" LDFLAGS="-mtune=cortex-a76" --build=i686-pc-linux-gnu --host=aarch64-linux-gnu --with-core=cobalt --enable-smp CC=aarch64-linux-gnu-gcc LD=aarch64-linux-gnu-ld
# 编译 安装
make -j128
mkdir -p build && make install DESTDIR=./build/
# 之后把build下生成的文件全部复制到板子的文件系统里面即可。
测试:
# 压力
apt install memtester
apt install stress stress-ng
memtester 6G 2 >2 &
stress -c 8 --vm 1 &
stress-ng -c8 --io 8 --cpu-load 100 -vm 4 --vm-bytes 512M --timeout 10000000s
# cyclictest
apt install rt-tests
cyclictest -c 0 -m -t 8 -p 99
# 使用xenomai源码里面自带的测试工具测试
/usr/xenomai/bin/latency -t0 -p 100 -P 99 -h -g result.txt
加压力测试以测试实时性和空闲状态下比较。

想实时性更好则:

本文来自博客园,作者:潇汀,转载请注明原文链接:https://www.cnblogs.com/allalonewithyou/p/19074699,个人邮箱:yaonie4444@foxmail.com

浙公网安备 33010602011771号