在嵌入式系统行业的嵌入式开发人员和管理人员中流传着这样一个谣言:所有的操作系统都是平等的。开发团队选择RTOS并不罕见,因为他们的微控制器供应商支持它,而不是仔细研究RTOS提供的功能和特性。检查RTOS的特性、API、功能和缺陷经常被忽略,有时甚至会损害应用程序的需求。你可能从未意识到的一个问题一直困扰着你:“所有的RTOSes都是等价的吗?”
对等的需要
本质上有三种方式来看待如何构建嵌入式软件。首先,开发人员构建裸机系统,没有RTOS或操作系统。这些通常适用于小型嵌入式系统,这些系统没有很多特性,或者不注重重用、可移植性或可伸缩性。接下来,一些团队的系统需要可伸缩性和可重用性,但是可能没有可移植性。这些团队将选择一个RTOS来使用并围绕RTOS构建他们的整个应用程序,使RTOS成为系统的基础。
构建系统的最后一种方法,也是驱动等价需求或愿望的方法,是现代系统,它们是复杂的,并且提供了广泛的特性。在许多情况下,应用程序需要可伸缩、可重用和可移植。在这些情况下,一个嵌入式开发团队不能仅仅选择一个RTOS并围绕它构建他们的应用程序。相反,他们需要一个RTOS抽象层,将他们的应用程序代码从RTOS中分离出来,以选择任何RTOS或操作系统来提供应用程序所需的服务和功能。图1显示了一个带有RTOS抽象层的分层软件架构的例子。
图1
RTOS抽象层消除了对任何RTOS或操作系统的依赖,从而实现了更好的单元测试和脱离目标运行应用程序模拟的能力!当然,出现的问题是,当团队创建一个RTOS抽象层时,他们拼命地试图建议所有RTOS都提供等效的功能,如果概括起来,这就变成了“所有RTOS是等效的”。
RTOS等效现实
对于嵌入式软件架构师和团队来说,并非所有的RTOS都是平等的。每个RTOS都可以提供一组标准的功能,但即使是这些功能也可以实现并提供广泛的差异。例如,嵌入式开发人员从目前可用的100多个RTOS中选择三个,并检查它们的API集。你将发现相似但差异很大的API。
如果你花一些时间来运行性能测量,你会发现每个RTOS都提供不同级别的实时性能和确定性。编译每一个,你会发现不同的内存需求。如果你深入挖掘RTOS,你甚至可能会发现可以打破RTOS的错误或条件!有些人在管理安全性方面写得很好,而另一些人则完全忽略了安全性是一个考虑因素。
结论
最终,团队可能希望所有的RTOS都是相同的,但事实是每个RTOS都是唯一的。每一种都提供了一个具有不同内存占用、响应时间、API、安全性和安全功能的操作系统。RTOS抽象层有助于将嵌入式应用从标准特性中分离出来。然而,为了充分利用RTOS,可能有必要直接调用RTOS或创建抽象扩展来管理应用程序依赖关系。因此,下一次嵌入式开发人员想使用微控制器供应商提供的RTOS时,请花些时间评估并验证RTOS是否满足你的需求,因为每个RTOS都是不同的,尽管它们看起来可能是等效的。