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 应用程序占用空间。

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

    关注

    5082

    文章

    19104

    浏览量

    304773
  • 内存
    +关注

    关注

    8

    文章

    3019

    浏览量

    74000
  • RTOS
    +关注

    关注

    22

    文章

    811

    浏览量

    119587

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

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

收藏 人收藏

    评论

    相关推荐

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

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

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

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

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

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

    嵌入式LINUX设计与应用

    第一篇 基础知识第1章 嵌入式系统与嵌入式的Linux1.1 无所不在的嵌入式系统1.1.1 身边的嵌入式系统1.1.2 嵌入式系统的特点1
    发表于 09-10 09:46 25次下载
    <b class='flag-5'>嵌入式</b>LINUX设计与应用

    基于RTOS嵌入式系统在Nexar中的实现

     构建基于RTOS51操作系统的嵌入式软件工程   在Nexar中创建基于RTOS嵌入式系统工程,需要创建一个嵌入式工程,其中包括一个
    发表于 07-01 10:25 907次阅读
    基于<b class='flag-5'>RTOS</b>的<b class='flag-5'>嵌入式</b>系统在Nexar中的实现

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

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

    下面几种主流嵌入式RTOS,你认识几种?

    满足实时控制要求的嵌入式操作系统(RTOS)操作系统,以下介绍14种主流的RTOS,分别为μClinux、μC/OS-II、eCos、FreeRTOS、mbed OS、RTX、Vxworks、QNX
    的头像 发表于 04-06 16:02 4623次阅读
    下面几种主流<b class='flag-5'>嵌入式</b><b class='flag-5'>RTOS</b>,你认识几种?

    基于RTOS嵌入式系统软件设计

    基于RTOS嵌入式系统软件设计说明。
    发表于 04-19 14:38 17次下载

    性能嵌入式堆栈Azure PTOS USBX概述

    Azure RTOS USBX 是一种高性能的 USB 主机、设备和移动 (OTG) 嵌入式堆栈。 Azure RTOS USBX 与 Azure
    发表于 05-24 10:55 10次下载

    喜欢嵌入式RTOS的8个理由

    时响应 基于优先级抢占的RTOS,根据任务的实时需求,执行优先调度。有严格时序限制的任务可以优先执行,提高应用程序对时间关键事件的响应。 2.系统性能最大化 针对大型的、复杂的嵌入式应用,使用一个事件驱动的
    的头像 发表于 07-27 10:13 1611次阅读

    基于RTOS嵌入式系统软件的设计讲解

    基于RTOS嵌入式系统软件的设计讲解(树莓派嵌入式开发板)-该文档为基于RTOS嵌入式系统软件的设计讲解文档,是一份很不错的参考资料,具
    发表于 07-30 10:03 8次下载
    基于<b class='flag-5'>RTOS</b>的<b class='flag-5'>嵌入式</b>系统软件的设计讲解

    嵌入式linux和物联网,嵌入式Linux或RTOS:用于物联网

    嵌入式Linux或RTOS:用于物联网2021-05-10嵌入式Linux或RTOS:用于物联网嵌入式Linux将Linux内核用于
    发表于 11-01 16:33 15次下载
    <b class='flag-5'>嵌入式</b>linux和物联网,<b class='flag-5'>嵌入式</b>Linux或<b class='flag-5'>RTOS</b>:用于物联网

    嵌入式linux和物联网,嵌入式Linux或RTOS:用于物联网

    嵌入式Linux或RTOS:用于物联网2021-05-10嵌入式Linux或RTOS:用于物联网嵌入式Linux将Linux内核用于
    发表于 11-01 17:37 16次下载
    <b class='flag-5'>嵌入式</b>linux和物联网,<b class='flag-5'>嵌入式</b>Linux或<b class='flag-5'>RTOS</b>:用于物联网

    嵌入式系统和物联网课程的RTOS游戏

    电子发烧友网站提供《嵌入式系统和物联网课程的RTOS游戏.zip》资料免费下载
    发表于 11-02 14:38 2次下载
    <b class='flag-5'>嵌入式</b>系统和物联网课程的<b class='flag-5'>RTOS</b>游戏

    STM32嵌入式开发中的RTOS,你用过哪些?

    STM32嵌入式开发中的RTOS,你用过哪些?
    的头像 发表于 09-18 16:21 2150次阅读
    STM32<b class='flag-5'>嵌入式</b>开发中的<b class='flag-5'>RTOS</b>,你用过哪些?