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

本文介绍瑞芯微RK3588芯片平台RT-Linux系统实时性及硬件中断延迟测试,基于触觉智能RK3588核心板/开发板演示。

Linux-RT实时性测试
 

  • 测试环境说明

本次测试是使用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内核测试结果汇总:

图片

结论如下:对比RK3588平台Preempt_RT与Xenomai RT两大实时性内核数据,Xenomai RT在负载情况下险胜Preempt_RT,整体表现不相上下。
触觉智能\还测试了RK3506、RK3562、RK3576等多款芯片平台,详细可关注触觉智能CSDN往期文章浏览。

Linux-RT硬件中断延迟测试

  • 测试基本原理

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

  • 测试结果

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

        chosen: chosen {
                bootargs = "earlycon=uart8250,mmio32,0xfeb50000 console=ttyFIQ0 irqchip.gicv3_pseudo_nmi=0 root=PARTUUID=614e0000-0000 rw rootwait isolcpus=3";
        };

--- a/arch/arm64/boot/dts/rockchip/ido-evb3588-v1b.dtsi
+++ b/arch/arm64/boot/dts/rockchip/ido-evb3588-v1b.dtsi
@@ -290,12 +290,32 @@
                WIFI,poweren_gpio = <&pca9539 2 GPIO_ACTIVE_HIGH>;
                status = "okay";
        };
-
+
+       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 = <&gpio1 RK_PA7 GPIO_ACTIVE_HIGH>;
+                                  debounce-interval = <0>;
+                  };
+       };
+
        leds: leds {
                status = "okay";
                compatible = "gpio-leds";
                pinctrl-names = "default";
-               pinctrl-0 =<&leds_gpio>;
+               pinctrl-0 =<&leds_gpio &led1_gpio>;
+
+               user_led0: user-led0 {
+                               gpios = <&gpio1 RK_PA3 GPIO_ACTIVE_HIGH>;
+                               default-state = "off";
+               };
                pcie_clk_en {
                        gpios = <&pca9539 1 GPIO_ACTIVE_HIGH>;
@@ -816,7 +836,18 @@
                                //<0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_none>,
                                <4 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
                };
+
+               led1_gpio: led1-gpio {
+                               rockchip,pins = <1 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
        };
+
+       keys {
+                  key1_user: key1-user {
+                                  rockchip,pins = <1 RK_PA7 RK_FUNC_GPIO &pcfg_pull_down>;
+                  };
+       };
+

例程通过创建一个基本的实时线程,在线程内实现打开GPIO1对应的按键input设备并对按键事件进行监听从而触发GPIO2对应的LED的亮灭控制:

图片

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

图片

红色信号为GPIO1,黄色信号为GPIO2,示波器实测中断延迟为:21us。

图片

更多RT-Linux实时性系统资料,请关注深圳触觉智能CSDN

基于径向基函数神经网络RBFNN的自适应滑模控制学习(Matlab代码实现)内容概要:本文介绍了基于径向基函数神经网络(RBFNN)的自适应滑模控制方法,并提供了相应的Matlab代码实现。该方法结合了RBF神经网络的非线性逼近能力和滑模控制的强鲁棒性,用于解决复杂系统的控制问题,尤其适用于存在不确定性和外部干扰的动态系统。文中详细阐述了控制算法的设计思路、RBFNN的结构与权重更新机制、滑模面的构建以及自适应律的推导过程,并通过Matlab仿真验证了所提方法的有效性和稳定性。此外,文档还列举了大量相关的科研方向和技术应用,涵盖智能优化算法、机器学习、电力系统、路径规划等多个领域,展示了该技术的广泛应用前景。; 适合人群:具备一定自动控制理论基础和Matlab编程能力的研究生、科研人员及工程技术人员,特别是从事智能控制、非线性系统控制及相关领域的研究人员; 使用场景及目标:①学习和掌握RBF神经网络与滑模控制相结合的自适应控制策略设计方法;②应用于电机控制、机器人轨迹跟踪、电力电子系统等存在模型不确定性或外界扰动的实际控制系统中,提升控制精度与鲁棒性; 阅读建议:建议读者结合提供的Matlab代码进行仿真实践,深入理解算法实现细节,同时可参考文中提及的相关技术方向拓展研究思路,注重理论分析与仿真验证相结合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Industio_触觉智能

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值