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

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

3天内不再提示

RTOS应用程序设计的五个实战技巧

工程师进阶笔记 来源:CSDN技术社区 2023-04-18 10:02 次阅读

今天聊一下RTOS应用程序设计的五个实战技巧。

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

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

一、任务分解

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

有许多技术可用于分解任务,但我喜欢使用的一种对嵌入式开发人员很有效的方法是,使用由外向内(outside-in)的方法。在这种方法中,开发人员遵循七个简单的步骤:

识别并列出主要的系统组件;

绘制高级框图;

标记系统输入;

标记输出;

确定一级任务;

确定并发级别和依赖项;

确定第二层任务(应用程序任务);

在为恒温器等物联网传感器节点执行此过程时,最终可能会得到如下图所示:

ccd59e56-dd0a-11ed-bfe3-dac502259ad0.png

在这种情况下,系统通常有六个任务,其中一个任务监督应用程序代码。(根据系统复杂性,可以进一步分解此任务)。

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

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

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

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

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

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

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

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

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

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

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

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

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

例如,我可以假设具有以下任务的系统的行为方式并确定它是否可以成功调度其任务:

cce1f804-dd0a-11ed-bfe3-dac502259ad0.png

对于使用 RMS 的系统,对于具有无限数量任务的系统,所有这些任务的 CPU 使用率必须低于 69.3%。对于上述系统,我们可以看到总利用率为 52%,这意味着它们应该是可调度的。

四、使用同步和数据流图

在使用由外向内(outside-in)的方法确定我在应用程序中需要的所有任务后,我通常会创建一个同步和数据流图。此图的目的是:

映射系统中所有数据的来源

映射数据如何从其源转移到系统中的任务

映射如何存储和访问该数据

映射如何使用该数据来生成系统输出

早些时候,我以连接互联网的恒温器为例。下面是我们可能为该应用程序制作的数据流和同步图。

cced2e68-dd0a-11ed-bfe3-dac502259ad0.png

如您所见,此图不仅可以帮助我们了解数据如何在系统中移动,还可以帮助我们了解应用程序中所需的 RTOS 组件,例如:

队列

流缓冲区

信号

互斥体

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

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

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

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

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

目标是预先检查每个消息队列,然后为这些消息构建结构。这很重要,因为它将定义消息的外观,而且还将有助于任何底层模块的接口的外观。例如,管理一系列阀门的任务可能需要包含以下内容的消息:

阀门 ID

阀门状态

阀门所需的时间

再说一次,它可能会期待:

定义阀门状态的面罩

准时清单

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

结论

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

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

审核编辑:汤梓红

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

    关注

    2550

    文章

    51035

    浏览量

    753053
  • 嵌入式
    +关注

    关注

    5082

    文章

    19104

    浏览量

    304784
  • 嵌入式系统
    +关注

    关注

    41

    文章

    3587

    浏览量

    129432
  • RTOS
    +关注

    关注

    22

    文章

    811

    浏览量

    119588
  • 应用程序
    +关注

    关注

    37

    文章

    3265

    浏览量

    57677

原文标题:嵌入式 RTOS 程序设计的 5 个实战技巧

