0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

嵌入式释放RTOS内存性能的使用技巧

电子工程师 来源:嵌入式学习站 作者:嵌入式学习站 2022-09-27 11:50 次阅读

经常从嵌入式开发人员那里听到两种拒绝使用RTOS的借口:

“RTOS内存占用太大”

“RTOS开销太大”

这些借口在以前可能有一些价值,但今天它们没有任何分量。典型的RTOS对CPU的负载不到4%,需要不到16 KB的闪存空间和不到4 KB的RAM。在大多数情况下,性能和内存问题与开发人员如何使用RTOS以及他们在如何正确使用和配置RTOS方面的知识差距有关。下面是开发人员可以遵循的七个技巧,以优化他们的RTOS应用程序内存使用。

技巧1:对每项任务进行最坏情况堆栈分析

最大的内存浪费之一是为任务堆栈分配的内存。默认情况下,大多数 RTOS 将分配一千字节来保存任务堆栈,其中包含诸如局部变量、数据结构和函数调用返回地址等内容。默认大小的问题在于,不熟悉使用 RTOS 的开发人员通常不会检查每个任务并正确调整堆栈的大小。一个只闪烁几个 LED 并且什么都不做的任务通常会有 1 千字节的堆栈,即使 64 字节就足够了。未能检查每个任务并正确调整堆栈大小可能会导致使用的 RAM 远远超过应用程序实际所需的 RAM。

技巧2:避免过度使用堆栈

由于每个任务都有一个堆栈,因此任务堆栈成为运行应用程序所需的 RAM 的巨大贡献者。当嵌入式开发人员设计和实现他们的任务时,他们应该尽量减少堆栈的使用。这可以通过以下方式完成:

• 避免递归函数

• 最大限度减少函数调用

• 避免大型本地数据结构

开发人员不仅需要编写代码,还需要仔细考虑每个变量、数据结构和函数调用对内存和性能的影响。避免过度使用堆栈使用将允许开发人员缩小堆栈大小并节省 RAM 使用。

技巧3:使用内存块池

开发人员在开发基于 RTOS 的应用程序时经常会遇到的一个大问题是他们需要动态分配内存。动态内存分配的问题在于,内存通常是从一个行为类似于字节池的堆中分配的。堆和字节池有许多缺点,例如:

• 它们会破碎

• 内存分配是不确定的

另一方面,块池来自固定块,不仅可以确定地分配,而且不会碎片。对于需要动态分配内存的开发人员来说,块池是比堆或字节池更好的选择。

技巧4:最小化 RTOS 对象

RTOS 可以帮助嵌入式开发人员将他们的应用程序分解为可重用的半独立程序,这些程序使用信号量、互斥体和消息队列等 RTOS 对象来通信和同步任务执行。每个RTOS对象都有一个使用少量内存的控制块。在资源非常有限的应用程序中,或者如果开发人员过度使用这些资源,则可以使用比实际需要更多的内存。出于这个原因,开发人员应该仔细设计他们的 RTOS 应用程序,尽量减少RTOS对象的使用。

技巧5:考虑使用事件标志而不是信号量

RTOS 的功能可能因一个 RTOS 而异,但在作者使用的几种不同的 RTOS 中,使用事件标志而不是信号量可能会导致占用空间略小。信号量不仅包含一个控制块,还包含一些基本代码来执行信号量操作,比如发送和接收信号量。通常,此代码往往比事件标志更慢并且使用更多内存。事件标志实际上只不过是一个内存位置,其中内存位置中的每一位都代表一个事件,例如按下按钮或刚刚对温度传感器进行采样。

技巧6:最小化任务优先级

实时操作系统允许嵌入式开发人员设置任务可以设置的优先级。例如,许多系统的默认值是 0 到 31。在某些情况下,默认值的范围可以从 0 到 128 甚至 0 到 1024。一般来说,一般来说,任务优先级越低,性能越好,内存使用越少。开发人员应尽量将优先级设置保持在 0 到 31 之间,除非有充分的理由进行其他设置。

技巧7:优化 RTOS 配置文件

RTOS 通常有一个配置文件,允许开发人员微调 RTOS 行为。配置文件允许开发人员设置功能,例如默认堆栈大小、可用的优先级数量以及构建中将包含哪些同步对象。在许多情况下,修改配置文件可以为开发人员提供更小的 RTOS 占用空间,甚至根据可用的配置选项提高性能。确保检查 RTOS 配置文件并了解每个可用选项。

如果使用不当,RTOS 会导致应用程序所需的内存占用膨胀到无法使用的水平。在许多情况下,高内存使用是由于开发人员使用 RTOS 的方式造成的,而不是 RTOS 本身的指示。在这篇文章中,我们研究了嵌入式开发人员可以遵循的几个技巧,以帮助最小化他们自己的 RTOS 应用程序占用空间。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    4975

    文章

    18225

    浏览量

    287642
  • 内存
    +关注

    关注

    8

    文章

    2756

    浏览量

    72672
  • RTOS
    +关注

    关注

    20

    文章

    772

    浏览量

    118746

