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

    文章

    2957

    浏览量

    73781
  • RTOS
    +关注

    关注

    21

    文章

    809

    浏览量

    119336
  • 裸机
    +关注

    关注

    0

    文章

    39

    浏览量

    6326

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

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

收藏 人收藏

    评论

    相关推荐

    用GNU构建裸机系统

    基于AT91SAM7S平台,介绍裸机开发,以闪灯为蓝本,涉及汇编、链接、C/C++、中断等。   无处不在的ARM处理器家族得到了GNU C/C++工具链的良好支持。虽然许多在线和印刷资源关注
    发表于 10-16 17:34 0次下载

    freertos和裸机有什么区别

    FreeRTOS 和裸机编程是两种不同的嵌入式系统开发方法,它们在设计理念、资源使用、功能实现等方面有着显著的差异。 1. 基本概念 1.1 FreeRTOS FreeRTOS 是一小型的、可裁剪
    的头像 发表于 09-02 14:13 798次阅读

    RTOS的特性和类型

    实时操作系统(RTOS)是一种可运行实时计算应用程序的软件平台,用于处理具有明确时间约束的事件和数据。与通用操作系统(GPOS)不同,RTOS必须在有限的硬件资源上调度应用程序之间的处理和数据共享
    的头像 发表于 08-20 11:29 430次阅读

    如何将PSoC4000部件的设计过渡到PSoC4000T部件?

    英飞凌提供哪些支持,帮助客户将现有 PSoC 设计转移到新产品中? 如何将 PSoC4000 部件的设计过渡到 PSoC4000T 部件? PSoC4000 部件仅支持 PSoC Creator
    发表于 05-29 06:35

    请问CMSIS-RTOS RTX的任务调度锁在哪里?

    请问一下,CMSIS-RTOS RTX的任务调度锁在哪里?谢谢!
    发表于 05-13 08:28

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

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

    STM32mp135裸机开发无法使用DDR吗?

    /STM32CubeMP13_Package_-_Getting_started#Integrating_AzureRTOS_middleware 咨询一下关于DDR的使用问题: 1.只有RTOS的才能对DDR进行配置吗? 2.单纯裸机开发(无
    发表于 03-11 07:01

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

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

    我们该如何选择最适合的实时操作系统?

    随着越来越多的团队转向32位微控制器并持续去采用物联网技术,对RTOS的需求只会不断增长。如果您正在过渡到RTOS或最近已经这样做了,您就会知道选择RTOS是一项重大挑战。那么,该如何
    发表于 01-31 16:47 419次阅读

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

    嵌入式系统中,有很多方式实现任务调度。功能有限的小系统中,无限循环足够实现小系统的功能。当软件设计变得庞大且复杂时,开发者应该考虑使用实时操作系统RTOS
    的头像 发表于 01-24 18:23 1478次阅读
    分享几点<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

    ESP32的接口不能随便用,如何快速Arduino过渡到ESP32的新手指南-进阶篇

    进阶篇 接续如何快速Arduino过渡到ESP32的新手指南-基础篇,继续了解ESP32的各种引脚接口吧! 内容介绍 1. SPI引脚 2. I2C引脚 3. UART引脚 4. RTC引脚 5.
    的头像 发表于 12-12 15:54 2.4w次阅读
    ESP32的接口不能随便用,如何快速<b class='flag-5'>从</b>Arduino<b class='flag-5'>过渡到</b>ESP32的新手指南-进阶篇

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

    多处理架构。“非对称AMP”双系统是指多个核心相对独立运行不同的操作系统或裸机应用程序,如Linux + RTOS/裸机,但需一主核心来控制整个系统以及其它从核心。每个处理器核心相互
    发表于 12-01 09:35

    如何快速Arduino过渡到ESP32的新手指南-基础篇

    。 本文将为你提供 Arduino到ESP32 GPIO引脚平稳过渡的指南 ,让你轻松解决各种问题。 基础篇内容 引脚使用注意事项 电源引脚 ADC引脚 DAC引脚 PWM引脚 Touch引脚 学会
    的头像 发表于 11-21 08:36 2256次阅读
    如何快速<b class='flag-5'>从</b>Arduino<b class='flag-5'>过渡到</b>ESP32的新手指南-基础篇

    新手必看的RTOS基础知识

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