首页 > 解决方案 > 在 MCU 上使用实时操作系统而不是 while-loop 的原因/好处

问题描述

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

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

我们目前在全局 while 循环中实现所有内容,而我知道大多数其他用例使用实时操作系统执行相同的操作。

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

谢谢。

标签: operating-systemcontrolsreal-timemicrocontrollerrobotics

解决方案


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


推荐阅读