实时操作系统(RTOS)已进入50%以上的嵌入式项目。RTOS可以帮助我们管理系统计时、资源、内存等等。它们为我们提供了高效调度的工具,例如时间片和线程抢占,同时简化了任务间通信。
随着越来越多的团队转向32位微控制器并持续去采用物联网技术,对RTOS的需求只会不断增长。如果您正在过渡到RTOS或最近已经这样做了,您就会知道选择RTOS是一项重大挑战。那么,该如何选择RTOS呢?
选择RTOS时,我们应避免几个常见错误。
首先,团队第一时间排除掉使用商业RTOS选项的情况并不罕见。既然有这么多开源RTOS可用,为什么还有人追求商业RTOS?原因通常可以归结为认证、质量、安全和支持等方面的考虑。由于这些原因,我们不应第一时间排除掉商业RTOS。
其次,不要仅仅因为我们的芯片供应商直接支持它就选择其作为自己的RTOS。虽然这种支持通常是振奋人心的,但您会发现它们通常落后于最新版本的RTOS。在这种情况下,我们可能无法像直接访问源头那样快速获得关键安全更新。
最后,不要仅仅因为当前流行而选择RTOS。在我的职业生涯中,我目睹了许多潮流的来来去去。在某些情况下,它们的变化以年为单位,甚至更少。技术喜欢闪闪发光的新玩具,但如果您正在构建一个需要多年支持的产品,您可能不能够采用时髦的、未经验证的解决方案。
选择RTOS应该是一项工程追求。这意味着我们要以科学的、以工程为中心的方式进行选择。首先要确定RTOS中所需的关键功能。可能是性能、代码大小、安全功能等。最好先列出一个清单。
接下来,查看您的清单,并根据其重要性给出一个数值。例如,如果许可成本很重要,您可以将其列为5。如果许可成本不重要,则指定为1甚至0。通过这样排序,可以了解哪些因素对选择过程是必不可少的。它告诉我们想要的RTOS要具有哪些功能和特性。毕竟,没有两个RTOS是完全相同的,或以相同的方式提供相同的功能。
只有在确定了功能清单并对其进行排序后,我们才可以评估哪种RTOS适合我们的应用。每个开发人员自己的偏见都可能会影响选择过程。我通常建议团队使用KT矩阵来执行评估。每个开发人员都可以对考虑中的每个RTOS与所需功能清单的匹配程度进行评分。他们可以提供0–5之间的评级,然后可以与功能排序一起生成加权值。加权后的功能总和可用于比较每个RTOS在多大程度上满足了应用的需求。
这样就能做出无偏见的决定,选择适合团队需求的RTOS。我们可能会发现,根据我们的应用,不止一种RTOS适用。当发生这种情况时,我们就可以根据个人偏好来选择要使用的系统。
选择一个能与我们的应用配合使用并在可预见的未来继续保持良好运行的RTOS并非易事。选择了一个RTOS,却在几个月或几个季度后发现它并不能完全满足我们的期望,这种情况很常见。正如我们所看到的,在前期多花一点时间,确定我们对RTOS的期望是至关重要的。在了解了自己的需求后,我们就可以仔细评估哪些RTOS最能满足应用需求。
只有这样,我们才能真正对RTOS的选择感到满意。如果您选择了最时髦、最流行或供应商直接提供的RTOS,您可能会发现未来的开发工作有些坎坷。
(原文刊登于EDN姊妹网站Embedded,参考链接:How do you select an RTOS?,由Ricardo Xie编译。)