RK3562核心板/开发板RT-Linux系统实时性及硬件中断延迟测试

本文介绍瑞芯微RK3562芯片平台RT-Linux系统实时性及硬件中断延迟测试。

演示主板:触觉智能EVB3562开发板,历经72小时多条件详细测试!

Linux-RT实时性测试

  • 测试环境说明

1、开发板型号:IDOEVB3562-V2,参考网盘提供的《IDO-EVB3562-V2 RT-Linux使用手册》文档。

2、使用Cyclictest延迟检测工具测试Linux系统实时性。Cyclictest 是一款专门用于测试和评估系统实时性(Real-Time)的工具,主要用于测量 Linux 系统中线程调度的延迟(即从线程被唤醒到实际开始执行之间的时间差)。它是 rt-tests 工具集的核心组件之一,广泛应用于实时系统(如 RT-Linux)的性能验证和优化。

  • Preempt_RT

使用Cyclictest程序测试系统实时性,开发板Linux内核版本:Kernel 5.10.226。

空载测试12小时:

负载测试12小时:

负载隔离CPU测试12小时:

测试结果汇总:

  • Xenomai RT

空载测试12小时:

负载测试12小时:

负载隔离CPU测试12小时:

Xenomai RT内核测试结果汇总:

结论如下:对比Preempt_RT与Xenomai RT的实时性数据,Preempt RT内核的延时更低。实际应用推荐使用Preempt RT内核,若对更多RK芯片结果感兴趣可关注触觉智能详细了解。

Linux-RT硬件中断延迟测试

  • 测试基本原理

基于Preempt_RT内核在隔离CPU的情况下,使用一个GPIO引脚(简称GPIO1)作为中断输入,使用另一个GPIO引脚(简称GPIO2)作为响应中断输出,当GPIO1接收到信号触发中断后立即控制GPIO2输出,使用示波器抓取"触发信号"与"响应信号"之间的时间差(简称中断延迟)。

  • 测试方法

(1)配置隔离CPU,配置GPIO1作为按键输入(中断信号输入),配置GPIO2作为LED输出(中断响应信号输出)

复制代码
        chosen: chosen {
                bootargs = "earlycon=uart8250,mmio32,0xff210000 console=ttyFIQ0 root=PARTUUID=614e0000-0000 rw rootwait isolcpus=3";
        };

--- a/kernel-5.10/arch/arm64/boot/dts/rockchip/ido-evb3562-v2a.dtsi
+++ b/kernel-5.10/arch/arm64/boot/dts/rockchip/ido-evb3562-v2a.dtsi
@@ -52,6 +52,21 @@
                };
        };
+       gpio_keys: gpio-keys {
+               status = "okay";
+               compatible = "gpio-keys";
+               autorepeat;
+               pinctrl-names = "default";
+               pinctrl-0 = <&key1_user>;
+
+               user_key1 {
+                       label = "user-key1";
+                       linux,code = <KEY_PROG2>;
+                       gpios = <&gpio0 RK_PC3 GPIO_ACTIVE_HIGH>;
+                       debounce-interval = <0>;
+               };
+       };
+
        bt_sco: bt-sco {
                status = "okay";
                compatible = "delta,dfbmcs320";
@@ -251,7 +266,12 @@
                status = "okay";
                compatible = "gpio-leds";
                pinctrl-names = "default";
-               pinctrl-0 =<&leds_gpio>;
+               pinctrl-0 =<&leds_gpio &led1_gpio>;
+
+                user_led0: user-led0 {
+                        gpios = <&gpio0 RK_PC2 GPIO_ACTIVE_HIGH>;
+                        default-state = "off";
+                };
                heartbeat {
                        gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_HIGH>;
@@ -410,8 +430,17 @@
                                        <3 RK_PD1 RK_FUNC_GPIO &pcfg_pull_none>,
                                        <2 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
                };
+
+                led1_gpio: led1-gpio {
+                        rockchip,pins = <0 RK_PC2 RK_FUNC_GPIO &pcfg_pull_none>;
+                };
        };
+       keys {
+               key1_user: key1-user {
+                       rockchip,pins = <0 RK_PC3 RK_FUNC_GPIO &pcfg_pull_down>;
+               };
+       };
 };
复制代码
例程通过创建一个基本的实时线程,在线程内实现打开GPIO1对应的按键input设备并对按键事件进行监听从而触发GPIO2对应的LED的亮灭控制。例程代码参考如下:

完成交叉编译应用程序后,执行测试程序等待接收触发信号,硬件使用示波器捕获触发信号。

  • 测试结果

GPIO1使用杜邦线接入3.3V模拟中断触发信号,示波器测试中断延迟为:58us。

更多RT-Linux实时性系统资料,请关注深圳触觉智能CSDN,提供近80个G的软硬件资料与更多Demo。

产品说明

触觉智能RK3562开发板EVB3562,可作为 邮票孔核心板SOM3562评估板** ,45×45mm尺寸,**CE-EMC、Rohs相关认证,详细资料可关注CSDN查看规格书。

相关推荐
JiMoKuangXiangQu4 小时前
ARM64 进程虚拟地址空间布局
linux·arm64 虚拟地址布局
阳光九叶草LXGZXJ4 小时前
达梦数据库-学习-47-DmDrs控制台命令(LSN、启停、装载)
linux·运维·数据库·sql·学习
春日见4 小时前
如何避免代码冲突,拉取分支
linux·人工智能·算法·机器学习·自动驾驶
无垠的广袤5 小时前
【VisionFive 2 Lite 单板计算机】边缘AI视觉应用部署:缺陷检测
linux·人工智能·python·opencv·开发板
阿波罗尼亚5 小时前
Kubectl 命令记录
linux·运维·服务器
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.5 小时前
Keepalived单播模式配置与实战指南
linux·服务器·负载均衡
IDC02_FEIYA5 小时前
Linux文件搜索命令有哪些?Linux常用命令之文件搜索命令find详解
linux·运维·服务器
江畔何人初6 小时前
kubectl apply与kubectl create的区别
linux·运维·云原生
M158227690556 小时前
四通道全能组网!SG-Canet-410 CAN转以太网网关,破解工业CAN通信瓶颈
linux·运维·服务器
誰能久伴不乏6 小时前
【Qt实战】工业级多线程串口通信:从底层协议设计到完美收发闭环
linux·c++·qt