本文介紹了面向物聯網的許多新型開源操作系統。
在過去的十年間,大多數新型開源操作系統已從移動市場轉向物聯網市場。本文介紹了面向物聯網的許多新型開源操作系統。我們之前的文章介紹了開源物聯網框架,以及面向物聯網和消費者智能家居設備的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)版本中。
相關鏈接:https://ostroproject.org
5.Raspbian――還有另外一些面向Raspberry Pi的發行版,它們更專門面向物聯網,不過迅速成熟的Raspbian仍是佼佼者。由于它是面向在最廣泛使用的物聯網平臺上的DIY項目的最流行的發行版,開發人員可以向眾多項目和教程尋求幫助。由于Raspbian支持面向Node-JS的可視化設計工具Node-RED,我們覺得沒有太充分的理由選擇專門針對RPi、面向物聯網的Thingbox。
相關鏈接:https://www.raspbian.org
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的模塊。
相關鏈接:http://www.uclinux.org
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基金會下重新聯手)。
相關鏈接:http://mynewt.apache.org
2.ARM Mbed――ARM面向物聯網的操作系統針對小巧、電池供電的物聯網端點,這些端點在Cortex-M MCU上運行,可能只有8KB內存,已出現在BBC Micro:bit SBC上。雖然最初是半專有、只有單線程,缺少確定性功能,但現在它是開源,采用Apache 2.0許可證,提供了多線程和實時操作系統支持。不像許多輕量級實時操作系統,Mbed在設計當初心系無線通信,最近它增添了線程支持。該操作系統支持可通過Mbed Device Connector來安全地提取數據的云服務。今年早些時候,該項目發布了可穿戴式設備參考設計。
相關鏈接:https://www.mbed.com/en/
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閃存。
相關鏈接:http://www.freertos.org
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下進行開發,使用原生移植版,部署到嵌入式設備。
相關鏈接:https://www.riot-os.org
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工作組的支持。