掌上单片机实验室 – RT-Thread 运行性能评估(21)

【rtthread设备】第零篇:IO设备 一、IO设备概念 rtthread提供的IO设备模型分为三层 IO设备管理层:提供一组通用的IO操作:open、read、control等,连接着应用程序和底层硬件。 设备驱动框架层:rtthread对同一类外设的抽象,对不同厂家的soc提供接口。 设备驱动层:soc外设驱动,操作底层硬件。 rtthread将设备抽象成rt_device。 /** * Device structure */ struct rt_device { struct rt_object paren 阅读详情

一、背景

        已经基于 RT-Thread 实现了小车的基本控制,由于小车的编码器较为简陋,为实现PID调速,算法上做了不少处理,故增加了不少运算量。虽说从现象上看,程序运行正常,预期的功能均已实现。

        但如何要想得到一个可靠的程序,必须知道程序运行时的几个关键指标:堆栈使用情况、MCU的占用率、中断响应时间。这些对实时操作系统而言是至关重要的,合理的堆栈剩余空间、MCU占用率及中断响应时间是嵌入式设备连续运行状态下可靠性的保障。

        为此,打算基于前面所完成的程序,测试一下上述指标。

二、需求

        在最接近真实运行状态下,检测:

  1. 具备堆栈使用情况监测手段
  2. CPU(MCU)占用率
  3. 外部中断响应时间

        所谓“真实”,是指:所添加的测试代码尽量不影响原来程序的运行,同时又能反映程序在正常运行状态下,各种情况所对应的上述参数。

        至于为何选择这三个指标,网上应该有很多相关讨论,在此就不详述了。

三、测试方式及结果

3.1 堆栈使用情况监测

        一般多任务操作系统都需要监测堆栈使用情况,因为栈溢出将会导致程序跑飞,故一般OS会提供一个函数获取栈的最大使用情况。在FreeRTOS中,我就是用此方式获取的。

        但在RT-Thread中未找到类似函数,但它提供了两个更好的方式:

  1. 支持监测栈溢出:就是在程序出现栈溢出时,会通过FinSH 从串口输出信息,这个对使用者还是十分友好的,在使用FreeRTOS时,我是发现程序异常再打开栈监测(因为栈监测输出有点耗资源,故只在需要时打开),此时如果程序已经不能运行基本功能,则需要通过“试”来确定是不是栈溢出所致?是那个任务的栈不够?有点麻烦。在RT-Thread中直接就可以通过输出信息知道那个线程栈不够,很方便。
  2. 可以通过FinSH交互命令,通过串口终端命令,看到所有线程的栈使用情况;这个和之前我在 Arduino+FreeRTOS 下实现的功能类似,但无需自己编写代码,也是一个对用户十分友好的手段。

        有了栈溢出监测,为何还需要知道每个线程栈的使用情况?这是因为必须保证一定的余量,否则程序长期运行时就存在隐患。

     

RT-Thread学习笔记三——空闲线程钩子函数的使用 RT-Thread中利用延时进入空闲线程钩子函数示例 阅读详情

相关推荐

Rtthread学习笔记(十三)RT-Thread Studio开启硬件看门狗Watchdog

一、开启硬件看门狗Watchdog 1、配置RT-Thread Settings 2、开启stm32f1xx_hal_conf.h中的宏定义

Davidysw的博客 4229

MCU 堆栈使用率的测试方法

栈的使用率测试。

写代码混口饭吃的博客 2963

详解k-means++

一、概述 定义:k-means++是一种为k-means聚类算法选择初始值(或“种子”)的算法。它是NP-hard k-means问题的一种近似算法,它是一种避免标准k-means算法有时发现的较弱聚类的方法。 K-means与K-means++:原始K-means算法最开始随机选取数据集中K个点作为聚类中心,而K-means++按照如下的思想选取K个聚类中心:假设已经选取了n个初始聚类中心(0<n<K),则在选取第n+1个聚类中心时:距离当前n个聚类中心越远的点会有更高的概率被选为第n+1个聚

qq_42364307的博客 3万+

从零到一:移远EC200UCN_LA OpenCPU开发中的‘避坑’实战指南

本文详细介绍了移远EC200UCN_LA 4G通信模块的OpenCPU开发实战指南,涵盖开发环境搭建、项目构建、通信接口开发、调试技巧及固件升级等关键环节。通过避坑经验和实用技巧,帮助开发者高效完成二次开发,提升4G通信模块的应用开发效率。

weixin_29159711的博客 504

深入MIPI DSI显示技术栈 (三) DSI vs CSI-2:孪生协议的本质差异

MIPI协议中的DSI与CSI-2存在本质差异:DSI为输出导向协议(Host→Display),用于屏幕控制和画面传输;CSI-2为输入导向协议(Sensor→Host),专攻图像采集。二者在包结构、同步机制、物理层优化等方面均有显著区别:DSI支持命令包和BLLP包,CSI-2具备嵌入式数据包;DSI时钟模式以Burst为主,CSI-2支持Continuous模式。典型场景中,二者协同工作(如手机相机预览),需注意时序同步和延迟控制。设计混合系统时,需合理规划虚拟通道和物理层资源,充分发挥这对&quot

GateWorld的博客 2105

RTDETR多模态融合实战:基于注意力机制的红外与可见光目标检测优化

本文深入探讨了基于RTDETR模型的红外与可见光多模态目标检测优化方案。针对复杂光照下的检测难题,文章提出并实战演示了如何利用注意力机制(如SimAM与交叉注意力)实现RGB与IR特征的智能动态融合,从而构建更鲁棒的“全天候”检测系统,有效提升安防、自动驾驶等场景在夜间及恶劣天气下的检测精度与可靠性。

weixin_29083373的博客 188

07. 基础实战篇 - STP的基本配置

STP(生成数协议)是一个用于在局域网中消除环路的协议,他的标准是IEEE802.1d。STP通过强制使部分冗余链路处于阻塞状态,其它链路处于转发状态,将环形网络结构修剪成无环路的树形网络结构。可实现消除环路,当处于转发状态的链路不可用时,STP重新配置网络,并激活合适的备用链路状态,恢复网络连通性。

weixin_39868387的博客 7224

大数据Alluxio面试题及参考答案

Alluxio 在大数据生态里的定位是作为数据编排层,能在不同计算框架和存储系统之间起到桥梁的作用。它的核心功能在于加速数据访问,让大数据应用能够更高效地使用数据。Alluxio 把数据存储和数据处理分离开来,使计算框架可以在不考虑底层存储细节的情况下访问数据,这样就提高了系统的灵活性和可扩展性。Alluxio 和 HDFS 既存在关联又有区别。从关联方面来看,HDFS 是一种广泛使用的分布式文件系统,很多大数据应用都将其作为主要的数据存储系统。Alluxio 可以和 HDFS 集成,把 HDFS 当作底层

大模型大数据攻城狮的专栏 860

Trustzone/TEE/安全 面试100问-目录

关键词:cache学习、mmu学习、cache资料、mmu资料、arm资料、armv8资料、armv9资料、 trustzone视频、tee视频、ATF视频、secureboot视频、安全启动视频、selinux视频,cache视频、mmu视频,armv8视频、armv9视频、FF-A视频、密码学视频、RME/CCA视频、学习资料下载、免费学习资料、免费 周贺贺,baron,代码改变世界ctw,Arm精选, 资深安全架构专家,十年手机安全/SOC底层安全开发经验。擅长trustzone/tee安全产品的设计

baron-周贺贺-代码改变世界ctw 649

nvidia系列教程-AGX-Orin linux源码下载编译

NVIDIA AGX Orin 是一款高性能的嵌入式计算平台,广泛应用于人工智能、自动驾驶、机器人等领域。为 AGX Orin 编译定制的 Linux 内核,可以更好地适应特定应用需求,增强系统的灵活性。本文将详细介绍如何下载、配置和编译适用于 AGX Orin 的 Linux 内核源码。本文介绍了如何为 NVIDIA AGX Orin 平台下载、配置和编译定制的 Linux 内核源码。通过编译和部署定制内核,您可以更好地控制系统的行为,并根据特定应用需求进行优化。

flypig has a dream! 1281

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

上一篇: 掌上单片机实验室 – RT-Thread 下实现PID自整定(20)
下一篇: 掌上单片机实验室 – RT-Thread 之RISC芯片尝试(22)
嵌入之梦
博客等级 码龄21年 134粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

嵌入之梦

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

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

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

打赏作者

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

抵扣说明:

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

余额充值