提高RTOS应用程序稳定可靠的几点技巧

面包板社区 2021-08-14 20:00

我们在编写RTOS应用程序的过程中,经常会遇到这些困难,包括正确确定系统中有多少任务如何设置优先级协调任务行为避免常见陷阱,有时只是为了让应用程序正常工作,而忽略一些问题。

如今,近三分之二的嵌入式系统使用 RTOS,而且随着系统的时序要求变得越来越复杂,这个数字只会随着时间的推移而增加。在今天的文章中,我们将研究设计基于 RTOS 的应用程序的五个最佳实践技巧。

任务分解

首先我们可以遵循的第一个最佳实践技巧就是使他们的 RTOS 应用程序开发成功,是使用任务分解来获得应用程序中正确数量的任务

有许多技术可用于分解任务,但我喜欢使用的一种对嵌入式开发人员很有效的方法是使用由外向内(outside-in)的方法。在这种方法中,开发人员遵循七个简单的步骤:
  • 识别并列出主要的系统组件;
  • 绘制高级框图;
  • 标记系统输入;
  • 标记输出;
  • 确定一级任务;
  • 确定并发级别和依赖项;
  • 确定第二层任务(应用程序任务);

在为恒温器等物联网传感器节点执行此过程时,最终可能会得到如下图所示:
在这种情况下,系统通常有六个任务,其中一个任务监督应用程序代码。(根据系统复杂性,可以进一步分解此任务)。

选择正确的调度算法来分配优先级

我观察到很多使用 RTOS 的开发人员从不花时间决定他们将如何安排他们的任务。他们通常假设 RTOS 会为他们做这件事,并且他们的任务会根据提供他们选择的任务优先级成功运行。

事实是,开发人员可以通过多种不同的方式来安排任务。

首先,开发人员可以使用任务响应时间来调度任务。在这些系统中,响应时间最短的任务应该被分配最高优先级。

其次,开发人员可以使用一个任务执行时间来调度任务。在这些系统中,执行时间最短的任务应该被分配最高优先级。

最后,开发人员可以使用任务周期来安排任务。在这些系统中,周期最短的任务优先级最高。

只有在您选择了调度方法之后,您才能正确设置您的任务优先级。(我看到很多开发人员只是猜测)。

使用 RMS 验证任务是否可调度

大多数使用 RTOS 的嵌入式系统中使用的调度算法是基于周期的调度,也称为速率单调调度(Rate Monotonic Scheduling)。

多年来,人们对如何使用 RMS 正确安排任务进行了大量研究。通常,RMS 附带了开发人员需要牢记的几个假设。

首先,RMS 假设任务是周期性的并且它们也是独立的。这意味着,如果您有一个非周期性任务,在分析中我们会假设为它提供一些周期性时间。

接下来,RMS 假设 RTOS 使用抢占式调度。它还假设所有任务都相等并且最坏情况的执行时间是恒定的。

我经常发现 RMS 非常适合对我开发的 RTOS 应用程序架构是否有意义或者我是否在错误的方向进行完整性检查。

例如,我可以假设具有以下任务的系统的行为方式并确定它是否可以成功调度其任务:
对于使用 RMS 的系统,对于具有无限数量任务的系统,所有这些任务的 CPU 使用率必须低于 69.3%。对于上述系统,我们可以看到总利用率为 52%,这意味着它们应该是可调度的。

使用同步和数据流图

在使用由外向内(outside-in)的方法确定我在应用程序中需要的所有任务后,我通常会创建一个同步和数据流图。此图的目的是:
  • 映射系统中所有数据的来源
  • 映射数据如何从其源转移到系统中的任务
  • 映射如何存储和访问该数据
  • 映射如何使用该数据来生成系统输出

早些时候,我以连接互联网的恒温器为例。下面是我们可能为该应用程序制作的数据流和同步图。
如你所见,此图不仅可以帮助我们了解数据如何在系统中移动,还可以帮助我们了解应用程序中所需的 RTOS 组件,例如:
  • 队列
  • 流缓冲区
  • 信号量
  • 互斥体

如果没有这样的图表,开发团队必然会遇到开发和维护问题。

预先定义任务和消息界面接口

一旦创建了数据流图,就很容易开始对应用程序进行编码。

这无疑会在一段时间内顺利进行,但我发现如果开发人员不花时间预先仔细定义任务和消息接口,它可能会导致返工。

虽然数据流图通常显示数据如何通过应用程序传播,但它并不一定要求定义数据结构。

