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确实是非常有必要的一件事。原文转载于: 网络,直接来源电子产品世界

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

    关注

    9

    文章

    3173

    浏览量

    76120
  • RTOS
    +关注

    关注

    25

    文章

    862

    浏览量

    122616
  • 裸机
    +关注

    关注

    0

    文章

    41

    浏览量

    6910

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    什么是嵌入式操作系统?

    要理解嵌入式操作系统(Embedded Operating System,简称 RTOS/EOS),我们可以本质定义→核心区别→实际作用→典型特征→嵌入式开发场景适配,五维度来拆解, 一
    发表于 12-09 10:33

    RTOS Crash 问题全维度分析与解决指南

    RTOS Crash往往伴随硬件级异常、任务调度紊乱、资源耗尽等核心问题,需结合RTOS内核特性、硬件架构、应用逻辑分层定位。 一、RTOS Crash的核心诱因分类
    发表于 12-08 03:56

    请问rtos效率能有裸机的多少啊?

    rtos效率能有裸机的多少啊?
    发表于 12-05 07:37

    学习RTOS的意义?

    对于嵌入式软件工程师,学习RTOS非常有必要。 1. 项目需要 随着产品要实现的功能越来越多,单纯的裸机系统已经不能完美地解决问题,反而会使编程变得更加复杂,如果想降低编程的难度,就必须引入
    发表于 11-27 08:16

    RTOS 必学概念:任务、信号量、队列一次搞懂

    FIFO缓冲区?”这些问题听起来基础,但又总是绕在初学者脑子里。很多人直接拿FreeRTOS、RTX这样的RTOS例程开搞,能跑起来,却完全没理解任务调度、信号
    的头像 发表于 11-17 10:53 198次阅读
    <b class='flag-5'>RTOS</b> 必学概念:任务、信号量、队列一次搞懂

    FreeRTOS任务调度及优先级问题

    大家好,最近本人在学习FreeRTOS ,之前有过一些裸机开发的经验,目前知道了FreeRTOS的任务是基于时间片轮转来调度,也就是知道了任务会基于各个时间片来运行。 于是联想了如果有一些外设芯片
    发表于 11-06 02:18

    嵌入式rtos中哪一更加值得去学习?

    嵌入式圈里聊 RTOS,总有人揪着任务调度的那点差异争得面红耳赤,可实际上这东西做透了大家都大差不差 —— 优先级调度、时间片轮转,核心逻辑翻来覆去就那些,真到项目里谁也没比谁快出多少,哪怕是所谓
    的头像 发表于 11-05 10:48 556次阅读
    嵌入式<b class='flag-5'>rtos</b>中哪一<b class='flag-5'>个</b>更加值得去学习?

    深度技术解析nRF Connect SDK裸机选项方案

    设计,例如需要连接功能的直接数据交换应用(如医疗设备、运动可穿戴设备、追踪器或信标等场景),此类应用毋须使用RTOS或高级功能。 裸机选项已集成至nRF Connect for VS Code开发环境
    发表于 10-31 23:11

    深度技术解析低功耗蓝牙厂商nordic的nRF Connect SDK裸机选项方案

    SDK 环境 支持裸机选项升级至Zephyr RTOS,完全具备nRF Connect SDK全部功能 上市时可用示例: 低功耗蓝牙:心率服务、LED按钮服务、Nordic UART服务、外设功耗分析
    发表于 10-29 21:17

    指挥调度系统:“指令台”到“智能核心”的升级

    当人们谈论指挥调度时,脑海中浮现的往往是战时指挥部的地图沙盘,或是紧急救援中心里此起彼伏的电话铃声。传统的指挥调度系统,就像一高度集中的“超级大脑”,依靠有限的讯息和人的经验,向肢体(执行单元
    的头像 发表于 10-10 11:47 251次阅读

    【STM32单片机学习进阶路线】FreeRTOS嵌入式开发指南:入门到智能循迹避障小车项目实战(含文档代码)

    STM32的学习路径一般是先掌握裸机开发,再进阶学习RTOS。简单的功能可通过裸机实现,而复杂产品则需借助RTOS来完成。随着RTOS应用场
    的头像 发表于 05-29 11:46 898次阅读
    【STM32单片机学习进阶路线】FreeRTOS嵌入式开发指南:<b class='flag-5'>从</b>入门到智能循迹避障小车项目实战(含文档代码)

    STM32裸机及FreeRTOS项目分享:U575智能手表+F103智能循迹避障小车(附全套教程/代码)

    初学者学STM32时,有一好的学习路线是非常重要的,推荐"裸机开发--裸机项目--RTOS开发--RTOS项目"这个体系化路线,
    的头像 发表于 05-27 17:09 1180次阅读
    STM32<b class='flag-5'>裸机</b>及FreeRTOS项目分享:U575智能手表+F103智能循迹避障小车(附全套教程/代码)

    RTOS如何在FX3中工作?

    大家好, 我正在使用 FX3 进行一项目。 我想知道 RTOS 调度是如何工作的。 我知道调用“CyU3PKernelEntry();”后 RTOS 就会开始工作。 如果我只注册
    发表于 05-06 13:20

    “国产双系统”出炉!复旦微FMQL20SM非对称AMP:Linux + 裸机

    Linux + RTOS/裸机,但需一主核心来控制整个系统以及其它从核心。每个处理器核心相互隔离,拥有属于自己的内存,既可各自独立运行不同的任务,又可多个核心之间进行核间通信。 图 1 FMQL20SM AMP异构多核框架示意
    的头像 发表于 01-24 13:46 1182次阅读
    “国产双系统”出炉!复旦微FMQL20SM非对称AMP:Linux + <b class='flag-5'>裸机</b>

    EE-130:ADSP-21xx快速过渡到ADSP-219x

    电子发烧友网站提供《EE-130:ADSP-21xx快速过渡到ADSP-219x.pdf》资料免费下载
    发表于 01-14 15:04 0次下载
    EE-130:<b class='flag-5'>从</b>ADSP-21xx快速<b class='flag-5'>过渡到</b>ADSP-219x