When and where it makes sense to use bare-metal, an RTOS, and Linux.
在上一篇文章“如何选择您的嵌入式系统操作系统:操作系统特性”中,我们讨论了团队在选择操作系统时会权衡的系统特性。我们看到产品的生命周期成本、物理特性、实时性能、库集成和安全性等特性发挥了作用(仅举几例)。今天的文章将准确探讨何时何地使用裸机、RTOS 和 Linux 是有意义的。请记住,这些是一般性指导方针,会因行业而异,甚至因产品而异。
何时使用裸机(无操作系统)
当您查看有关连接、物联网、机器学习和其他前沿主题的营销头条时,您可能会认为每个嵌入式系统都需要一个操作系统。不幸的是,这种印象与事实相去甚远!虽然许多尖端技术可能受益于操作系统,但您可以在没有 RTOS 或 Linux 的情况下使用相当多的应用程序。如果您查看2019 年嵌入式市场调查,您会发现约 50% 的项目是裸机!
在几种情况下,不使用操作系统会很有意义。首先,如果您使用的是 8 位或 16 位微控制器,您几乎总是希望使用裸机或使用轻量级协作调度程序。许多操作系统开发人员不会将他们的软件移植到更小的架构上,因为这些系统已经受到处理器和资源的限制。添加操作系统通常会消耗太多时钟周期并使系统效率低下。
接下来,裸机解决方案在微控制器引脚数较少且可用闪存和 SRAM 有限的应用中非常有意义。在资源受限的环境中工作时,每个字节和每个时钟周期都会对产品是否可用产生影响。如果微控制器资源有限,最有效的解决方案可能是没有操作系统。
最后,如果您正在开发一个没有任何连接或高性能处理需求的“简单”控制应用程序,那么裸机可能对您的应用程序有意义。当今在嵌入式系统中使用操作系统的重要驱动因素之一是需要支持基础设施代码。例如,连接互联网的传感器必须连接到云、管理安全分区、执行安全更新、运行 DSP 算法等。操作系统可以帮助管理所有这些活动的时间和资源,但您可能不需要如果您没有所有这些东西,请使用操作系统。
何时使用 RTOS
当微控制器的板载资源达到 40 MHz 的最低时钟速度、至少 64 KB 的闪存和 8 KB 的 RAM 时,使用操作系统的大门就开始了。减少任何东西,您将花费更多时间来满足 RTOS 的需求,而不是应用程序的需求。例如,当您使用 RTOS 时,每个任务都有自己的堆栈。堆栈至少需要 512 – 1024 字节的 SRAM。如果您的设计需要六个任务,您将很快耗尽内存。您可能需要更多的闪存和 RAM 来构建合适的系统。
当我决定是使用 RTOS 还是使用裸机时,我会问自己几个问题:
添加 RTOS 会简化软件架构吗?
添加 RTOS 会提高软件的可维护性吗?
应用程序的实时性能会提高吗?
RTOS 是一种应该为应用程序和整个软件开发生命周期提供价值的工具。如果 RTOS 是一个障碍,那么不应该仅仅因为我想使用它就使用它。
在某些特定的应用程序中,使用 RTOS 会立即变得有意义。例如,如果我正在开发物联网产品,我几乎总是使用 RTOS。这是因为 RTOS 提供了工具和机制来轻松管理低级资源并将应用程序分解为半独立的程序。当应用程序很复杂时,将应用程序分解为任务很有意义。例如,物联网产品通常需要几个任务来管理连接,更不用说终端应用了。另一个例子是有显示器的设备,尽管有时这些应用最适合多核处理器。
何时使用 Linux
近年来,在嵌入式系统中使用 Linux 已成为一种流行的选择。Linux 受欢迎的部分原因在于它提供了一个功能齐全的操作系统,并附带了所有的花里胡哨。Linux 带有大量的库和特性。开发人员可以利用多任务处理甚至内核的实时补丁。此外,运行 Linux 的硬件成本在过去五年中大幅下降,使其成为特定应用程序的令人兴奋的解决方案。
在查看一个项目是否可以使用嵌入式 Linux 时,我考虑了几点。首先,产品必须能够支持硬件的财务成本。我最近有一个客户,我第三次帮助重新设计他们的产品,因为前两位设计师无法满足制造价格目标。该产品的目标受众愿意为该产品支付大约 40 美元。最初的设计师使用 Linux 构建了一个系统,材料成本超过 100 美元!使用微控制器和用于操作系统的 RTOS 重新设计产品,我能够将 BOM 降至 11 美元左右。这就是拥有可持续发展的公司和不存在的公司之间的区别。
使用 Linux 时要考虑的第二点是产品的体积。如果你有一个小批量的产品,用户可能已经支付了更大的金额。当您查看非经常性工程成本和产品成本之间的权衡时,您可能会发现使用 Linux 可以显着降低 NRE 和上市时间。如果客户对价格不敏感,Linux 可能更具有商业意义。
最后,我们不能忘记 Linux 为我们提供了强大的抽象、服务和库,可以简化工程。如果我们的产品非常复杂,我们可以利用 Linux 来简化我们与硬件的交互方式。我们可以使用更现代的编程语言,如 Python。如果需要,我们可以自定义内核。Linux 非常适用于许多嵌入式应用程序。如果您需要灵活性以及利用现有库的能力,Linux 可能是您应用程序的绝佳选择。
结论
选择用于嵌入式产品的操作系统可能会影响项目的成败。太轻量级会导致开发团队花费更多的精力和时间来使事情正常工作。另一方面,过重会导致更高的物料清单成本。正如我们所见,为您的应用程序选择正确的操作系统归结为权衡对您的团队和用户最重要的东西。
审核编辑 黄昊宇
-
嵌入式
+关注
关注
5082文章
19104浏览量
304796 -
操作系统
+关注
关注
37文章
6801浏览量
123283
发布评论请先 登录
相关推荐
评论