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查看规格书。

相关推荐
天天进步201513 小时前
【Linux 运维】告别 cat:如何按“时间段”优雅地截取日志文件?
linux·运维·服务器
zl_dfq14 小时前
Linux 之 【进程等待】
linux
遇见火星14 小时前
Linux性能调优:理解CPU中的平均负载和使用率
linux·运维·服务器·cpu
Chennnng15 小时前
Ubuntu 安装过程的 6 大常见问题类型
linux·运维·ubuntu
阿干tkl15 小时前
传统网络与NetworkManager对比
linux·网络
Evan芙16 小时前
Linux 进程状态与进程管理命令
linux·运维·服务器
码农12138号17 小时前
Bugku HackINI 2022 Whois 详解
linux·web安全·ctf·命令执行·bugku·换行符
Joren的学习记录17 小时前
【Linux运维进阶知识】Nginx负载均衡
linux·运维·nginx
用户21903265273517 小时前
Java后端必须的Docker 部署 Redis 集群完整指南
linux·后端
胡先生不姓胡17 小时前
如何获取跨系统调用的函数调用栈
linux