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

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

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

编译buildroot,需要注意若之前有编译过buildroot,需删除之前的编译输出,命令如下:
rm buildroot/output/ -rf
执行以下命令编译Buildroot,命令如下:
./build.sh buildroot
编译Xenomai内核Kernel,命令如下:
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)
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"; };
执行以下命令,退回主目录编译内核,命令如下:
cd ../ ./build.sh kernel
编译update.img镜像,命令如下:
./build.sh
测试方法
测试时关闭UI界面,避免影响实时性,命令如下:
killall rk_demo
并CPU调度模式改为Performance,命令如下:
echo performance > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
校准,命令如下:
echo 0 > /proc/xenomai/latency
命令如下:
/usr/demo/cyclictest -m -a -p 99 -t 3 -i 1000
命令如下:
stress --cpu 3 --io 2 --vm 1 --vm-bytes 4M --timeout 1000000s & /usr/demo/cyclictest -m -a -p 99 -t 3 -i 1000
压力、隔离CPU测试(注:需确保前面已修改设备树隔离CPU):
(1)确认CPU2已隔离
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)测试命令
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
产品简介
触觉智能RK3506开发板/核心板
,搭载瑞芯微RK3506B/RK3506J低功耗多核异构处理器(3核A7@1.5Ghz+M0,满载0.65W),双CAN FD、双网口、6路串口,最高支持-40℃~85℃严苛环境,百元内国产化方案助力工控、IoT与智能设备高效升级!
全部0条评论
快来发表一下你的评论吧 !