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

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

3天内不再提示

从裸机调度过渡到RTOS的7个小技巧

lilihe92 来源:最后一个bug 作者:最后一个bug 2022-11-29 11:09 次阅读

正文

实时操作系统已经成为许多嵌入式系统中的关键组件,从裸机调度过渡到RTOS可能是一件棘手的事情。这里有七个小技巧可以帮助嵌入式开发人员更轻松地完成过渡。

1

首先规划你的架构

如果你从未使用过UML或者对软件架构不感兴趣,现在是时候学习一下了。 使用RTOS时,开发人员仔细考虑每项任务、同步和通信机制是至关重要的。这些细节不能仅仅存储在工程师的头脑中,而是需要以图表的形式记录下来,以便在需要时可以查看和更新。开发一个基于RTOS的应用程序会很快变得复杂,考虑清楚应用程序的行为是很重要的。

2

仔细跟踪内存的使用情况

与开发裸机应用程序不同,RTOS任务和同步结构会很快耗尽资源受限设备中的内存。开发人员需要非常小心地监控内存,并跟踪内存的去向。

创建几个任务、几个信号量和互斥体,却发现malloc因为所有堆空间都已被使用而失败,这种情况并不罕见。

3

预先创建所有的任务

RTOS为嵌入式开发人员提供了广泛的功能,例如创建任务和销毁任务的能力。关心内存使用的开发人员可能倾向于只在需要时创建任务,然后在任务完成后销毁它们。虽然这在概念上很棒,但在资源受限的系统中,通常没有复杂的堆管理器可以处理堆碎片。结果可能是一个碎片堆,在程序执行过程中的某个时刻突然没有内存可以分配。 建议在系统初始化期间创建所有使用堆的对象。结果似乎是静态分配的对象,如果存在内存问题,该问题将在系统启动时显现出来。

4

尽量不要关闭堆栈保护

裸机开发者通常痴迷于编写尽可能高效的代码。意识到存在使用时钟周期的堆栈监视器成为优化和移除的诱人目标。尽量不要这样做!

堆栈监视器用于检测堆栈溢出和其他与堆栈相关的问题。虽然它确实使用了几个时钟周期,但好处远远超过了性能成本。

5

优化任务堆栈

不要依赖默认的堆栈大小。在许多RTOS中,任务的默认堆栈大小大约是0x200。这通常是堆栈深度,而不是使用的字节数!仅仅是一个闪烁的LED的任务就可能使用了整整千字节的堆空间! 嵌入式开发人员确保执行最坏情况堆栈分析,并适当地确定每个任务堆栈的大小。从长远来看,这将有助于节省内存!

6

启动RTOS感知调试

现代微控制器有一些非常酷的调试功能,如实时跟踪和RTOS感知调试。在微控制器和RTOS中启用这些功能。它们将允许开发人员跟踪哪些任务运行了多长时间,以什么顺序运行,并且可以帮助识别许多与RTOS相关的常见问题。

7

仔细选择任务优先级

预先开发一个软件非常有用的一个原因是,它提供了系统中发生的所有事情的大画面。有了这个大图,决定系统中每个任务的优先级就变得更容易了。必须仔细选择优先级,以确保任务不会耗尽CPU时间,并确保系统中不会出现优先级反转等问题。

8

最后

使用RTOS对嵌入式开发人员来说是非常有益的,并且有助于加快开发周期。许多中间件、库和框架依赖于RTOS,掌握RTOS确实是非常有必要的一件事。原文转载于: 网络,直接来源电子产品世界

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

    关注

    8

    文章

    2767

    浏览量

    72765
  • RTOS
    +关注

    关注

    20

    文章

    776

    浏览量

    118796
  • 裸机
    +关注

    关注

    0

    文章

    37

    浏览量

    6154

原文标题:嵌入式裸机过渡到RTOS七点建议~

