【51CTO.com 快译】本文介绍了面向物联网的许多新型开源操作系统。
在过去的十年间,大多数新型开源操作系统已从移动市场转向物联网市场。本文介绍了面向物联网的许多新型开源操作系统。我们之前的文章介绍了开源物联网框架,以及面向物联网和消费者智能家居设备的 Linux 和开源开发硬件。
除了介绍面向物联网的新型嵌入式 Linux 发行版外,我还介绍了 OpenWrt 等几款比较老的轻量级发行版,它们在这个领域迎来了新生。虽然 Linux 发行版主要针对网关和集线器,但是面向物联网的非 Linux 开源操作系统取得了同样迅猛的发展,它们可以在微控制器单元(MCU)上运行,通常面向物联网边缘设备。
请记住一点:如今几乎所有的操作系统都声称有一些物联网连接功能,所以本文这份名单有点随意。本文介绍的开源操作系统大多数符合下列属性:占用内存少、电源效率高、模块化可配置通信堆栈,对特定的无线和传感器技术提供强有力的支持。一些项目注重物联网安全,许多非 Linux 操作项目专注于实时确定性(real-time determinism),这有时是工业物联网的一个要求。
我通常远离这类 Linux 发行版:被列入“轻量级”这一类,但是仍然主要针对桌面使用或便携式U盘实施, 而不是针对无外设设备。不过,像 LXLE 或 Linux Lite 这些轻量级 Linux 发行版可能是适合物联网的选择。
非 Linux 开源平台方面的选择来得比较困难。毕竟,大多数轻量级实时操作系统可用于物联网。我侧重于主要平台,或者是似乎为物联网带来最大希望的平台。其他潜在的候选对象可以在这个开源实时操作系统网站(http://www.osrtos.com)上找到。
本文未提到 Windows 10 for IoT Core,它对创客来说是免费的,支持 AllJoyn 和 IoTivity,但是并非完全开源。还有许多商用实时操作系统是物联网领域的大玩家,比如 Micrium 的µC/OS。
九大基于 Linux 的开源物联网发行版
1. Brillo ――在谷歌发布 Brillo 后的一年里,这款基于安卓的轻量级发行版日益受到嵌入式板卡的追捧,比如英特尔 Edison 和 Dragonboard 410c,甚至得到一些模块上计算机的追捧。Brillo 的未来与谷歌的 Weave 通信协议密切相关,它需要这种协议。Weave 为 Brillo 带来了发现、配置和验证等功能,Brillo 可以在只有 32MB 内存和 128MB 闪存的设备上运行。
相关链接:https://developers.google.com/brillo/
2. 华为 LiteOS――别将华为的 LiteOS 与开源 Unix 变种混为一谈,据说它基于 Linux,但确实是一种非常精简的实施方法。一年多前宣布的 LiteOS 声称可以作为只有 10KB 大小的内核来部署。LiteOS 应用广泛,从基于 MCU 的设备,到与安卓兼容的应用程序处理系统,不一而足。这款可定制的操作系统拥有诸多功能,比如零配置、自动发现、自动联网、快速启动和实时操作,它提供广泛的无线支持,包括 LTE 和网状网络。LiteOS 随华为的敏捷物联网解决方案交付,它驱动窄带物联网(NB-IoT)解决方案。
相关链接:http://www.huawei.com/minisite/iot/en/liteos.html
3. OpenWrt/LEDE/Linino/DD-Wrt――由于物联网热潮,久负盛名、专注网络的 OpenWrt 嵌入式 Linux 卷土重来。轻量级 OpenWrt 经常出现在路由器和基于 MIPS 的 WiFi 板卡上。早期的衍生版(比如 DD-Wrt 和面向 Arduino 的 Linino)最近更是出现了分支版本。Linux 嵌入式开发环境(LEDE)项目承诺治理会更透明、发布周期会更稳定。
相关链接:https://openwrt.org
4. Ostro Linux――今年 8 月,英特尔选择用于英特尔 Joule 模块(运行在最新的四核凌动 T5700 片上系统上)后,这款基于 Yocto Project 的发行版一举成名。Ostro Linux 符合 IoTivity,支持众多的无线技术,还提供一种传感器框架。它非常注重物联网安全,提供操作系统、设备、应用程序和数据等层面的保护,包括加密和 MAC。该发行版包含在无外设版本和媒体(XT)版本中。
5. Raspbian――还有另外一些面向 Raspberry Pi 的发行版,它们更专门面向物联网,不过迅速成熟的 Raspbian 仍是佼佼者。由于它是面向在最广泛使用的物联网平台上的 DIY 项目的最流行的发行版,开发人员可以向众多项目和教程寻求帮助。由于 Raspbian 支持面向 Node-JS 的可视化设计工具 Node-RED,我们觉得没有太充分的理由选择专门针对 RPi、面向物联网的 Thingbox。
6. Snappy Ubuntu Core――Ubuntu Core 的这个嵌入式版本又叫带 Snaps 的 Ubuntu Core,它利用了 Snap 软件包机制――Canonical 将其作为一种通用 Linux 软件包格式分拆出来,让单一的二进制软件包能够在“任何 Linux 桌面、服务器、云或设备上”运行。Snaps 让 Snappy Ubuntu Core 能够提供事务回滚、安全更新、云支持和应用程序商店平台。Snappy 只需要 600MHz 处理器和 128MB 内存,但还需要 4GB 闪存。它可以在 Pi 及其他的嵌入式板卡上运行,出现在众多设备上,包括 Erle-Copter 无人机、戴尔 Edge 网关、Nextcloud Box 和 LimeSDR。
相关链接:https://developer.ubuntu.com/en/snappy/
7. Tizen――Linux 基金会托管的这个嵌入式 Linux 堆栈主要得到了三星的支持,它在移动市场很少引起注意。它广泛用于三星的电视和智能手表中,包括新的 Gear S3,它也零星地实施在三星的相机和消费级设备中。Tizen 甚至可以在 Raspberry Pi 上运行。三星已开始将 Tizen 与其 SmartThings 智能家居系统集成起来,以便能够通过三星电视来控制 SmartThings。我们还可以预计它会与三星的 Artik 模块和 Artik Cloud 加强集成。Artik 随带 Fedora,但是 Tizen 3.0 最近连同 Ubuntu Core 一并移植。
相关链接:https://www.tizen.org/ko?langredirect=1:
8. uClinux――久负盛名的精简版 uClinux 是唯一可以在 MCU 上运行的 Linux,可以在特定的 Cortex-M3、M4 和 M7 等型号上运行。uClinux 需要 MCU 内置存储器控制器,可以使用外部 DRAM 芯片来满足内存要求。现在 uClinux 已被并入到主线 Linux 内核中,得益于 Linux 中广泛的无线支持。然而,Mbed 等更新颖的面向 MCU 的操作系统在迅速填补无线方面的空白,配置起来更容易。EmCraft 是 MCU 上 uClinux 的最大支持者之一,提供众多基于 Cortex-M 的模块。
9. Yocto Project――Linux 基金会的 Yocto Project 不是一款 Linux 发行版,而是一个开源协作项目,为开发人员提供构建自定义嵌入式堆栈的模块、工具和方法。由于你可以用极小的开销来定制堆栈,它常常用于物联网。Yocto Project 构成了大多数商用嵌入式 Linux 发行版的基础,也是 Ostro Linux 和 Qt for Device Creation 等项目的一部分。Qt 正在为 Qt 5.8 准备一种 Qt Lite 技术,将为更小巧的物联网目标设备优化 Device Creation。
相关链接:https://www.yoctoproject.org
九大非 Linux 开源物联网操作系统
1. Apache Mynewt――开源、支持无线的 Apache Mynewt 面向 32 位 MCU,由 Runtime 开发,由 Apache 软件基金会托管。模块化的 Apache Mynewt 拥有无线支持、并发连接的准确可配置性、调试功能和细粒度的电源控制。5 月份,Runtime 和 Arduino Srl 宣布,将提供 Apache Mynewt,面向 Arduino Srl 的 Primo 和 STAR Otoo SBC。这款操作系统还支持 Arduino LLC 板卡,比如 Arduino Zero。(最近,Arduino Srl 和 Arduino LLC 达成了诉讼调解,宣布计划在 Arduino 控股公司和 Arduino 基金会下重新联手)。
2. ARM Mbed――ARM 面向物联网的操作系统针对小巧、电池供电的物联网端点,这些端点在 Cortex-M MCU 上运行,可能只有 8KB 内存,已出现在 BBC Micro:bit SBC 上。虽然最初是半专有、只有单线程,缺少确定性功能,但现在它是开源,采用 Apache 2.0 许可证,提供了多线程和实时操作系统支持。不像许多轻量级实时操作系统,Mbed 在设计当初心系无线通信,最近它增添了线程支持。该操作系统支持可通过 Mbed Device Connector 来安全地提取数据的云服务。今年早些时候,该项目发布了可穿戴式设备参考设计。
3. Contiki――由于只需要 10KB 内存和 30KB 闪存,开源 Contiki 无法像 Tiny OS 或 RIOT OS 那么小巧,也无法像 RIOT 及其他一些操作系统提供实时确定性。然而,广泛使用的 Contiki 提供了广泛的无线网络支持,IPv6 堆栈由思科贡献。该操作系统提供了一系列广泛的开发工具,包括可装入 Cooja Network Simulator 的动态模块,以便调试无线网络。Contiki 声称可以高效地分配内存。
相关链接:http://www.contiki-os.org
4. FreeRTOS――FreeRTOS 很快就能在嵌入式开发平台中与 Linux 相匹敌,它特别适用于开发物联网终端设备。FreeRTOS 缺少 Linux 功能,比如设备驱动程序、用户帐户以及高级的网络和内存管理。然而,它占用的资源比 Linux 少得多,更不用说与 VxWorks 这样的主流实时操作系统相比了,它还提供开源 GPL 许可证。FreeRTOS 可以在内存不到 0.5KB、ROM 为5-10KB 的设备上运行,不过与 TCP/IP 架构结合使用更为常见,它更像是 24KB 内存和 60KB 闪存。
5. Fuchsia――谷歌的这款最新开源操作系统在 8 月份部分透露,留下的问题多过答案。Fuchsia 与 Linux 毫无关系,但是基于旨在与面向 MCU 的操作系统(比如 FreeRTOS)兼容的 LK 发行版,这让许多人猜测它是一款物联网操作系统。不过,Fuchsia 还支持移动设备和笔记本电脑,所以谷歌对这个处于早期阶段的项目方面抱有极大的野心。
相关链接:https://github.com/fuchsia-mirror
6. NuttX――非限制性的、采用 BSD 许可证的 NuttX 主要以此出名:它是面向开源无人机的最常见的实时操作系统,在 APM/ArduPilot 和 PX4 UAV 平台上运行,它们都是 Dronecode 平台的一部分。NuttX 还广泛用于其他资源受限制的嵌入式系统中。虽然它支持 x86、 Cortex-A5 及-A8 平台,但这款基于 POSIX 和 ANSI 的操作系统主要针对 Cortex-M MCU。 NuttX 完全抢占式,有固定的优先级、轮询和偶发调度。该操作系统号称是“小巧的 Linux 通用型操作系统,但大大精简了功能特性。”
相关链接:http://nuttx.org
7. RIOT OS――已有 8 年历史的 RIOT OS 以高效的电源使用和广泛的无线支持而出名。RIOS 的硬件要求是 1.5KB 内存和 5KB 闪存,要求几乎与 Tiny OS 一样低。不过,它也提供了诸多功能,比如多线程、动态内存管理、硬件抽象、部分的 POSIX 兼容和 C 支持,这些是在 Linux 中而不是在轻量级实时操作系统中更常见的功能。其他功能包括低中断延迟(约 40 个时钟周期)和基于优先级的调度。你可以在 Linux 或 OS X 下进行开发,使用原生移植版,部署到嵌入式设备。
8. TinyOS――这款成熟的开源操作系统采用 BSD 许可证,非常小巧,支持低功耗,MCU 目标设备可以“只有几 KB 内存和数十 KB 代码空间”。事件驱动的 TinyOS 由 nesC 这种C语言来编写,它经常被研究低功耗无线网络(包括多跳网络)的研究人员使用。据项目组自己承认,“计算密集型的应用程序可能很难编写。”项目致力于提供 Cortex-M3 支持,不过眼下它仍是为低端 MCU 和无线电芯片设计的。
相关链接:http://webs.cs.berkeley.edu/tos/
9. Zephyr――Linux 基金会这款轻量级、提供安全功能的 Zephyr RTOS 可在只有2-8KB 内存的设备上运行。Zephyr 可在 x86、ARM 和 ARC 系统上运行,主要专注于基于 MCU,使用蓝牙/BLE 和 802.15.4 无线电(比如 6LoWPAN)的设备。Zephyr 基于 Wind River 的 Rocket OS,它基于 Viper,而 Viper 是精简版的 VxWorks。最初的目标设备包括 Arduino Due 和英特尔的 Arduino 101 及其他设备。Zephyr 最近出现在了 SeeedStudio 的 96Boards IoT Edition BLE Carbon SBC,它得到一个新的 Linaro LITE 工作组的支持。
相关链接:https://www.zephyrproject.org
原文标题: Open Source Operating Systems for IoT,作者: Eric Brown
【51CTO 译稿,合作站点转载请注明原文译者和出处为 51CTO.com】