文章出处:【微信号:工程师进阶笔记,微信公众号:工程师进阶笔记】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    嵌入式5RTOS程序设计建议

    我在编写RTOS应用程序的过程中,经常会遇到这些困难,包括正确确定系统中有多少任务、如何设置优先级、协调任务行为、避免常见陷阱,有时只是为了让应用程序正常工作!
    发表于 11-07 09:47 515次阅读

    RTOS应用程序设计实践技巧

    我在编写RTOS应用程序的过程中,经常会遇到这些困难,包括正确确定系统中有多少任务、如何设置优先级、协调任务行为、避免常见陷阱,有时只是为了让应用程序正常工作!
    发表于 07-07 16:10 753次阅读
    <b class='flag-5'>RTOS</b><b class='flag-5'>应用程序设计</b>的<b class='flag-5'>五</b><b class='flag-5'>个</b>实践技巧

    FPGA应用开发实战技巧精粹

    #电子书连载#《FPGA应用开发实战技巧精粹》第6章 Synplify综合工具使用技巧, 综合工具将 HDL 描述的语句转换为布局布线工具可以识别的网表格式(EDF格式) ,在 FPGA 的设计中非
    发表于 08-05 11:10

    单片机C语言应用程序设计

    单片机C语言应用程序设计针对目前最通用的单片机8051和最流行的程序设计语言——C语言,以KEII。公司8051单片机开发套件讲解单片机的C语言应用程序设计。该套件的编译器有支
    发表于 10-09 17:53 171次下载
    单片机C语言<b class='flag-5'>应用程序设计</b>

    键盘应用程序设计

    键盘应用程序设计 键盘使用的编码
    发表于 06-12 23:11 968次阅读
    键盘<b class='flag-5'>应用程序设计</b>

    鼠标应用程序设计

    鼠标应用程序设计     用汇编语言编写的鼠标和键盘应用程序。   在程序执行后屏幕上显示包括鼠标和键盘的状态。当用户移动鼠标时
    发表于 06-12 23:17 1285次阅读

    单片机应用程序设计技术

    本内容提供了单片机应用程序设计技术的修订版,欢迎大家下载参阅
    发表于 04-22 19:38 1141次下载
    单片机<b class='flag-5'>应用程序设计</b>技术

    GPS应用程序设计

    GPS基本知识介绍以及应用程序设计 非常实用的资料
    发表于 12-21 15:00 0次下载

    基于MATLAB平台的DSP嵌入式应用程序设计的研究

    基于MATLAB平台的DSP嵌入式应用程序设计的研究
    发表于 10-20 15:09 5次下载
    基于MATLAB平台的DSP嵌入式<b class='flag-5'>应用程序设计</b>的研究

    MATLAB程序设计资料合集免费下载

    本文档的主要内容详细介绍的是MATLAB程序设计资料合集免费下载主要内容包括了:第1章基本使用方法,第2章数值运算,第3章符号运算,第4章计算结果的可视化,第5章程序设计
    发表于 11-09 08:00 19次下载

    基于RTOS应用程序最佳实践技巧

    的嵌入式系统使用 RTOS,而且随着系统的时序要求变得越来越复杂,这个数字只会随着时间的推移而增加。在今天的文章中,我们将研究设计基于 RTOS应用程序
    的头像 发表于 08-11 11:32 2503次阅读
    基于<b class='flag-5'>RTOS</b>的<b class='flag-5'>应用程序</b>的<b class='flag-5'>五</b><b class='flag-5'>个</b>最佳实践技巧

    多线程RTOS应用程序最佳实践

      这种方法允许记录来自应用程序的任何相关信息,包括在运行时未公开的内部数据和状态。数据可以与可视化执行时间线并行绘制,以便在运行时深入了解您的应用程序。这样,您就可以制作出能够击败竞争对手的出色产品。
    的头像 发表于 06-21 09:45 1752次阅读
    多线程<b class='flag-5'>RTOS</b><b class='flag-5'>应用程序</b>的<b class='flag-5'>五</b><b class='flag-5'>个</b>最佳实践

    关于嵌入式RTOS程序设计的5建议

      今天聊一下RTOS应用程序设计实践技巧。
    发表于 11-18 10:33 542次阅读

    基于RTOS应用程序最佳实践技巧

    的嵌入式系统使用 RTOS,而且随着系统的时序要求变得越来越复杂,这个数字只会随着时间的推移而增加。在今天的文章中,我们将研究设计基于 RTOS应用程序
    的头像 发表于 07-07 16:49 986次阅读
    基于<b class='flag-5'>RTOS</b>的<b class='flag-5'>应用程序</b>的<b class='flag-5'>五</b><b class='flag-5'>个</b>最佳实践技巧

    摆脱自建库的繁琐,EDA元件库转cadence原理图封装库实战技

    摆脱自建库的繁琐,EDA元件库转cadence原理图封装库实战技
    的头像 发表于 08-24 12:29 2628次阅读
    摆脱自建库的繁琐,EDA元件库转cadence原理图封装库<b class='flag-5'>实战技</b>巧