原文标题:嵌入式:管理 RTOS 内存性能和使用的7个技巧

文章出处:【微信号:嵌入式学习站,微信公众号:嵌入式学习站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    嵌入式RTOS的 任务栈 和 系统栈

    简介明了带你了解嵌入式RTOS的 任务栈 和 系统栈
    的头像 发表于 05-16 09:57 2029次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>RTOS</b>的 任务栈 和 系统栈

    RTOS嵌入式系统的软件开发平台

    RTOS嵌入式系统的软件开发平台RTOS最关键的部分是实时多任务内核,它的基本功能包括任务管理、定时器管理、存储器管理、资源管理、事件管理、系统管理、消息管理、队列管理、旗语管理等, 这些管理功能
    发表于 08-12 14:32

    嵌入式系统内存管理

    本帖最后由 VVX 于 2016-9-18 13:15 编辑 1、概述操作系统的内存管理功能用于向操作系统提供一致的地址映射功能和内存页面的申请、释放操作。在嵌入式实时系统中,
    发表于 09-17 19:40

    RTOS和Linux中的内存映射及移植方法

    映射到相应得用户空间去。同样重要的是,在I/O调用密集的嵌入式程序中怎么样把RTOS的硬件接口代码移植到更加规范的Linux设备驱动程序中去。 本文把概述几种常用的经常出现于现有嵌入式应用中的
    发表于 07-03 07:43

    什么是嵌入式操作系统内存管理技术?

    内存。智能手机操作系统作为嵌入式操作系统的一种,较之普通桌面型操作系统,其内存管理有着独特之处:受硬件成本、设备体积等因素制约,内存容量一般相当有限,需要高效地使用;电源管理尤为重要
    发表于 07-30 07:19

    RTOS移植到嵌入式Linux要注意什么?

    在过去的10年中,Linux成功地取代了一些最主要的传统RTOS平台,成为了各种各样的嵌入式设备和应用中首选的新的嵌入式操作系统。尽管一度曾被认为是不重要的平台,但今天嵌入式Linux
    发表于 10-16 06:15

    嵌入式设备浏览器内存管理有什么方法?

    嵌入式系统中,由于设备性能限制系统总的可分配内存相对较小,而在嵌入式平台上浏览器正常运行所需内存一般都比较大,并且
    发表于 03-12 08:26

    嵌入式实时操作系统(RTOS

    前言自20世纪90年代,鉴于多任务支持、开发便捷、便于维护等特性,同时能够提高系统的稳定性和可靠性,嵌入式实时操作系统(RTOS)逐渐为广大嵌入式从业人员所接受和认可,越来越多的工程师加入
    发表于 08-05 06:14

    ThreadX-RTOS嵌入式开发

    的。ThreadX还包含了NETX、GUIX、FILEX、USBX等丰富的组件,几乎包含了嵌入式开发中的所有场景,这些组件和ThreadX-RTOS能够完美的配合完成一条龙的开发。ThreadX的github地址:[Azure RTOS
    发表于 08-24 06:04

    嵌入式系统内存优化使用

    嵌入式系统功能的提高,占用了较大内存空间,继而时常出现运行无响应。基于用户方面看,由于系统内存问题影响运行,针对系统内存与进程应用状态研究,可以调整系统数值与执行文件elf分析,进行系
    发表于 11-04 06:23

    嵌入式Linux或RTOS简析

    嵌入式Linux或RTOS:用于物联网2021-05-10嵌入式Linux或RTOS:用于物联网嵌入式Linux将Linux内核用于
    发表于 11-04 07:06

    主流嵌入式操作系统(RTOS)有哪些

    主流嵌入式操作系统(RTOS)有哪些?看看这14种,收藏过来。看到里面介绍了我在用的一个 RTOS 系统 RT-Thread。使用国内最有可能成为 Top 1 的 RTOS ,我很荣幸
    发表于 12-16 07:27

    嵌入式系统基本模型与RTOS设计原则

    1. 嵌入式系统基本模型2. RTOS设计原则 采用各种算法和策略,始终保持系统行为的可预测性。即在任何情况下,在系统运行的任何时刻,OS的资源配置策略都能为争夺资源(包括CPU、内存、网络带宽等
    发表于 12-16 07:57

    基于嵌入式裸机或RTOS系统下内存管理方法的探究

    嵌入式内存管理探究-基于FreeRTOS文章封面本文基于嵌入式裸机或RTOS系统下内存管理方法的探究,灰色方块为正在使用的
    发表于 12-17 07:40

    嵌入式RTOS内存管理机制的实现方案和进行改善设计

    内存资源作为嵌入式系统中极为重要的资源之一,其管理机制历来是嵌入式系统设计的重点和难点。内存管理机制的优劣程度极大地影响着嵌入式系统的整体
    的头像 发表于 08-12 09:03 2170次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>RTOS</b>的<b class='flag-5'>内存</b>管理机制的实现方案和进行改善设计