本文介绍物联网对操作系统的要求及国内外物联网操作系统((VxWorks、Ubuntu Core、RIOT、Contiki、Mbed OS、Keil-RTX、TinyOS、FreeRTOS、Windows 10 IoT、Fuchsia、Zephyr、μC/OS-II、Linux、QNX、Nucleus、ThreadX、LiteOS、HarmonyOS、AliOS Things、RT-Thread、OneOS、TencentOS tiny、MiCO、SylixOS))的特点和应用。
每一个时代都有属于自己特色的电子产品,每一类产品都有自己适配的操作系统。例如早期的MULTICS、UNIX这类多任务操作系统,到个人电脑采用的LINUX、Windows等多处理器操作系统,再到智能手机时代的iOS、安卓(Android)等移动操作系统。
这些操作系统运行在“裸机”设备的最低层,搭建了其他软件、应用(APP)运行的环境与平台。当今各类软件和互联网应用的火热,以及PC时代与移动互联网时代的辉煌,都离不开一路完善的操作系统。
近年来,随着物联网(IoT)市场的迅猛发展,嵌入式设备联网成为了一个刚需。物联网的核心和基础仍是互联网,但不同于互联网强调人与人的互联,物联网是在这样的基础上延伸和扩展出人与物、物与物之间的连接网络,形成我们说的“万物互联”。
虽然物联网的发展是大势所趋,也被普遍看好和关注,但嵌入式设备的联网会使得软件复杂性大幅增加,传统的嵌入式RTOS(实时操作系统)内核已经越来越难满足市场的需求,在这种情况下,物联网操作系统(IoT OS)的概念应运而生。
物联网对操作系统的要求
物联网系统大致可分为感知层、终端系统层、网络层(进一步分为网络接入层和核心层)、设备管理层、后台应用层等几个层次。由于包含大量的嵌入式设备,与传统的单一设备相比,物联网面对的是碎片化难题,无论是底层的连接还是上层的应用服务,都特别强调“术业有专攻”:
◆物联网系统要求感知层的设备更小、功耗更低,而且需要安全可靠和具备组网能力;
◆物联网通信层需要支持各种通信协议和协议之间的转换;
◆应用层则需要具备云计算能力。
在软件方面,早先的嵌入式操作系统只是完成了物理硬件的抽象,并不能真正代表未来的物联网。例如在安卓的生态环境中,开发者基本不用考虑智能终端的物理硬件配置,只需根据安卓的编程接口编写应用程序,就可以运行在所有基于安卓的智能终端上一样。
简单地说,这是“物联网设备操作系统”和“物联网操作系统”的区别。设备操作系统解决的是设备怎么联网、如何更方便地联网的问题,但没有解决联网之后做什么以及如何做的问题。对于整个物联网系统来说,后者更重要。
支撑物联网系统,需要比传统的嵌入式设备更复杂的软件,不能简单局限于“边缘侧的操作系统”,而要涉及到芯片层、终端层、边缘层、云端层等多个层面。通过层层分发、层层下达,通过调度云、边、端等不同层级中不同设备的计算资源,而实现达到调度“物体”本身的目的。这些要求,催生了面向物联网设备和应用的专用操作系统。
物联网操作系统的特点
物联网操作系统具备物联网应用领域内的以下特点:
1、内核尺寸伸缩性及架构可扩展性
物联网的发展即将进入一个小的爆发期,所以面对一轮轮的技术革新甚至换代时,整体架构的灵活性和可扩展性可以说决定了一个企业的商业命脉。同时,为了适应不同的应用场景下的技术要求,内核尺寸的伸缩性也是需要面对的问题。
2、内核的实时性
对于非抢占式调度方式的内核很难满足关键性动作的实时性要求,比如常见的中断响应和多任务调度等情况下,操作系统的实时性便有了更高的要求,特别是对于大多数的物联网应用而言,有意义的响应时间决定了市场的接受度。
3、安全性和可靠性
在物联网的应用环境下,面对海量节点可以说设备一经投入使用,就很难再去维护。所以平均无故障运行时间和在一些严苛环境下的性能表现就显得尤为重要。而在一向很注重信息安全的机密机构的数据安全性,引发了业内关于开源机制、VMM机制等的广泛讨论。
4、低功耗
由于物联网的应用场景和网络节点的数量增多,低功耗是一个非常关键的指标。所以在整体架构设计的时候,就需要加入一些休眠模式、节能模式、降频模式等逻辑判断,以延长续航能力。
真正出现针对物联网特性开发的操作系统,是在2010年的RIOT(实时多任务操作系统)。随后2014年,风河(Wind River,已被英特尔收购)在德国纽伦堡的嵌入式世界大会上,对外公布VxWorks 7物联网操作系统。同样是2014年,Arm推出物联网设备平台和操作系统Mbed OS。再后来,微软在Windows 10的基础上推出了面向物联网的操作系统Windows 10 IoT Core。
国内最早发布物联网操作系统的有上海庆科,算起来比Arm还早三个月发布了MiCO。布局手机操作系统失败后,阿里Yun OS也开始转向物联网。2015年,华为也推出了开源物联网OS LiteOS,而在美国制裁后出现的鸿蒙OS(Harmony OS)包含了LiteOS的软件代码, 成为了华为布局于智能设备领域的底层操作系统。
目前,物联网操作系统主要分为两大类,一是由传统的嵌入式RTOS发展而来,典型代表有FreeRTOS、LiteOS、RT-Thread、Arm Mbed OS;二是由互联网公司的云平台延伸而来,基于传统操作系统进行“剪裁”和定制,典型代表有Ali OS Things、TencentOS tiny、Win10 IOT。
RTOS阵营的优点是在物联网终端上已经广泛支持,硬件推广成本低。缺点是软件开发专业度极高,软硬件开发难以隔离,对专业软件公司进入这个领域造成困难。
互联网平台阵营的优点是天生与互联网服务相结合,方便对接互联网应用,缺点是基本上是各家产品对各家服务,难以做到平台中立,对软件开发者来说功能性受到了限制。
本文按照国外和国内两个阵营,对现有仍比较活跃的物联网操作系统进行一个盘点。那些较小众、曾经短暂出现后来淡出或不再更新的操作系统,则不在本文讨论范围。
国外
主流物联网操作系统
◆Wind River-VxWorks
VxWorks操作系统是Wind River于1983年设计开发的一种嵌入式RTOS,是Tornado嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌人式实时操作系统领域逐渐占据一席之地。
VxWorks支持几乎所有现代市场上的嵌入式CPU,包括x86系列、MIPS、LoongISA、PowerPC、Freescale ColdFire、Intel i960、SPARC、SH-4、Arm, StrongARM以及xScale CPU。其他特性包括具有可裁剪微内核结构;高效的任务管理;灵活的任务间通讯;微秒级的中断处理;支持POSIX 1003.1b实时扩展标准;支持多种物理介质及标准的、完整的TCP/IP网络协议等。
然而其价格昂贵。由于操作系统本身以及开发环境都是专有的,价格一般都比较高,通常需花费10万元人民币以上才能建起一个可用的开发环境,对每一个应用一般还要另外收取版税。一般不通供源代码,只提供二进制代码。由于它们都是专用操作系统,需要专门的技术人员掌握开发技术和维护,所以软件的开发和维护成本都非常高。支持的硬件数量有限。
◆Canonical-Ubuntu Core
Ubuntu是以桌面应用为主的Linux发行版,在玩家中很受欢迎,也令2016年11月发布的专为物联网打造的Ubuntu Core变得流行。Ubuntu Core属于轻量级操作系统,并以“安全第一”的理念进行设计。根据官方文档,整个系统已经过重新设计,以从第一次启动起就专注于安全性。
Ubuntu Core具有防篡改功能。由于应用程序可能来自不同的来源,因此它们仅对自己的数据具有特权。这样做是为了使一个设计不当的应用程序不会使整个系统容易受到攻击。Ubuntu Core是为业务而构建的,这意味着开发人员可以直接专注于手头的应用程序,而其他要求则由默认操作系统支持。
Ubuntu Core的另一个重要功能是安全应用商店的可用性,以及有一个现成的软件生态系统,所以使用Ubuntu Core变得更加简单。
◆RIOT
RIOT最初是由柏林自由大学(FU Berlin)、法国国家信息与自动化研究所(INRIA)和汉堡应用科技大学(HAW Hamburg)一同开发的。RIOT基于微内核架构,其内核基本上是从FireKernel继承的;这个内核原本是为传感器网络开发的。
和其他低内存占用的系统(如TinyOS和Contiki)不同, RIOT允许使用C语言和C++语言编写应用程序,而且提供完整的多线程和实时响应解决方案。这令RIOT成为了一款“用户友好型物联网操作系统”,支持许多低功耗IoT设备和各种微控制器架构。
它对开发人员的友好体现在支持标准环境和工具,因此开发人员无需经历陡峭的学习过程。支持标准编程语言,例如C或C ++,硬件相关的代码非常少。开发人员可以编写一次代码,然后在8位,16位和32位单片机上运行。RIOT也可以作为一个Linux或macOS进程运行,这样就能使用诸如GNU编译器合集(GCC),GNU调试器,Valgrind,Wireshark等标准调试工具。RIOT符合一部分POSIX标准。
RIOT也是资源友好和物联网友好的,它的重要功能之一是其支持轻型设备的能力,可以实现较大的能耗。它支持多线程,而线程开销很小。RIOT提供多种通信协议栈,包括了IPv6、6LoWPAN和内容中心网络。它还支持RPL、UDP、TCP和CoAP。
◆Contiki
Contiki的名字来自于历史上最著名的探险家之一托尔·海尔达尔(Thor Heyerdahl)制作的一艘帆船“康-提基号”(Kon-Tiki)。其基础的内核以及大部分的核心功能是由瑞典计算机科学研究所网络内嵌系统小组的Adam Dunkels开发的。
Contiki是一个小型、开源、极易移植的多任务操作系统,尤其适用于内存受限的嵌入式系统。从8位电脑到微控制器,Contiki只需几千字节的代码和几百字节的内存就能提供多任务环境和内建TCP/IP支持。在一个较为典型的配置中,Contiki系统只需2Kb的RAM与40Kb的ROM
Contiki包括了一个事件驱动的内核,因此可以在运行时动态加载上层应用程序。Contiki中使用轻量级的protothreads进程模型,可以在事件驱动内核上提供一种线性的、类似于线程的编程风格。
◆Arm-Mbed OS
Mbed OS是一种单线程架构的物联网操作系统,由Arm和它的技术伙伴协作开发。最新版本升级到了Mbed OS 5,集成了实时操作系统CMSIS-RTOS RTX的内核,使得Mbed OS可以支持确定性、多线程实时程序,比如低时延的工业自动化控制和车联网。
Mbed OS 5可以运行在所有Cortex-M系列的产品上,并且具有良好的延展性。如果在处理性能要求不高的产品应用,可以只保留Mbed OS 5的核心功能,使其可以运行在只有8K内存的Cortex-M0芯片上。
针对Mbed平台的应用可以使用Mbed在线IDE来开发,它是免费的在线代码编辑器和编译器。只需在本地PC上安装一个网页浏览器,因为你的项目是在云端编译的,就是说是在远程服务器上使用ARMCC C/C++编译器。Mbed IDE提供私有工作空间,有能力通过分布式Mercurial版本控制导入、导出和分享代码,并且它还可以用于代码文档生成。应用还可以使用其他开发环境来开发,比如Keil µVision、IAR Embedded Workbench、和 Eclipse加上GCC Arm嵌入式工具。
◆Keil-RTX
RTX操作系统是由KEIL公司(已被并入Arm旗下)开发并进行升级维护的一款嵌入式实时操作系统,使用标准的C结构编写,运用RealView编译器进行编译,适用于 Arm Cortex-M 设备。它不仅仅是一个实时内核,还具备丰富的中间层组件,不但免费,而且代码也是开放的。
RTX的主要功能有开始和停止任务(进程),除此之外还支持进程通信,例如任务的同步、共享资源(外设或内存)的管理、任务之间消息的传递。开发者可以使用基本函数去开启实时运行器,去开始和终结任务,以及去传递任务间的控制(轮转调度)。开发者可以赋予任务优先级。
特点是支持时间片,抢占式和合作式调度。不限制数量的任务,每个任务都具有254的优先级。不限制数量的信号量,互斥信号量,消息邮箱和软定时器。支持多线程和线程安全操作。使用MDK基于对话框的配置向导,可以很方便的完成MDK的配置。
◆加州大学伯克利分校-TinyOS
TinyOS最初是加州大学伯克利分校(UC Berkeley)和英特尔研究院(Intel Research)为嵌入智能微尘而开发的合作项目,之后逐渐演变成一个国际合作项目,即TinyOS联盟。TinyOS使用nesC语言编写,是一款开放源代码操作系统,它基于一种组件(Component-Based)的架构方式,使得能够快速实现各种应用。
TinyOS设计之初的目的是制作一个专属嵌入式无线传感器网络(WSN, wireless sensor network)的操作系统。但事实上,由于良好的可扩展性和足够小的代码尺寸,TinyOS在物联网的应用领域中也占有非常重要的地位。
TinyOS的用户社区十分活跃,其用户遍布学术界和产业界。从一年中TinyOS被下载超过35000次这一事实可以理解TinyOS的流行。TinyOS非常有效地用于各种场景中,例如传感器网络、智能建筑、智能电表等。
◆亚马逊-FreeRTOS
FreeRTOS是一个迷你的实时操作系统内核,2003年由 Richard Barry设计。作为一个轻量级的操作系统,整个核心代码只有3到4个C文件,为了让代码容易阅读、移植和维护,大部分的代码都是以C语言编写,只有一些函数(多数是架构特定排班副程序)采用汇编语言编写。
其特点是用户可配置内核功能、多平台的支持、目标代码小,简单易用强大的执行跟踪功能、堆栈溢出检测、没有限制的任务数量和任务优先级,多个任务可以分配相同的优先权、队列,二进制信号量,计数信号灯和递归通信和同步的任务、优先级继承。
FreeRTOS提供许多方法以实现多线程(threads)、多作业(task)、互斥锁(mutex)、信号量(semaphore)和软件计时器(software timer),有个为低耗电应用程序提供的无嘀嗒(tick-less)模式,线程的优先权管理也有支持。主要功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满足较小系统的需要。
该操作系统由于简单和易用,在轻量级的CPU上目前很多厂商都用这个国外系统,并已被经成功移植到35种不同的微控制器上。FreeRTOS采用MIT许可证许可。
◆微软-Windows 10 IoT
Windows IoT曾经叫做Windows Embedded,是微软的嵌入式系列产品家族,微软在开始发行Windows 10嵌入式版本时将"Windows Embedded"更名为"Windows IoT"。该系统以各种物联网设备为目标,从小型的工业网关到较大型且更复杂的设备 (例如:控制医疗设备、ATM),适合自动化制造、零售、医疗、军事、金融、航天等嵌入式设备所使用。
目前包括四大系列:Windows Embedded Standard、Windows Embedded Compact、Windows Embedded Enterprise、Windows Embedded POSReady。
2020年5月,微软宣布将把Windows 10 IoT Core及Windows 10 IoT Enterprise两个版本合并为一,预计2021年释出第一版,同时也承诺新版本将更精简,且增加执行Linux容器等新功能。
◆谷歌-Fuchsia
2016年,谷歌被曝出正在基于微内核Zircon研发名为“Fuchsia”的物联网OS,外界猜测Fuchsia是谷歌试图使用单一操作系统统一整个生态圈的尝试,即一个操作系统可以在智能手表、智能音箱、笔记本、智能手机等在内的设备上运行。
与基于Linux内核的Chrome OS和Android等不同,Fuchsia基于新的名为Zircon的微内核,受Little Kernel启发,用于嵌入式系统,主要使用C语言和C++编写。
Fuchsia的用户界面与应用使用“Flutter”开发,得益于Flutter提供的跨平台能力,用户可以在Android设备上安装一部分Fuchsia。
Fuchsia的形象标识是个粉红色的无限符号。作为免费和开源软件分发,采用三句版BSD,MIT和Apache 2.0软件许可证。
◆Linux基金会-Zephyr
Zephyr最初是风河系统公司在2015年11月推出的为物联网设备开发的“Rocket内核”,更早时称为“Microkernel Profile for VxWorks”,代码移植于2001年并购Eonic Systems得来的Virtuoso DSP RTOS。2016年2月,它成为Linux基金会的项目而改称现名。
Zephyr是支持多种架构的小型实时操作系统,并针对资源受限的环境进行了优化。适用于从简单的嵌入式环境传感器和LED可穿戴设备,到复杂的智能手表和IoT无线网关。
下面列出了Zephyr的主要功能:
◆支持150多个板。
◆完全的灵活性和选择自由。
◆可以处理体积小的物联网设备。
◆可以开发具有内置安全功能的产品。
在Zephyr设计中,安全性也很重要,设立了专门机制来维护或改进安全性。
◆Micrium-μC/OS-II
μC/OS由Micrium公司提供,是一个可移植、可固化的、可裁剪的、占先式多任务的开源实时内核,专为嵌入式应用设计,可用于8位、16位和32位单片机或数字信号处理器(DSP)。μC/OS-Ⅱ是在原版本μC/OS的基础上做了重大改进与升级,目前已经升级到了μC/OS-III。源代码开放、整洁、一致,注释详尽,适合系统开发,已有近十年的使用实践,有许多成功应用该实时内核的实例。
μC/OS-Ⅱ的主要特点如下:
1)公开源代码,容易就能把操作系统移植到各个不同的硬件平台上;
可移植性,绝大部分源代码是用C语言写的,便于移植到其他微处理器上;
2)可固化;
3)可裁剪性,有选择的使用需要的系统服务,以减少斗所需的存储空间;
4)占先式,完全是占先式的实时内核,即总是运行就绪条件下优先级最高的任务;
5)多任务,可管理64个任务,任务的优先级必须是不同的,不支持时间片轮转调度法;
6)可确定性,函数调用与服务的执行时间具有其可确定性,不依赖于任务的多少;
7)实用性和可靠性,成功应用该实时内核的实例,是其实用性和可靠性的最好证据。
严格地说,μC/OS仅是一个实时操作系统内核,它仅仅包含了任务调度,任务管理,时间管理,内存管理和任务间的通信和同步等基本功能。没有提供输入输出管理,文件系统,网络等额外的服务。但由于uC/OS良好的可扩展性和源码开放,这些非必须的功能完全可以由用户自己根据需要分别实现。
◆嵌入式Linux
嵌入式linux是一类嵌入式操作系统的概称,这类型的操作系统皆以Linux内核为基础,被设计来使用于嵌入式设备。由于其源代码公开,人们可以任意修改,以满足自己的应用,并且查错也很容易。遵从GPL,无须为每例应用交纳许可证费。有大量的应用软件可用,其中大部分都遵从GPL,是开放源代码和免费的,可以稍加修改后应用于用户自己的系统。
此外还有大量的免费的优秀的开发工具,都遵从GPL并且是开放源代码的。有庞大的开发人员群体,无需专门的人才,只要懂Unix/Linux和C语言即可。随着Linux在中国的普及,这类人才越来越多。所以软件的开发和维护成本很低。此外稳定的网络功能是Linux本身具备的一个很大优点。内核精悍,运行所需资源少,典型的嵌入式Linux安装大概需要2MB的系统存储器。
嵌入式Linux和普通Linux并无本质区别,PC上用到的硬件嵌入式Linux几乎都支持。而且各种硬件的驱动程序源代码都可以得到,为用户编写自己专有硬件的驱动程序带来很大方便在嵌入式。
系统上运行Linux的一个缺点是Linux体系提供实时性能需要添加实时软件模块。而这些模块运行的内核空间正是操作系统实现调度策略、硬件中断异常和执行程序的部分。由于这些实时软件模块是在内核空间运行的,因此代码错误可能会破坏操作系统从而影响整个系统的可靠性,这对于实时应用将是一个非常严重的弱点。
◆RIM-QNX
QNX主要针对嵌入式系统市场,其本身虽然并不属于UNIX,但由于其支持POSIX,使得多数传统UNIX程序在微量修改(甚至不需修改)后即可在QNX上面编译与执行,算是一款商业类Unix实时操作系统。该产品开发于20世纪80年代初,后来改名为QNX软件系统公司,公司已被Research In Motion公司(RIM, 黑莓手机制造商)并购。
QNX是最成功的微内核操作系统之一,多数功能是以许多小型的task来执行,它们被称为server。这样的架构使得用户和开发者可以关闭不需要的功能,而不需要改变操作系统本身。
QNX Neutrino(2001)具有微内核实时平台,实时、稳定、可靠、运行速度快,已经被移植到许多平台,并且运行在嵌入式市场中使用的各种现代处理器上,例如X86、PowerPC等。QNX在汽车领域得到了极为广泛的应用,如保时捷跑车的音乐和媒体控制系统和美国陆军无人驾驶Crusher坦克的控制系统,还有RIM公司的blackberry playbook平板电脑。
◆Nucleus
Nucleus即时操作系统(Nucleus RTOS)是Mentor Graphics(已更名Siemens EDA)旗下Accelerated Technology公司所推出的嵌入式操作系统。Nucleus的好处是程序员不用再撰写板支持套装软件(BSP),并且约95%的代码用ANSI C编写,非常便于移植并能够支持大多数类型的处理器,同时可提供网络、图形用户界面、文件系统等模块支持。
在典型的目标环境中,Nucleus PLUS核心代码区一般不超过20K字节大小。从实现角度来看,Nucleus PLUS是一组C函数库,应用程序代码与核心函数库连接在一起,生成一个目标代码,下载到目标板的RAM中或直接烧录到目标板的ROM中执行。由于采用了软件组件的方法,Nucleus PLUS各个组件非常易于替换和复用。Nucleus PLUS的组件包括任务控制、内存管理、任务间通信、任务的同步与互斥、中断管理、定时器及I/O驱动等。
Nucleus RTOS提供注释严格的C源级代码给每一个用户。
◆微软-ThreadX
ThreadX是由美国Express Logic公司(2019年被微软收购)开发的实时操作系统。ThreadX的作者是Willian Lamie,他也曾是Nucleus的作者,并且曾是Express Logic公司的CEO。
ThreadX名字是由来有两个方面,线程(Thread)是操作系统的可执行单元, “X”表示上下文切换。ThreadX的线程共享同一内存空间,资源可共享。
和许多其他实时操作系统类似,ThreadX是多任务系统,采用抢占式调度,快速的中断响应,独立内存管理,支持线程间通信,互斥,事件和线程同步。
ThreadX主要的特点是支持优先级继承,抢占阈值的设计,微内核设计,代码空间占用小等。ThreadX源代码采用免版税使用模式(royalty-free)。
ThreadX 通常应用在嵌入式操作系统中。大部分的开发工作在主机上完成,主机运行Windows或Linux系统,交叉编译器可以在主机上生成目标系统的机器码,然后下载到目标板上运行。
几种可以识别threadx系统(OS-aware)的开发工具,包括 Wind River Workbench,ARM RealView,GreenHills Software's MULTI, Metrowerks CodeWarrior, IAR C-SPY, Lauterbach TRACE32 和 visionCLICK。
ThreadX 支持的架构包括 ARM,X86, ARC, MIPS,Xtensa等等, 几乎涵盖所有主流CPU架构。
国内主流物联网操作系统
◆华为-LiteOS
2015年Huawei LiteOS发布,2016年9月推出开源版本,Kernel源代码开源,大小只有10K,是华为针对物联网领域推出的轻量级物联网操作系统,是华为物联网战略的重要组成部分。具备轻量级、低功耗、互联互通、组件丰富、快速开发等关键能力,基于物联网领域业务特征打造领域性技术栈,为开发者提供 “一站式” 完整软件平台,有效降低开发门槛、缩短开发周期,可广泛应用于可穿戴设备、智能家居、车联网、LPWA等领域。
关键特性包括低功耗框架、OpenCPU架构、安全性设计、端云互通组件和SOTA远程升级等。
◆华为-鸿蒙HarmonyOS(含LiteOS内核)
华为HarmonyOS是一款面向全场景(移动办公、运动健康、社交通信、媒体娱乐等)的分布式操作系统。在传统的单设备系统能力的基础上,HarmonyOS提出了基于同一套系统能力、适配多种终端形态的分布式理念,能够支持多种终端设备。HarmonyOS的主要特点是分布式,包括软总线、设备虚拟化、数据管理和任务调度方面。同时具备一次开发,多端部署;统一OS,弹性部署的特点。
HarmonyOS主要有Linux、HarmonyOS内核、Lite OS三种内核,默认采用LiteOS,而且HarmonyOS内核文件中可以看到liteos-a和liteos-m字样,推测出HarmonyOS内核对于LiteOS内核具有一定的继承性。多内核设计可以在支持针对不同资源受限设备时,选则适合的内核。从另一个角度讲,LiteOS内核也不仅限于给HarmonyOS用,支持的硬件甚至比HarmonyOS还丰富一些,提供了更多内核案例和移植策略,从代码来看,它们都支持Cortex-M内核和Cortex-A内核。
小疑问:LiteOS和鸿蒙有啥不同?
两者因对产品定位的不同,在对内存和资源的消耗上也有不同。
HUAWEI LiteOS因为其具有很高的剪裁特性,在硬件资源有限的时候的仅保留内核,可以剪裁到6KB ROM以及消耗2KB RAM资源,可以说对资源的消耗是低到一定程度,而HarmonyOS为了保证系统性能要求,对硬件的资源则是128K ROM及2MB RAM的要求。
所以HUAWEI LiteOS主打物联网业务领域,更适合硬件低配置、低成本、低功耗的应用场景;HarmonyOS更适合多媒体交互,需要Js增加开发效率的复杂大应用的场合使用。HarmonyOS目前的开发板支持还是以华为自研芯片为主,HUAWEI LiteOS除了支持华为自研芯片外,还支持了市场上主流的Arm开发学习板。
◆阿里巴巴-AliOS Things
阿里做OS起源于移动操作系统YunOS,距今已近10年,后整合升级为AliOS。其中AliOS Things是AliOS家族专门针对物联网领域的、高可裁剪、轻量级的嵌入式操作系统,致力于搭建云端一体化物联网基础设备。具备极致性能,极简开发、云端一体、丰富组建、安全防护等关键能力,并支持终端设备连接到阿里云Link,可广泛应用在智能家居、智慧城市、新出行等领域。
2017年10月,AliOS Things正式开源。
AliOS Things采用微内核架构,能够将在智能硬件上运行的软件容器化和在线化升级,这意味软硬件可以快速解耦、运维,降低了硬件厂商的生产与维护成本。据阿里官方介绍,这是一款专用于AIoT智能设备的操作系统,具备全新开发模式、在线裁剪工具、应用与内核分离、脚本语言支持、本地AI框架等特性。
另外,AliOS Things也是平头哥YoC软件平台的核心。
◆赛睿德-RT-Thread
RT-Thread发布于2006年,是一个集RTOS内核、中间件组件和开发者社区于一体的技术平台,由熊谱翔先生带领并集合开源社区力量开发而成,RT-Thread也是一个组件完整丰富、高度可伸缩、简易开发、超低功耗、高安全性的物联网操作系统。RT-Thread具备一个物联网操作系统平台所需的所有关键组件,例如GUI、网络协议栈、安全传输、低功耗组件等等。
官方资料显示,RT-Thread目前拥有国内最大的嵌入式开源社区,同时被广泛应用于能源、车载、医疗、消费电子等多个行业,累积装机量超过8亿台,成为国人自主开发、国内最成熟稳定和装机量最大的开源RTOS。
RT-Thread拥有良好的软件生态,支持市面上所有主流的编译工具如GCC、Keil、IAR等,工具链完善、友好,支持各类标准接口,如POSIX、CMSIS、C++应用环境、Javascript执行环境等,方便开发者移植各类应用程序。商用支持所有主流MCU架构,如ARM Cortex-M/R/A, MIPS, X86, Xtensa, C-Sky, RISC-V,几乎支持市场上所有主流的MCU和Wi-Fi芯片。
◆中移物联-OneOS
OneOS是中国移动针对物联网领域推出的轻量级操作系统,2018年开始顶层设计,2020年6月正式对外发布开源版本。该系统具有可裁剪、跨平台、低功耗、高安全等特点,支持Arm Cortex-M/R/A、MIPS、RISC-V等主流CPU架构,兼容POSIX、CMSIS等标准接口,支持Micropython语言开发,提供图形化开发工具,能够有效提高开发效率并降低开发成本,帮助客户开发稳定可靠、安全易用的物联网应用。
OneOS遵循Apache许可证2.0版本,个人、企业客户可以免费在商业产品中使用,不需要公布源码,没有潜在商业风险。中移物联网表示,将秉承开放合作的态度,免费为客户提供适用于各种物联网场景的稳定系统。
◆腾讯-TencentOStiny
TencentOS tiny是腾讯面向物联网领域开发的实时操作系统,具有低功耗、低资源占用、模块化、安全可靠等特点,可有效提升物联网终端产品开发效率。
TencentOS tiny号称业界最小,只有1.8K,提供精简的RTOS内核,内核组件可裁剪可配置,可快速移植到多种主流MCU及模组芯片上。基于RTOS内核提供了丰富的物联网组件,内部集成主流物联网协议栈(如CoAP/MQTT/TLS/DTLS/LoRaWAN/NB-IoT 等),可助力物联网终端设备及业务快速接入腾讯云物联网平台。
有意思的是,这款操作系统推出不久后腾讯曾宣布,TencentOS将于2017年6月28日停止服务。当时给出的解释是,“因为第三方ROM市场萎缩,TencentOS要退出历史舞台了。”
但面对物联网市场的前景,2019年9月,腾讯还是宣布TencentOS tiny开源,希望以此进一步推动其物联网生态的繁荣。目前,TencentOS tiny已支持意法半导体、恩智浦、华大半导体、瑞兴恒方、国民技术等主流厂商多种芯片和模组。不过,与华为、阿里强势且全面的生态布局相比,腾讯还有很长一段路要走。
◆庆科-MiCO
2014年7月,上海庆科(Mxchip)携手阿里云发布了MiCO(Micro-controller based Internet Connectivity Operating System),这是一个面向智能硬件优化设计的、运行在微控制器上的、高度可移植的操作系统和中间件开发平台。当时庆科称,这是中国首款真正意义上的物联网操作系统。
作为独立的系统,MiCO拥有开放架构,并不依赖于MCU型号,同时具有硬件抽象层(HAL)。此外,固件的应用开放接口已实现多种应用层协议:海尔、美的、AO、Apple MFi 、HomeKit、Siri语音控制等。MiCO包括了底层的芯片驱动、无线网络协议、射频控制技术、安全、应用框架等模块。
MiCO内含一个面向IoT设备的实时操作系统内核,适合运行在资源受限的微控制设备上。此外,MiCO还包含了网络通信协议栈、安全算法和协议、硬件抽象层、编程工具等开发IoT必不可少的软件功能包。MiCO提供MCU平台的抽象化,使得基于MiCO的应用程序开发不需要关心MCU具体件功能的实现,通过MiCO中提供的各种编程组件快速构建IoT设备中的软件。
◆翼辉-SylixOS
SylixOS是翼辉信息自主设计研发的大型嵌入式硬实时操作系统,从2006年便开始开发工作,据工信部评估报告内核自主化率100%。支持对称多处理器(SMP)平台,具有丰富的文件系统、网络系统以及众多设备驱动支持,并提供完善的集成开发环境。应用领域主要有网络设备、国防安全、工业自动化、轨道交通、电力、医疗、航空航天、汽车电子等。
从全球范围上看,SylixOS作为实时操作系统的后来者,在设计思路上借鉴了众多实时操作系统的设计思想,其中就包括RTEMS、VxWorks、ThreadX等。它的诞生可以摆脱国内一些关键性设备对国外嵌入式操作系统的依赖,为国内的嵌入式信息技术行业提供一个全新的选择。
为了保证 SylixOS能够持续开发,并且吸引大批开发人员参与测试,SylixOS目前是以公开源代码项目的形式存在。据官网显示,该操作系统源码已经授权给了多家国内科研机构,包括中国航天科工集团、中国航天科技集团、龙芯中科、国防科学技术大学等,推出了SylixOS海鹰翼辉、风云翼辉、龙芯翼辉、麒麟翼辉等发行版本。
目前国内物联网操作系统可谓百花齐放,除上述这些,还有新华三的绿洲OS、海尔的UHomeOS、科银京成的Deltaos(道系统)、秦简计算机的DJYOS、致远电子的AworksOS、中航计算所的AcoreOS(天脉)、凯思昊鹏的HopenOS等等。但是总体而言,全球物联网市场大部分还是国外操作系统的天下,特别是较早进入市场的美国公司,比如ThreadX、FreeRTOS、vxWorks等。
小结
目前物联网操作系统市场上,除了一些老牌国外厂商的产品,其余十几种都处在发展初期,产业链中并未形成某一个或几个OS垄断的环境。对于互联网大厂这种有生态又不缺钱的主来说,很多还是希望使用自家开发定制的OS,从一定程度上也造成了行业内山头林立,各自为政。
另一方面,开源Linux和RTOS还是物联网市场主流,除具备自家OS外的企业,其余厂商大多采用具有生态优势,并且开源、中立的第三方操作系统,例如RT-Thread。
操作系统不能作为单一产品而存在,而应该是一个生态系统,需要硬件和软件开发者的支持。Windows和安卓系统们在PC时代和智能手机时代掌握了先机,形成垄断,令后来者难以颠覆,智能期待下一波计算革命。
根据BCG波士顿咨询的市场分析,大约80%的成功者在前5年就获得了超过50%的市场份额,他们平均使用7年时间达到市场份额的峰值,市场占有率约为80%。反观失败者的数据,他们在前5年获得的市场份额平均值为8%,峰值也仅为13%。比如微软的Windows Phone和黑莓的操作系统,它们的峰值市场份额仅为15%。
如今,物联网操作系统市场更多全新的机会正在开启,旧日霸主未必能在物联网时代延续霸业,新兴玩家们只有抓住时机迅速扩大规模,把握先发优势,才能占领物联网时代的制高点。如果无法快速扩大市场占有率,可能连参赛的资格都没有就已出局。
在各种新兴市场上,海外企业并没有绝对优势,这给国内企业自研操作系统创造了机会。例如智能硬件和物联网上布局广泛的华为、小米、BAT等国内企业们,也在一定程度上推动了国产物联网操作系统的崛起。
作者:刘于苇
相关阅读
◆传感器和物联网,谁成就了谁
◆仪表人应该清楚的物联网认知十大误区