文章出处:【微信号:最后一个bug,微信公众号:最后一个bug】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    请问cortex-M7核单片机主要应用在哪些领域?

    看到st和nxp的M7核单片机,动不动几百兆的主频,有的还要外置DDR,还有的成本低于1刀。想知道这些单片机的目标应用场合是哪些? 单片机发展,51过渡到cortex m3,现在又要从cortex m3
    发表于 04-17 07:49

    何时选择裸机?何时选择RTOS?何时选择GPOS?

    在每个开发项目的初期,你都必须选择软件开发的基础。虽然有很多选择,但它们通常分为三类:裸机、实时操作系统(RTOS)或通用操作系统(GPOS)。
    的头像 发表于 02-27 11:42 356次阅读

    分享几点RTOS相比裸机的优势

    嵌入式系统中,有很多方式实现任务调度。功能有限的小系统中,无限循环足够实现小系统的功能。当软件设计变得庞大且复杂时,开发者应该考虑使用实时操作系统RTOS
    的头像 发表于 01-24 18:23 978次阅读
    分享几点<b class='flag-5'>RTOS</b>相比<b class='flag-5'>裸机</b>的优势

    DeepSleep模式过渡到活动模式时,IMO和ECO时钟在唤醒过程中是如何运行的呢?

    我正在使用 CYT2B95。 我在主动模式下使用 ECO 作为 FLL/PLL 参考时钟。 DeepSleep 模式过渡到活动模式时,IMO 和 ECO 时钟在唤醒过程中是如何运行的? 问题 1
    发表于 01-24 07:52

    新手必看的RTOS基础知识

    时间片调度保证每个线程都有一个要执行的槽。这种类型的调度通常不利于实时应用。如果需要,TI-RTOS内核支持使用任务进行时间切片调度
    的头像 发表于 11-20 16:06 1490次阅读
    新手必看的<b class='flag-5'>RTOS</b>基础知识

    RTOS相比裸机有什么优点?RTOS相比裸机更方便吗?

    RTOS相比裸机有什么优点?RTOS相比裸机更方便吗? RTOS代表实时操作系统,专门为需要高可靠性和可预测性的系统设计。相比之下,裸金属或
    的头像 发表于 10-29 16:33 1009次阅读

    RTOS会比裸机实时性好吗?

    RTOS会比裸机实时性好么
    发表于 10-13 07:17

    低功耗应用是用RTOS还是裸机,哪个省电?

    低功耗应用是用RTOS还是裸机,哪个省电?
    发表于 09-20 07:43

    “国产双系统”出炉,RK3568J非对称AMP:Linux+RTOS/裸机

    ,如Linux+RTOS/裸机,但需一个主核心来控制整个系统以及其它从核心。每个处理器核心相互隔离,拥有属于自己的内存,既可各自独立运行不同的任务又可多个核心之间进行核间通信
    的头像 发表于 09-13 08:07 825次阅读
    “国产双系统”出炉,RK3568J非对称AMP:Linux+<b class='flag-5'>RTOS</b>/<b class='flag-5'>裸机</b>

    构建RTOS Kernel指南 (上)

    1 前言 试想与我们相伴的MCU如若只存在裸机程序,那么运行到一个包含延时的线程时,我们的CPU就开始“摸鱼”了。 为了最大化运行CPU,就需要用到RTOS(RealTime Operating
    的头像 发表于 08-03 08:45 387次阅读
    构建<b class='flag-5'>RTOS</b> Kernel指南 (上)

    朱天龙:学习和掌握RTOS最好的方法

    》 。这篇文章里的一些观点放在今天,仍然是适用的。比如:裸机在并发性、模块化、实时性、可重用性以及生态上的缺陷。当你使用裸机写的软件越多,功能越复杂,你所遇到的问题也会越来越多。 这次主要是想跟大家分享一下”如何学习和掌握RTOS
    的头像 发表于 07-28 20:45 723次阅读
    朱天龙:学习和掌握<b class='flag-5'>RTOS</b>最好的方法

    RTOS核心:调度和分割

    对许多嵌入式项目来说,系统设计师都倾向于选择实时操作系统(RTOS)。但RTOS总是必要的吗?答案是取决于具体的应用,因此了解我们要达到什么目标是决定RTOS是必要的还是花瓶的关键。 一般来说
    的头像 发表于 06-22 10:46 438次阅读

    分享一下Cortex-M裸机环境下临界区保护的几种实现方法

    RTOS有临界区,裸机依然有临界区。今天给大家分享一下Cortex-M裸机环境下临界区保护的几种实现方法。
    发表于 06-13 09:08 317次阅读
    分享一下Cortex-M<b class='flag-5'>裸机</b>环境下临界区保护的几种实现方法

    RTOS常用的调度算法

    裸机(前后台架构)的软件开发过渡到使用实时操作系统(RTOS)可能是一项困难的工作。
    的头像 发表于 05-29 09:22 498次阅读
    <b class='flag-5'>RTOS</b>常用的<b class='flag-5'>调度</b>算法

    RTOS应用中的调度策略

    RTOS中,协同调度是基于优先级的非抢占调度方法。任务按优先级排序,并且是事件驱动类型的,一旦正在运行的任务完成,或者任务主动调用OS服务放弃CPU,就绪运行的优先级最高的任务才可以获得CPU使用权。
    的头像 发表于 05-29 09:19 388次阅读
    <b class='flag-5'>RTOS</b>应用中的<b class='flag-5'>调度</b>策略