我在做一个轮式机器人平台。我的团队正在用MCU实现一些算法
我们目前在全局时间循环中实现所有东西,而我知道大多数其他用例在实时操作系统中做同样的事情。
请告诉我使用实时操作系统而不是简单的时间循环的好处和原因。
谢谢。
发布于 2018-06-09 22:10:43
RTOS将提供基于优先级的抢占。如果您的代码已停止解析串行命令并执行它,则在返回到您的beastly循环之前,它无法响应任何其他内容。RTOS将提供基于中断事件的即时上下文切换所需的抽象。否则,事件响应的最坏延迟将是主循环中可能最长的偏移时间,有时您确实需要长时间运行的进程。例如,更新LCD面板或响应USB设备枚举。先发制人允许你安全地做这些事情,因为你知道在CPU时钟运行的16位计时器不会在它完成之前滚动几次。对于简单的控制任务,一个循环就足够了,问题是当您进入USB设备枚举之类的东西时,它不再实用,需要完全重写。从一个像RTOS提供的抢占式框架开始,您就有了更多的未来灵活性。但肯定还有更多的前期工作,当然还有一个学习曲线。
发布于 2018-05-22 04:32:56
“实时”操作系统确保您的任务周期。如果您希望每100毫秒精确读取传感器数据,那么简单的that循环并不能保证这一点。另一方面,实时操作系统可以很容易地解决这个问题。RTOS为您提供了可预测性。一个操作将在给定的时间执行,并且不会错过。
RTOS为您提供信号量/互斥量,以便您的内存不会损坏,或者多个源不会访问缓冲区。
RTOS提供消息队列,对于任务之间的通信非常有用。
是的,您可以在While循环中实现所有这些特性,但这就是优势所在!你把一切都准备好并进行测试。
发布于 2018-05-22 12:00:00
如果while循环工作(即它满足系统的实时需求),并且它是健壮的、可维护的和可扩展的,那么使用实时操作系统可能没有好处。
但是,如果您的while-循环不能满足实时需求,或者过于复杂或过度扩展(即,任何更改都需要进一步的调优和调整以恢复实时性能),那么您应该考虑另一个体系结构。
RTOS体系结构是超越超级循环的一个流行的下一步。RTOS基本上是一个管理软件复杂性的工具。它允许您将一组复杂的软件需求划分为多个执行线程。当正确地完成时,每个单独的线程都有一组相对简单的需求,并且更容易实现。线程优先级可以使应用程序更容易地满足实时需求。这些基本上都是使用实时操作系统的好处。
然而,实时操作系统并不是万灵药。RTOS增加了整个系统的复杂性,并为您打开了新类型的bug(例如死锁)。有效地设计和实现一个基于RTOS的程序需要知识和经验。考虑一下替代方案,如多速率主回路任务或基于事件的状态机体系结构(如QP)。这些替代方案可能更简单、更容易理解,或者与您的软件设计方法更兼容。
https://stackoverflow.com/questions/50458765
复制相似问题