目标是预先检查每个消息队列,然后为这些消息构建结构。这很重要,因为它将定义消息的外观,而且还将有助于任何底层模块的接口的外观。

例如,管理一系列阀门的任务可能需要包含以下内容的消息:
  • 阀门 ID
  • 阀门状态
  • 阀门所需的时间

再说一次,它可能会期待:
  • 定义阀门状态的面罩
  • 准时清单

归根结底,做事的方式总是不止一种,一种不一定比另一种更好。但是,在为支持任务执行的其他模块构建接口时,了解正在传递的消息将有所帮助。


结论

实时操作系统比以往任何时候都更多地用于开发实时应用程序。

我们在今天的文章中探讨了几个技巧,这些技巧不仅可以帮助读者创建更清晰、更灵活的 RTOS 应用程序,还可以帮助他们传达应用程序的设计意图。希望这些技巧可以帮助你们快速开始应用程序的开发。

来源 | 小麦大叔

免费福利价值500多元一片的开发板



更多精彩干货,点击下方关注查看



关注『面包板社区』,后台回复"关键词"领取300 G学习资料包如:电源、电机、嵌入式、信号系统、模电、华为、电子学、电路、c语言...)



#推荐阅读#

  • 【完全吃透】征服傅里叶变换

  • SMT贴片元件基础知识

  • 弃卒保帅:反思华为服务器的出售事件

  • 拆开步进电机来仔细讲一讲

  • X电容和Y电容的区别

  • 你真的吃透了电阻的用法吗?


点击阅读原文,下载《FreeRTOS源码详解与应用开发全部资料》

