首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >/benefit在单片机上使用实时操作系统而不是while循环的原因

/benefit在单片机上使用实时操作系统而不是while循环的原因
EN

Stack Overflow用户
提问于 2018-05-22 02:01:18
回答 5查看 371关注 0票数 0

我在做一个轮式机器人平台。我的团队正在用MCU实现一些算法

  1. 继续读取传感器(声纳阵列,红外阵列,电机编码器,IMU)
  2. 接收用户命令(通过连接到平板电脑的串行端口)
  3. 控制执行机构(马达)执行用户命令。
  4. 继续向平板电脑发送传感器读数,以获取更复杂的算法。

我们目前在全局时间循环中实现所有东西,而我知道大多数其他用例在实时操作系统中做同样的事情。

请告诉我使用实时操作系统而不是简单的时间循环的好处和原因。

谢谢。

EN

回答 5

Stack Overflow用户

发布于 2018-06-09 22:10:43

RTOS将提供基于优先级的抢占。如果您的代码已停止解析串行命令并执行它,则在返回到您的beastly循环之前,它无法响应任何其他内容。RTOS将提供基于中断事件的即时上下文切换所需的抽象。否则,事件响应的最坏延迟将是主循环中可能最长的偏移时间,有时您确实需要长时间运行的进程。例如,更新LCD面板或响应USB设备枚举。先发制人允许你安全地做这些事情,因为你知道在CPU时钟运行的16位计时器不会在它完成之前滚动几次。对于简单的控制任务,一个循环就足够了,问题是当您进入USB设备枚举之类的东西时,它不再实用,需要完全重写。从一个像RTOS提供的抢占式框架开始,您就有了更多的未来灵活性。但肯定还有更多的前期工作,当然还有一个学习曲线。

票数 1
EN

Stack Overflow用户

发布于 2018-05-22 04:32:56

“实时”操作系统确保您的任务周期。如果您希望每100毫秒精确读取传感器数据,那么简单的that循环并不能保证这一点。另一方面,实时操作系统可以很容易地解决这个问题。RTOS为您提供了可预测性。一个操作将在给定的时间执行,并且不会错过。

RTOS为您提供信号量/互斥量,以便您的内存不会损坏,或者多个源不会访问缓冲区。

RTOS提供消息队列,对于任务之间的通信非常有用。

是的,您可以在While循环中实现所有这些特性,但这就是优势所在!你把一切都准备好并进行测试。

票数 0
EN

Stack Overflow用户

发布于 2018-05-22 12:00:00

如果while循环工作(即它满足系统的实时需求),并且它是健壮的、可维护的和可扩展的,那么使用实时操作系统可能没有好处。

但是,如果您的while-循环不能满足实时需求,或者过于复杂或过度扩展(即,任何更改都需要进一步的调优和调整以恢复实时性能),那么您应该考虑另一个体系结构。

RTOS体系结构是超越超级循环的一个流行的下一步。RTOS基本上是一个管理软件复杂性的工具。它允许您将一组复杂的软件需求划分为多个执行线程。当正确地完成时,每个单独的线程都有一组相对简单的需求,并且更容易实现。线程优先级可以使应用程序更容易地满足实时需求。这些基本上都是使用实时操作系统的好处。

然而,实时操作系统并不是万灵药。RTOS增加了整个系统的复杂性,并为您打开了新类型的bug(例如死锁)。有效地设计和实现一个基于RTOS的程序需要知识和经验。考虑一下替代方案,如多速率主回路任务或基于事件的状态机体系结构(如QP)。这些替代方案可能更简单、更容易理解,或者与您的软件设计方法更兼容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50458765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档