使用RTOS的7个技巧

实时操作系统(RTOS)已成为许多嵌入式系统中的关键组件。从裸机调度过渡到RTOS可能会很棘手。这里有七个技巧,可以帮助您轻松过渡。

带有粉红色粘滞便笺的计算机键盘,带有文本提示和技巧,提示和技巧

提示#1 –首先规划您的架构

如果您从未使用过UML或不熟悉软件体系结构,那么现在是时候学习它了。使用RTOS时,开发人员必须仔细考虑每个任务,同步和通信机制,这一点至关重要。这些详细信息不仅可以存储在工程师的脑海中,还需要以图表形式记录下来,以便可以根据需要进行检查和更新。开发基于RTOS的应用程序可能会很快变得复杂,因此必须仔细考虑应用程序的行为方式。

技巧2 –仔细跟踪内存使用情况

与开发裸机应用程序不同,RTOS任务和同步构造可以非常快地在资源受限的设备中耗尽内存。开发人员需要非常仔细地监视内存,并跟踪内存的运行情况。创建六个任务,几个信号灯和互斥锁只是为了发现malloc失败是很常见的,因为所有的堆空间已被使用。

提示#3 –预先创建所有任务

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

提示4 –切勿关闭堆栈保护器!

Baremetal开发人员经常沉迷于编写尽可能高效的代码。意识到有一个堆栈监视器占用了多个时钟周期,这成为进行优化和删除的诱人目标。不要做!堆栈监视器用于检测堆栈溢出和与堆栈相关的其他问题。是的,它确实使用了几个时钟周期,但其收益远大于性能成本。

提示5 –优化每个任务堆栈

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

提示#6 –启用RTOS感知调试

现代微控制器具有一些非常酷的调试功能,例如实时跟踪和支持RTOS的调试。在微控制器上和RTOS中启用这些功能。它们将使开发人员能够跟踪哪些任务以何种顺序运行了多长时间,并且可以帮助确定与RTOS相关的许多常见问题。

提示#7 –仔细选择任务优先级

预先开发软件如此有用的原因之一是,它可以为系统中发生的所有事情提供全面的了解。有了这样的全局,就可以轻松确定系统中每个任务的优先级。必须仔细选择优先级,以确保不会因CPU时间而使任务饿死,并确保优先级倒置等问题不会在系统中发生。

结论

对于开发人员而言,使用RTOS可能会非常有益,并且可以帮助加快开发周期。许多中间件,库和框架都依赖于RTOS,而在当今物联网设备的巨大推动下,裸机已经淘汰,必须掌握RTOS。

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

该网站使用Akismet减少垃圾邮件。 了解如何处理您的评论数据.