本文基于触觉智能RK3506核心板/开发板,介绍Xenomai内核RT-Linux实时性系统适配,并附性能实测。
Xenomai简介与实测数据
Xenomai简介
XEnomai是一个实时子系统,可与Linux内核紧密集成,为应用程序提供可预测的响应时间。它采用双内核架构,一个轻量级的辅助内核与Linux内核在同一硬件上并行运行。广泛应用于实时性要求的工业应用场景,如工业PLC、运动控制器、精密制造、机器人控制、工业控制智能化、能源监控/DTU等。
RK3506实测数据
最优数据为空载数据,平均延时仅为7μs!
Xenomai适配与测试方法
打入补丁
基于触觉智能RK3506网盘提供的Xenomai资料,分别在Buildroot、Kernel、U-boot、Rkbin、Deconfig打入补丁。
相关详细资料请关注深圳触觉智能 , ,还提供高达77个G的软硬件资料与Demo。
编译Buildroot与Kernel内核
编译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
CPU空载测试
命令如下:
/usr/demo/cyclictest -m -a -p 99 -t 3 -i 1000
CPU满负荷测试
命令如下:
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已隔离
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
如需 开发板进行评估验证,链接如下:
https://item.taobao.com/item.htm?id=922737394341