纵论物联网(五):除了Linux,还有什么物联网操作系统

时间:2024-04-10 08:56:13

导语

在前面介绍物联网终端设备的文章中,我们已经简单地介绍了物联网操作系统。物联网操作系统的种类非常多,不过其中有很大一部分是基于Linux系统改造的,还有一些系统是商业公司或开源组织开发的,当然微软公司也开发了一系列面向嵌入式应用的操作系统。

纵论物联网(五):除了Linux,还有什么物联网操作系统

出于成本或者定制化的需求,开发者往往更青睐开源的物联网操作系统。开源系统可以大致分为两大类:

  • 一类是基于Linux系统改造的物联网OS,如uCLinux、谷歌的Brillo、华为的Lite OS等;

  • 一类是非Linux类物联网OS,由开源社区或商业公司按照某种开源许可独立设计实现,如uCOS、FreeRTOS、mbed等。

篇幅有限,本文重点介绍一下非Linux类的物联网OS,这类系统通常是比较轻量级的实时操作系统,更适合应用于存储性能有限的MCU。

FreeRTOS

FreeRTOS(www.freertos.org)是一个迷你的实时操作系统内核,但麻雀虽小,五脏俱全,包括了任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等操作系统的基本功能。

FreeRTOS创始人是Richard Barry,最初他设计这个系统的初衷,就是出于自身为工作项目中寻找RTOS的过程很痛苦。商业系统很贵,开源系统也缺乏好的文档支持。

相对μC/OS-II、embOS等商业操作系统,FreeRTOS操作系统是完全免费的操作系统,源码公开、可移植、可裁减,可移植到各种单片机上运行,在嵌入式系统尤其是实时操作系统方面应用者众多,比如著名的智能手表Pebble就是用了FreeRTOS。

μC/OS-II

μC/OS-II 是一种基于优先级的抢占式多任务实时操作系统,包含了实时内核、任务管理、时间管理、任务间通信同步(信号量,邮箱,消息 队列)和内存管理等功能。

μC/OS-II绝大部分的代码是用ANSII的C语言编写的,包含一小部分汇编代码,使之可供不同架构的微处理器使用。μC/OS-II经过了非常严格的测试,甚至都已经运用到美国航空管理局的飞行器上。

μC/OS-II由Micrium公司以源代码的形式发布,但并不意味着它是免费软件。可以将其用于教学和私下研究(peaceful research);但是如果将其用于商业用途,那么必须通过Micrium获得商用许可。

mbed

纵论物联网(五):除了Linux,还有什么物联网操作系统

mbed SDK 体系及目录结构

mBed(mbed.org)是ARM公司官方提供的一套用于快速开发ARM架构单片机应用原型的工具集,包括免费的软件库(SDK),硬件设计参考(HDK)和基于Web的在线编译环境(mBed Compiler)三部分。

由于mBed的代码和大部分硬件设计都是以开源(permissive Apache 2.0 licence)的方式提供的,再加上它面向的ARM系列单片机具有较高的性价比和广泛的应用基础,所以mBed在世界范围内已经吸引了大量的电子产品开发者,其产业生态链已经初级规模。

MiCO

纵论物联网(五):除了Linux,还有什么物联网操作系统

MICO系统架构

2014年7月,MiCO号称是中国首款物联网操作系统,由上海庆科(MXCHIP)发布。根据官方解释,MiCO的意思是Micro-controller based Internet Connectivity Operating system,是基于微控制器(MCU)的互联网接入操作系统,这个解释其实和物联网操作系统的意思一回事。

MiCO本身包括:接口,框架,核心功能和非核心功能四部分。开发者可以在各种微控制器平台上,基于MiCO来设计接入互联网的创新智能产品。

庆科与阿里有合作关系,阿里云的物联网套件的C-SDK,也有MiCO系统的版本。关于MiCO的更多信息,可以去MiCO开发者论坛(mico.io)了解。

Mynewt

Mynewt(mynewt.apache.org)是Apache软件基金会(ASF: Apache Software Foundation)发起的一个开源项目,专注于物联网应用的实时操作系统。Mynewt的最大特色是包括了低功耗蓝牙(BLE4.2)无线传输协议栈NimBLE。

Mynewt支持丰富的实时操作系统特征,可以在不同的硬件平台上运行,包括ARM Cortex M0-M4微控制器,以及基于MIPSRISC-V架构的处理器。

Contiki

Contiki (www.contiki-os.org)是一个适用于有内存的嵌入式系统的开源的、高可移植的、支持网络的多任务操作系统。包括一个多任务核心、TCP/IP 堆栈、程序集以及低能耗的无线通讯堆栈。

Contiki起源于瑞典的大学,基础内核以及大部分的核心功能是Swedish Institute of Computer Science的Adam Dunkels开发的。

Contiki 采用 C 语言开发的非常小型的嵌入式操作系统,运行只需要几K的内存。Contiki都很受学术机构以及高校的科研人员青睐,常用于无线传感器网络(WSN:Wireless Sensor Network)的研究项目中。

NuttX

Nuttx(www.nuttx.org) 是一个实时嵌入式操作系统,它很小巧,在微控制器环境中使用,可用于8位到32位系统。

NuttX的特色在于完全符合POSIX API标准,完全实时,并完全开放。目前常用于无人机的飞控系统中。

RIOT OS

RIOT(riot-os.org)的目标是在物联网领域起到Linux在互联网领域那样的影响力。RIOT是一个开源、免费的操作系统。支持8位到32位的微控制器,可以运行在大多数低功耗物联网设备上。在GitHub(github.com/RIOT-OS)上可以找到RIOT的源码。

TinyOS

Tiny OSUC Berkeley(加州大学伯克利分校)开发的开放源代码操作系统,专为嵌入式无线传感网络设计。与Contiki类似,Tiny OS同样来自于高校,由于其文档非常完善,其受欢迎程度甚至超过Contiki,不过国内使用者不多。

操作系统基于组件(component-based)的架构使得快速更新成为可能,同时又减小了受传感网络存储器限制的代码尺寸。Tiny OS只需要几KB的内存空间和几十KB的编码空间。

Zephyr

Zephyr尽管是由 Linux 基金会托管的开源项目, 但 Zephyr 是一款完全独立的操作系统, 并未采用 Linux 代码。

Zephyr微内核能运行在只有10KB RAM的32位微控制器上,相比之下基于Linux的微控制器项目uClinux需要200KB RAM。

结语

除了上面列出来的操作系统,其实还有更多没有列出来的。就连也没闲着,正在秘密开发一个完全独立于Android的新系统,叫做Fuchsia(灯笼海棠),据说这个系统有可能采用iOS策略,走封闭路线。难道谷歌被安卓碎片化问题伤心了?

物联网操作系统要比PC OS以及移动OS体量小,开发起来门槛也没那么高,很多很小的系统都可以作为商用,所以对于物联网产品设计者来说还是有很多选择的。