在上一篇文章“如何选择嵌入式系统操作系统:操作系统特征”中,我们讨论了团队在选择操作系统时权衡的系统特征。我们看到产品的生命周期成本、物理特性、实时性能、库集成和安全性等特征发挥了作用(仅举几例)。今天的帖子将精确地探讨何时何地使用裸机,RTOS和Linux是有意义的。请记住,这些是一般准则,因行业而异,甚至因产品而异。
何时使用裸机(无操作系统)
当您查看有关连接性,物联网,机器学习和其他前沿主题的营销标题时,您可能会认为每个嵌入式系统都需要操作系统。不幸的是,这种印象与事实相去甚远!虽然许多尖端技术可能受益于操作系统,但对于相当多的应用程序,您可以在没有RTOS或Linux的情况下生存。如果您查看2019年嵌入式市场调查,您会发现约50%的项目是裸机的!
在几种情况下,不使用操作系统会很有意义。首先,如果您使用的是 8 位或 16 位微控制器,您几乎总是希望使用裸机或使用轻量级协作调度程序。许多操作系统开发人员不会将他们的软件移植到较小的架构中,因为这些系统已经受到处理器和资源限制。添加操作系统通常会消耗太多的时钟周期,并使系统效率低下。
接下来,裸机解决方案在微控制器引脚数较少且可用的闪存和SRAM有限的应用中非常有意义。在资源受限的环境中工作时,每个字节和每个时钟周期都会对产品是否可用产生影响。如果微控制器受到资源限制,最有效的解决方案可能是没有操作系统。
最后,如果您正在处理一个没有任何连接或高性能处理需求的“简单”控制应用程序,则裸机可能对您的应用程序有意义。当今在嵌入式系统中使用操作系统的重要驱动因素之一是需要支持基础设施代码。例如,连接到互联网的传感器必须连接到云,管理安全分区,执行安全更新,运行DSP算法等。操作系统可以帮助管理所有这些活动的时间和资源,但是如果您没有所有这些内容,则可能不需要操作系统。
何时使用实时操作系统
当微控制器的板载资源达到40 MHz的最低时钟速度,具有至少64千字节的闪存和8千字节的RAM时,使用操作系统的大门就开始了。如果做得更少,您将花费更多时间与RTOS的需求而不是应用程序的需求作斗争。例如,当您使用 RTOS 时,每个任务都有自己的堆栈。堆栈至少需要 512 – 1024 字节的 SRAM。如果你的设计需要六个任务,你很快就会耗尽内存。你可能需要更多的闪存和RAM来构建一个合适的系统。
当我决定是使用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可能是您应用程序的绝佳选择。
结论
选择用于嵌入式产品的操作系统可能会成就或破坏项目。过于轻量级会导致开发团队花费更多的精力和时间来使事情正常工作。另一方面,过重会导致更高的物料清单成本。正如我们所看到的,为您的应用程序选择正确的操作系统归结为权衡对您的团队和用户最重要的东西。
审核编辑 黄昊宇
全部0条评论
快来发表一下你的评论吧 !