如何选择嵌入式操作系统?

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

如何选择嵌入式操作系统?
这篇文章将准确探讨何时何地使用裸机、RTOS和Linux才有意义。

在上一篇文章“如何选择嵌入式系统操作系统:操作系统特性”中,我们讨论了团队在选择操作系统时要考虑的系统特性。

我们看到产品的生命周期成本、物理特性、实时性能、库集成和安全性等特性发挥了作用(仅举几例)。

这篇文章将准确探讨何时何地使用裸机、RTOS和Linux才有意义。

请记住,这些内容是一般性指导方针,会因行业而异,甚至因产品而异。

何时使用裸机(无操作系统)
当我们查看有关连接、物联网和机器学习等前沿主题的营销头条时,可能会认为每个嵌入式系统都需要一个操作系统。

不幸的是,印象与事实相去甚远!虽然许多尖端技术可能受益于操作系统,但我们可以在没有RTOS或Linux的情况下实现相当多的应用。

如果我们查看AspenCore所做的2019年嵌入式市场调查,就会发现约50%的项目是裸机!
在几种情况下,不使用操作系统会很有意义。

首先,如果我们使用的是8位或16位MCU,则我们几乎总是希望使用裸机或使用轻量级协作调度程序。

许多操作系统开发人员不会将自己的软件移植到更小的架构上,因为这些系统已经受到处理器和资源的限制。

添加操作系统通常会消耗太多时钟周期而使系统效率低下。

接下来,裸机解决方案在MCU引脚数较少且可用闪存和SRAM 有限的应用中非常有意义。

在资源受限的环境中工作时,每个字节和每个时钟周期都会对产品是否可用产生影响。

如果MCU资源有限,最有效的解决方案可能是没有操作系统。

最后,如果我们正在开发一个没有任何连接或高性能处理需求的“简单”控制应用,那么裸机就可能对我们的应用有意义。

当今在嵌入式系统中使用操作系统的重要驱动因素之一,是需要支持基础设施代码。

例如,连接互联网的传感器必须连接到云、管理安全分区、执行安全更新、运行DSP算法等。

操作系统可以帮助我们管理所有这些
活动的时间和资源,但如果不涉及所有这些东西的话,就可以不需要使用操作系统。

何时使用RTOS
当MCU的内置资源达到40MHz的最低时钟速度、至少64KB的闪存和8KB的RAM时,我们就可以开始使用操作系统了。

如果任何资源不足的话,则将花费更多时间来满足RTOS的需求,而不是应用的需求。

例如,当使用RTOS时,每个任务都有自己的堆栈。

堆栈至少需要512~1024字节的SRAM。

如果某个设计需要六个任务,那么很快就会耗尽内存。

我们可能需要更多的闪存和RAM来构建合适的系统。

当我决定是使用RTOS还是使用裸机时,我会问自己几个问题:
•添加RTOS会简化软件架构吗?
•添加RTOS会提高软件的可维护性吗?
•应用的实时性能会得到改善吗?
RTOS是一种应该为应用和整个软件开发生命周期提供价值的工具。

如果RTOS是一个障碍,那么就不应该仅仅因为自己想使用它而使用它。

在某些特定的应用中,使用RTOS会立即变得有意义。

例如,如果我正在开发某个物联网产品,我几乎总是使用RTOS。

这是因为RTOS提供了工具和机制来轻松管理低级资源并将应用分解为半独立的程序。

当某个应用很复杂时,将它分解为任务就很有意义。

例如,物联网产品通常需要几个任务来管理连接,更不用说终端应用了。

另一个例子是有显示器的设备,尽管有时这些应用最适合使用多核处理器。

何时使用Linux
近年来,在嵌入式系统中使用Linux,已成为一种流行的选择。

Linux受欢迎的部分原因,在于它提供了一个功能齐全的操作系统,并附带了所有华丽的点缀。

Linux带有大量的库和特性。

开发人员可以利用多任务处理甚至内核的实时补丁。

此外,运行Linux的硬件成本在过去五年中大幅下降,这使其成为了特定应用的令人兴奋的解决方案。

在查看一个项目是否可以使用嵌入式Linux时,我会考虑几点。

首先,产品必须能够支持硬件的财务成本。

我最近有一个客户,我第三次帮
助他们重新设计了他们的产品,因为前两位设计者无法满足制造价格目标。

该产品的目标受众愿意为该产品支付大约40美元。

最初的设计者使用Linux构建了一个系统,材料成本超过100美元!使用MCU和用于操作系统的RTOS重新设计这个产品,我能够将BOM降至11美元左右。

这就是拥有可持续发展的公司和不存在可持续发展的公司之间的区别。

使用Linux时要考虑的第二点是产品的体积。

如果我们有一个小批量的产品,用户可能已经支付了更大的金额。

当我们查看非经常性工程成本和产品成本之间的权衡时,可能会发现使用Linux可以显著降低一次性工程(NRE)费用和上市时间。

如果客户对价格不敏感,Linux可能更具有商业意义。

最后,不要忘记Linux为我们提供了强大的抽象、服务和库,可以简化工程。

如果我们的产品非常复杂,我们可以利用Linux来简化我们与硬件的交互方式。

可以使用更现代的编程语言,如Python。

如果需要,可以自定义内核。

Linux非常适用于许多嵌入式应用。

如果我们需要灵活性以及利用现有库的能力,Linux 可能是应用的绝佳选择。

总结
选择用于嵌入式产品的操作系统,可能会影响项目的成败。

太轻量级的应用会导致开发团队花费更多的精力和时间来使其正常工作。

另一方面,应用过重则会导致更高的物料清单成本。

正如我们所见,为我们的应用选择正确的操作系统,归结为对我们的团队和用户最需要的东西做出权衡。


作者:Jacob Beningo,来源:EDN姊妹网站Embedded。

相关文档
最新文档