RK3588增加Xenomai3实时补丁

RK3588增加Xenomai3实时补丁

说明:

客户要求RK3588使用Xenomai3做实时操作系统.

Xenomai官网:

https://xenomai.org/

主要参考:

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,并且划分作用域。

img

打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

查看以上链接

img

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

img

make menuconfig ARCH=arm64

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

img

内核的相关配置就结束了。

编译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 

加压力测试以测试实时性和空闲状态下比较。
img

想实时性更好则:
img

posted @ 2025-09-05 08:31  潇汀  阅读(150)  评论(0)    收藏  举报