面包板社区 面包板社区——中国第一电子人社交平台 面包板社区是Aspencore旗下媒体,整合了电子工程专辑、电子技术设计、国际电子商情丰富资源。社区包括论坛、博客、问答,拥有超过250万注册用户,加入面包板社区,从菜鸟变大神,打造您的电子人脉社交圈!
评论 (0)
  • 第一回 谷歌布阵出奇谋 Transformer横空定乾坤诗曰:滚滚代码东逝水,浪花淘尽英雄。循环卷积转头空,参数依旧在,几度夕阳红。白发学者芯片上,惯看秋月春风。一壶咖啡喜相逢,AI多少事,都付笑谈中。话说天下大势,分久必合,合久必分。自辛格顿老仙以反向传播算法一统江湖,深度学习门派分立。有循环门(RNN)仗着时序秘法盘踞文本疆域,卷积派(CNN)凭空间绝技割据图像河山。两派相争数十年,虽各有胜负,却难破"长程遗忘""梯度消散"之困局。忽一日,谷歌祭出绝世秘籍《Attention Is All
    Leagowang 2025-02-22 21:44 84浏览
  • 第六回 闪电门奇袭显威 混合阵诡变惊四方诗曰:显存如渊锁蛟龙,分块重算破九重。参数浩荡终有尽,巧夺天工方为雄。却说斯坦福闪电门主Tri Dao,率弟子苦修《FlashAttention》心法。这日闻得谷歌Transformer大军压境,冷笑道:"彼辈空有千亿参数,岂知算力调度之妙?" 遂布下"分块爆破阵",将注意力矩阵斩作碎玉残片。但见:显存读写如电闪,长文吞吐似龙吟。百万token过眼处,不滞片叶惊鬼神。谷歌先锋BERT连退三十里,折损三成算力。闪电门自此威震江湖,得号"显存刺客"。第七回 法
    Leagowang 2025-02-22 22:13 74浏览
  • 材料的电学性能主要包括导电性、介电性、压电性和热电性等,这些性能决定了材料在电场或温度变化时的行为和响应。材料的电学性能是描述其在电场作用下的各种物理现象的重要参数。以下是一些主要的电学性能:一、导电性导电性是衡量材料传导电流能力的物理量。金属是最常见的导电材料,其内部自由电子可以在电场作用下自由移动,从而形成电流。除了金属,某些离子液体和电解质也具有良好的导电性。导电性在电线、电路板和电极材料的选择中至关重要。二、介电性介电性描述的是材料在电场中的极化能力和储存电荷的能力。介电材料在电场中会发
    锦正茂科技 2025-02-24 11:35 84浏览
  • 在电磁兼容(EMC)领域,解决干扰问题的核心在于围绕EMC三要素——干扰源、耦合路径、敏感设备——进行系统性分析与设计。以下从三要素出发,结合具体案例与策略,探讨如何实现电磁兼容性优化。时源芯微   专业EMC解决方案提供商  为EMC创造可能一、EMC三要素的理论框架根据电磁兼容理论,任何EMC问题的产生必须同时满足三个条件:干扰源的存在、耦合路径的传导或辐射、敏感设备受到干扰29。因此,解决EMC问题的核心策略是:抑制干扰源:降低干扰源的强度或频率;阻断耦合路径
    时源芯微 2025-02-24 14:34 104浏览
  • 收到富芮坤开发板已经有很久了,今天与大家分享基于REPL MicroPython实现本地音乐播放。什么是REPL?其实REPL是Read-Eval-Print Loop 的缩写,中文可以理解为“读取-求值-输出循环”。它是一种交互式编程环境,允许用户输入代码并立即看到执行结果。REPL 是许多编程语言(如 Python、JavaScript 等)的常见特性。在 MicroPython 中,REPL 是一个非常重要的工具,它允许开发者通过串口与 MicroPython 设备(如 ESP32、ESP
    逗徐坤 2025-02-23 22:23 106浏览
  • 引言:智能家居设备的“双刃剑”——功能升级与续航/设计挑战 随着智能家居设备功能日益复杂化,用户对续航时间、设备体积和成本的要求也愈发严苛。以智能门锁为例,集成指纹识别、蓝牙连接、远程报警等功能已成为市场标配,但电池续航却难以突破1年大关;温控器需要24小时待机并实时监测环境数据,如何在低功耗与高性能间平衡成为行业难题。普冉MCU凭借低功耗硬件架构与高集成设计,直击这一矛盾,为智能家居设备提供“鱼与熊掌兼得”的解决方案。本文将以智能门锁与温控器为锚点,拆解普冉MCU如何破解续航焦虑与设计瓶颈。第
    中科领创 2025-02-22 17:21 60浏览
  • 1.keil SWD 烧录无法识别拿到开发板遇到得问题就是Keil无法烧录固件(跳线帽已经接到PB10 PB11), SWD 无法识别;这个无法烧录得原因是出厂demo里面的PB10 PB11被用做其他功能了。2.使用串口进行烧录将J9上得PB5与RX使用跳线帽连接,将PB4与TX使用跳线帽连接 打开烧录软件,如图选择待烧录固件复位开发板就可以自动进行烧录。3.烧录USB CDC 进行测试固件烧录成功后 DAP 烧录可以正常识别了;但是现在还无法直接使用keil进行烧录,因为没选择烧录算法,烧录
    neebourne 2025-02-23 21:02 94浏览
  •         在当今高度集成化和智能化的电子行业中,静电放电(ESD)和闩锁效应(Latch-Up,以下简称LU)是两大核心挑战。它们不仅可能导致芯片性能下降,甚至会造成永久性损坏,严重影响产品的可靠性和用户体验。因此,开展全面而有效的ESD测试和LU测试,对于电子行业而言至关重要。       ES612A型静电放电测试仪是一款专为评估晶圆级和封装级器件而设计的测试仪。该测试仪旨在满
    ESDEMC静电放电电磁兼容 2025-02-24 15:06 66浏览
  • 一、引言:MCU的跨界赋能与普冉技术定位      在万物互联的时代浪潮下,嵌入式微控制器(MCU)正从传统工业控制领域向消费电子市场快速渗透。智能手表、电动玩具、厨房电器等设备的“智能化”升级,离不开高性能、低功耗、高集成度的MCU支持。普冉半导体凭借其基于ARM Cortex-M0+内核的MCU产品线,通过工艺创新与场景化设计,在消费电子领域开辟了一条独特的国产替代路径。 普冉Cortex-M0+ MCU的核心竞争力在于:以32位处理器的性能实现8位处理器的成本
    中科领创 2025-02-22 17:12 80浏览
  • 最近DeepSeek非常热门,市场热度甚至超过2023年的GPT,因为它由中国研发,不受互联网“墙”的限制就能使用。国内多数普通人应该都听说过GPT,但有不少人可能还没用过。上周参与一个在线话题活动,参加的多是科技类公司的产品经理,主题是“机器人+AI”用于老龄化产品的可行性。我在活动上提了些我的观点,我认为当前的AI技术虽然看起来聪明,但要应用于适老化机器人,会有挺大风险。后来被主持人调侃为“思想有待进步”。其实我也知道,AI和机器人在非常热门的宣传阶段,你要“胆敢”说技术还不成熟、有风险,就
    牛言喵语 2025-02-23 22:32 116浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