长期以来,实时操作系统一直是许多嵌入式系统的关键组件,从裸机调度过渡到 RTOS 可能很棘手。 这里有七个小方法可以帮助嵌入式开发人员更轻松地进行过渡。
方法 1 - 首先规划您的架构
如果您从未使用过 UML 或者对软件架构不感兴趣,那么现在是学习它的时候了。 使用 RTOS 时,开发人员仔细考虑每个任务、同步和通信机制至关重要。 这种细节不能仅仅存储在工程师的头脑中,而是需要以图形方式记录下来,以便在需要时查看和更新。 开发基于 RTOS 的应用程序很快就会变得复杂,因此考虑应用程序的行为非常重要。
方法 2 - 仔细跟踪视频内存使用情况
与开发裸机应用程序不同嵌入式系统软件教程,RTOS 任务和同步结构可以快速耗尽资源受限设备中的视频内存。 开发人员需要非常仔细地监控视频内存并跟踪它的去向。 创建六个任务、一些信号量和互斥体,却发现 malloc 失败,因为所有堆空间都已被使用嵌入式系统软件教程,这种情况并不罕见。
方法 3 - 预先创建所有任务
RTOS 为嵌入式开发人员提供了广泛的功能,例如创建任务和销毁任务的能力。 关心视频内存使用的开发人员可能更喜欢仅在需要时创建任务,然后在任务完成时销毁它们。 从概念上讲这很好,但在资源受限的系统中,通常没有可以处理堆碎片的复杂堆管理器。 结果可能是堆碎片,在程序执行期间的某个时刻突然没有视频内存可供分配。 建议在系统初始化期间创建所有使用堆的对象。 结果显然是静态分配的对象,如果存在视频内存问题,该问题将在系统启动时出现。
方法 4 – 切勿关闭堆栈保护!
裸机开发人员通常热衷于编写尽可能高效的代码。 意识到存在使用时钟周期的堆栈监视器成为优化和删除的一个令人着迷的目标。 不要这样做! 堆栈监视器用于测量堆栈溢出和其他堆栈相关问题。 实际上它确实使用了几个时钟周期,但其实用性远远超过了性能成本。
方法 5 - 优化每个任务堆栈
不要依赖默认的堆栈大小。 在许多 RTOS 中,任务的默认堆栈大小约为 0x200。 这通常是堆栈深度,而不是使用的字节数! 仅一个使 LED 闪烁的任务就可以使用一整 KB 的堆空间! 嵌入式开发人员确保执行最坏情况的堆栈分析,并正确确定每个任务的堆栈大小。 从长远来看,这将有助于节省视频内存!
方法 6 – 启用 RTOS 感知调试
现代微控制器具有一些非常酷的调试功能,例如实时跟踪和 RTOS 感知调试。 在微控制器和 RTOS 中启用此功能。 它们将允许开发人员跟踪哪些任务运行了多长时间、按什么顺序运行,并且可以帮助识别与 RTOS 相关的许多常见问题。
方法 7 - 仔细选择任务优先级
预先开发一款软件的一个动机是它特别有用,因为它提供了系统中正在发生的一切的总体情况。 有了这个大局,就可以更轻松地确定系统中每个任务的优先级。 必须仔细选择优先级,以确保任务不会占用 CPU 时间,并确保系统中不会出现优先级反转等问题。
推理
使用 RTOS 对于嵌入式开发人员来说非常有益,而且有助于推动开发周期。 许多中间件、库和框架都依赖于 RTOS,随着当今物联网设备的大力推动,裸机已经过时,掌握 RTOS 是必须的。