嵌入式开发如何使用RTOS?7个RTOS的使用技巧
实时操作系统已成为许多嵌入式系统的关键组件,从裸机调度过渡到 RTOS 可能会很棘手。如何使用 RTOS 进行嵌入式开发?这里有7个技巧可以帮助嵌入式开发人员更轻松地进行过渡,快来学习一下吧!
1、首先规划架构
如果从未使用过 UML 或对软件架构不感兴趣,那么现在是学习它的时候了。使用 RTOS 时,开发人员仔细考虑每个任务、同步和通信机制至关重要。这些细节不能只存储在工程师的头脑中,而是需要以图表的形式记录下来,以便在需要时查看和更新。开发基于 RTOS 的应用程序很快就会变得复杂,因此考虑应用程序的行为很重要。
2、仔细跟踪内存使用情况
与开发裸机应用程序不同,RTOS 任务和同步结构可以快速耗尽资源受限设备中的内存。开发人员需要非常仔细地监控内存并跟踪它的去向。创建六个任务,几个信号量和互斥锁的情况并不少见,结果却发现 malloc 失败,因为所有的堆空间都已用完。
3、提前创建所有任务
RTOS 为嵌入式开发人员提供了广泛的功能,例如创建任务和销毁任务的能力。关注内存使用的开发人员可能倾向于仅在需要时创建任务,然后在任务完成时销毁它们。虽然这在概念上很好,但在资源受限的系统中,通常没有复杂的堆管理器来处理堆碎片。结果可能是一个碎片堆,在程序执行期间的某个时刻突然没有内存可以分配。建议在系统初始化期间创建所有使用堆的对象。结果似乎是一个静态分配的对象,如果存在内存问题,该问题将在系统启动时显现出来。
4、永远不要关闭堆栈保护
裸机开发人员通常痴迷于编写尽可能高效的代码。意识到使用时钟周期的堆栈监视器的存在成为优化和删除的有吸引力的目标,不要这样做。Stack Monitor 用于检测堆栈溢出和其他堆栈相关问题。虽然它确实使用了几个时钟周期,但好处远远超过了性能成本。
5、优化每个任务堆栈
不要依赖默认的堆栈大小。在许多 RTOS 中,任务的默认堆栈大小约为 0x200。这通常是堆栈深度,而不是使用的字节数。仅使 LED 闪烁的任务可能会使用一整千字节的堆空间。嵌入式开发人员确保执行最坏情况堆栈分析并适当确定每个任务堆栈的大小。从长远来看,这将有助于节省内存!
6、启用 RTOS 感知调试
现代微控制器具有一些非常酷的调试功能,例如实时跟踪和 RTOS 感知调试。在微控制器和 RTOS 中启用这些功能。它们将允许开发人员跟踪哪些任务运行了多长时间、以什么顺序运行,并且可以帮助识别许多常见的 RTOS 相关问题。
7、仔细选择你的任务优先级
预先开发一个软件如此有用的一个原因是提供了系统中发生的一切的大图。有了这张大图,就可以更轻松地确定系统中每个任务的优先级。必须谨慎选择优先级,以确保任务不会占用 CPU 时间,并确保系统不会出现优先级倒置等问题。
嵌入式开发如何使用RTOS?综上所述,使用 RTOS 对嵌入式开发人员非常有益,有助于加快开发周期。许多中间件、库和框架都依赖于 RTOS,随着当今物联网设备的大规模推动,裸机已经过时,掌握 RTOS 是强制性的。更多关于物联网培训的问题,欢迎咨询千锋教育在线名师。千锋教育拥有多年IT培训服务经验,采用全程面授高品质、高体验培养模式,拥有国内一体化教学管理及学员服务,助力更多学员实现高薪梦想。