首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >RK3506开发板Xenomai内核RT-Linux实时性系统适配教程与性能实测,实测仅7μs稳定延时

RK3506开发板Xenomai内核RT-Linux实时性系统适配教程与性能实测,实测仅7μs稳定延时

原创
作者头像
Industio_触觉智能
修改2025-09-18 18:10:10
修改2025-09-18 18:10:10
4600
代码可运行
举报
文章被收录于专栏:Linux嵌入式Linux嵌入式
运行总次数:0
代码可运行

本文基于触觉智能RK3506核心板/开发板,介绍Xenomai内核RT-Linux实时性系统适配,并附性能实测。

Xenomai简介与实测数据

  • Xenomai简介

XEnomai是一个实时子系统,可与Linux内核紧密集成,为应用程序提供可预测的响应时间。它采用双内核架构,一个轻量级的辅助内核与Linux内核在同一硬件上并行运行。广泛应用于实时性要求的工业应用场景,如工业PLC、运动控制器、精密制造、机器人控制、工业控制智能化、能源监控/DTU等。

  • RK3506实测数据

最优数据为空载数据,平均延时仅为7μs!

Xenomai适配与测试方法

  • 打入补丁

基于触觉智能RK3506网盘提供的Xenomai资料,分别在Buildroot、Kernel、U-boot、Rkbin、Deconfig打入补丁。

图片
图片
  • 编译Buildroot与Kernel内核

编译buildroot,需要注意若之前有编译过buildroot,需删除之前的编译输出,命令如下:

代码语言:javascript
代码运行次数:0
运行
复制
rm buildroot/output/ -rf

执行以下命令编译Buildroot,命令如下:

代码语言:javascript
代码运行次数:0
运行
复制
./build.sh buildroot

编译Xenomai内核Kernel,命令如下:

代码语言:javascript
代码运行次数:0
运行
复制
cd kernel-6.1/
../buildroot/output/rockchip_rk3506_xenomai/build/xenomai-v3.2.4/scripts/prepare-kernel.sh --arch=arm

如需隔离CPU,EMMC修改如下设备树ido-evb3506-v1a-emmc.dtsi (NAND版本修改设备树:ido-evb3506-v1a-nand.dtsi)

代码语言:javascript
代码运行次数:0
运行
复制
        chosen {
bootargs = "earlycon=uart8250,mmio32,0xff0a0000 console=ttyFIQ0 root=PARTUUID=614e0000-0000-4b53-8000-1d28000054a9 rw rootfstype=ext4 rootwait snd_aloop.index=7 isolcpus=2";
        };

执行以下命令,退回主目录编译内核,命令如下:

代码语言:javascript
代码运行次数:0
运行
复制
cd ../
./build.sh kernel
  • 编译镜像并烧录

编译update.img镜像,命令如下:

代码语言:javascript
代码运行次数:0
运行
复制
./build.sh

测试方法

  • 测试配置

测试时关闭UI界面,避免影响实时性,命令如下:

代码语言:javascript
代码运行次数:0
运行
复制
killall rk_demo

并CPU调度模式改为Performance,命令如下:

代码语言:javascript
代码运行次数:0
运行
复制
echo performance > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor

校准,命令如下:

代码语言:javascript
代码运行次数:0
运行
复制
echo 0 > /proc/xenomai/latency
  • CPU空载测试

命令如下:

代码语言:javascript
代码运行次数:0
运行
复制
/usr/demo/cyclictest -m -a -p 99 -t 3 -i 1000
  • CPU满负荷测试

命令如下:

代码语言:javascript
代码运行次数:0
运行
复制
stress --cpu 3 --io 2 --vm 1 --vm-bytes 4M --timeout 1000000s &
/usr/demo/cyclictest -m -a -p 99 -t 3 -i 1000
  • 满负荷-隔离CPU3核心测试

压力、隔离CPU测试(注:需确保前面已修改设备树隔离CPU):

(1)确认CPU2已隔离

代码语言:javascript
代码运行次数:0
运行
复制
root@rk3506-buildroot:/# cat /proc/cmdline
earlycon=uart8250,mmio32,0xff0a0000 console=ttyFIQ0 root=PARTUUID=614e0000-0000-4b53-8000-1d28000054a9 rw rootfstype=ext4 rootwait snd_aloop.index=7 isolcpus=2 user_debug=31

(2)测试命令

代码语言:javascript
代码运行次数:0
运行
复制
stress --cpu 3 --io 2 --vm 1 --vm-bytes 4M --timeout 1000000s &
taskset -c 2 /usr/demo/cyclictest -m -a -p 99 -t 1 -i 1000

如需了解更多,可以关注深圳触觉智能腾讯开发者社区或公众号

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档