为你的设计选择正确的软件架构
解决方案要来的更低一些。但既然是商业解决方案便涉及到初始成本,这些厂商通常要求在使用解决方案的前期,取决于你所需要的组件,便必须先支付1万到10万美元之间的费用。在另一方面,下载FreeRTOS并开始组装自己的解决方案,在某些拥有密集资源的应用中,其所花费的金钱,相对会更便宜一些。决定你的项目的最佳解决方案,将高度依赖于它是否是最容易让你赚到现金,或是能够为总体拥有成本的工时来“买单”。
4 候选方案
所以,当你已经看到这里,你的大脑中可能已经开始吶喊:“只要给我一个可以让我开始使用的架构就好了!”
可惜没有那么快,肯定有一些方案的选项是比其他选项更好,微控制器的应用非常多样性,肯定没有那种一个尺寸便适合所有需求的解决方案。我们先来了解许多最流行的操作系统和软件架构,并分别仔细地讨论:
4.1操作系统
所有在这一个章节中提到的操作系统都具有实时能力(RTOS)。
4.2商用解决方案
? Micrium uC/OS-II与uC/OS-III:这是在微控制器业界最流行的两个实时操作系统,特别是因为其创新的商业模式,因为Micrium公司允许你下载完整的软件套件,并开始发展,等你真正开始产生营收后,才需要开始支付解决方案的费用。他们在安全至上的系统中拥有重要的地位,并且他们的大部分软件构件都已经通过认证。
? Segger embOS:嵌入式软件市场的新进入者,但这并不意味着他们是新手。该软件产品已经开发了超过20年的时间,并已经使用在他们自己的硬件产品之中,因此对装置的支持程度非常好,并配有一个优秀的驱动程序库。
? Express Logic ThreadX:由行业的资深人士所创办,该公司专注在所有关于性能的事物上,并挤压出元器件中每一个时钟周期的效能。它通常被看作是操作系统中的劳斯莱斯,并已经有很多认证被使用在安全至上的系统之中。
4.3开源解决方案
? FreeRTOS:FreeRTOS跟Micrium uC/OS一样,都是在同行业中最常被采用的实时操作系统之一。它有一个庞大的社群,有很多人都在为软件做出贡献,像是TCP/IP栈,但做为开源软件,便意味着没有公司会负责整合,因此需要更多的工作来创建一个整合的解决方案。
? 也有一些公司在FreeRTOS的生态系统中,专门从事将差异化的软件构件提供给那些需要整合协助的客户,例如,Wittenstein高完整性系统公司提供称为SAFERTOS安全认证的FreeRTOS替换核心,以及HCC嵌入式公司提供可以与任何实时操作系统工作的USB、以太网络和文件系统。
? mbed OS:mbed OS解决一些你通常会在开源软件所遇到的痛点,因为ARM这一家公司会负责整合的工作。然而,它仍然是处于萌芽阶段,所以如果你想要有些贡献就可以去这里。
? RIOT OS:RIOT OS被冠以“物联网中最友好的操作系统”,它是以通讯概念为基础所建立起来的操作系统。这使得它即使在面对困难的通讯问题时,仍然精简且高效率。然而它仍然还在积极发展的阶段当中,所以你得计划多花几个小时来进行除错。
4.4架构
有一些操作系统的功能就像是将砖块黏合在一起的水泥一样,会与发展框架紧密地结合在一起,因此一般不能使用软件本身做为项目的一部分,你必须围绕着它来进行整个开发流程。这些框架往往是使用比C++更高阶的语言所编写,通常可以在实时操作系统上运行。
? mbed:mbed也出现在这里,这时则做为快速成型的项目。它是用C++编写,并对大多数微控制器和电路板有绝佳的支持,拥有一个庞大的元件程序库,和一个采用网页架构的漂亮集成开发环境(IDE)。目前,在它准备全面部署之前,它仍然需要一点成熟的时间,但它很适合硬件原型的开发。
? Espruino:Espruino是在微控制器上运行的实时JavaScript解释器。它允许你能够动态地更改程序代码,甚至不需要读写微控制器便可以撰写程序代码。在它开始量产之前,仍然需要一些时间来发展,但它很适合用于硬件原型,并呈现出成为一个不可忽视软件架构的巨大潜力。
? microPython:microPython所能做的事与Espruino大致相同,差别仅在于其使用Python来代替JavaScript。它发展的概念,便是让你从产品开发的一开始到量产,都能够支持预先编译的程序代码,并使用C语言来编写时序至上的程序代码。目前仍在开发当中。
? microEJ:microEJ是一个采用Java架构的框架,让你轻松地为你的设备打造好看的图形化应用程序。它已经在许多智能手表和一些物联网(IoT)设备中使用。
5 结语
如果你想要着手进行设备的开发,而无需安装单一的程序,像是mbed和microPython这类的框架,便是入门的好方法。但是,如果你要建立更大的部署,采用一个纯粹的实时操作系统将会是更好的选
- 嵌入式软件架构设计(05-22)
- 软件架构设计之常用架构模式介绍(05-22)
- “开架式”软件架构设计(05-23)
- 基于DSP/BIOS的多信号并行处理软件架构设计(07-29)
- 基于DSP/BIOS的多信号并行处理软件架构设计(07-29)
- 为什么正确的软件架构对IoT设计越来越重要(01-17)