前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >嵌入式裸机过渡到RTOS七点建议~

嵌入式裸机过渡到RTOS七点建议~

作者头像
混说Linux
发布2023-02-24 18:44:43
3270
发布2023-02-24 18:44:43
举报
文章被收录于专栏:混说Linux混说Linux

第一时间看干货文章

实时操作系统已经成为许多嵌入式系统中的关键组件,从裸机调度过渡到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确实是非常有必要的一件事。

本文系网络转载,版权归原作者所有,如有侵权,请联系删除。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-02-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 混说Linux 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档