本文介紹了面向物聯(lián)網(wǎng)的許多新型開源操作系統(tǒng)。
在過去的十年間,大多數(shù)新型開源操作系統(tǒng)已從移動市場轉(zhuǎn)向物聯(lián)網(wǎng)市場。本文介紹了面向物聯(lián)網(wǎng)的許多新型開源操作系統(tǒng)。我們之前的文章介紹了開源物聯(lián)網(wǎng)框架,以及面向物聯(lián)網(wǎng)和消費者智能家居設(shè)備的Linux和開源開發(fā)硬件。
除了介紹面向物聯(lián)網(wǎng)的新型嵌入式Linux發(fā)行版外,我還介紹了OpenWrt等幾款比較老的輕量級發(fā)行版,它們在這個領(lǐng)域迎來了新生。雖然Linux發(fā)行版主要針對網(wǎng)關(guān)和集線器,但是面向物聯(lián)網(wǎng)的非Linux開源操作系統(tǒng)取得了同樣迅猛的發(fā)展,它們可以在微控制器單元(MCU)上運行,通常面向物聯(lián)網(wǎng)邊緣設(shè)備。
請記住一點:如今幾乎所有的操作系統(tǒng)都聲稱有一些物聯(lián)網(wǎng)連接功能,所以本文這份名單有點隨意。本文介紹的開源操作系統(tǒng)大多數(shù)符合下列屬性:占用內(nèi)存少、電源效率高、模塊化可配置通信堆棧,對特定的無線和傳感器技術(shù)提供強有力的支持。一些項目注重物聯(lián)網(wǎng)安全,許多非Linux操作項目專注于實時確定性(real-time determinism),這有時是工業(yè)物聯(lián)網(wǎng)的一個要求。
我通常遠離這類Linux發(fā)行版:被列入“輕量級”這一類,但是仍然主要針對桌面使用或便攜式U盤實施, 而不是針對無外設(shè)設(shè)備。不過,像LXLE或Linux Lite這些輕量級Linux發(fā)行版可能是適合物聯(lián)網(wǎng)的選擇。
非Linux開源平臺方面的選擇來得比較困難。畢竟,大多數(shù)輕量級實時操作系統(tǒng)可用于物聯(lián)網(wǎng)。我側(cè)重于主要平臺,或者是似乎為物聯(lián)網(wǎng)帶來最大希望的平臺。其他潛在的候選對象可以在這個開源實時操作系統(tǒng)網(wǎng)站(http://www.osrtos.com)上找到。
本文未提到Windows 10 for IoT Core,它對創(chuàng)客來說是免費的,支持AllJoyn和IoTivity,但是并非完全開源。還有許多商用實時操作系統(tǒng)是物聯(lián)網(wǎng)領(lǐng)域的大玩家,比如Micrium的µC/OS。
九大基于Linux的開源物聯(lián)網(wǎng)發(fā)行版
1.Brillo ――在谷歌發(fā)布Brillo后的一年里,這款基于安卓的輕量級發(fā)行版日益受到嵌入式板卡的追捧,比如英特爾Edison和Dragonboard 410c,甚至得到一些模塊上計算機的追捧。Brillo的未來與谷歌的Weave通信協(xié)議密切相關(guān),它需要這種協(xié)議。Weave為Brillo帶來了發(fā)現(xiàn)、配置和驗證等功能,Brillo可以在只有32MB內(nèi)存和128MB閃存的設(shè)備上運行。
相關(guān)鏈接:https://developers.google.com/brillo/
2.華為LiteOS――別將華為的LiteOS與開源Unix變種混為一談,據(jù)說它基于Linux,但確實是一種非常精簡的實施方法。一年多前宣布的LiteOS聲稱可以作為只有10KB大小的內(nèi)核來部署。LiteOS應(yīng)用廣泛,從基于MCU的設(shè)備,到與安卓兼容的應(yīng)用程序處理系統(tǒng),不一而足。這款可定制的操作系統(tǒng)擁有諸多功能,比如零配置、自動發(fā)現(xiàn)、自動聯(lián)網(wǎng)、快速啟動和實時操作,它提供廣泛的無線支持,包括LTE和網(wǎng)狀網(wǎng)絡(luò)。LiteOS隨華為的敏捷物聯(lián)網(wǎng)解決方案交付,它驅(qū)動窄帶物聯(lián)網(wǎng)(NB-IoT)解決方案。
相關(guān)鏈接:http://www.huawei.com/minisite/iot/en/liteos.html
3.OpenWrt/LEDE/Linino/DD-Wrt――由于物聯(lián)網(wǎng)熱潮,久負盛名、專注網(wǎng)絡(luò)的OpenWrt嵌入式Linux卷土重來。輕量級OpenWrt經(jīng)常出現(xiàn)在路由器和基于MIPS的WiFi板卡上。早期的衍生版(比如DD-Wrt和面向Arduino的Linino)最近更是出現(xiàn)了分支版本。Linux嵌入式開發(fā)環(huán)境(LEDE)項目承諾治理會更透明、發(fā)布周期會更穩(wěn)定。
相關(guān)鏈接:https://openwrt.org
4.Ostro Linux――今年8月,英特爾選擇用于英特爾Joule模塊(運行在最新的四核凌動T5700片上系統(tǒng)上)后,這款基于Yocto Project的發(fā)行版一舉成名。Ostro Linux符合IoTivity,支持眾多的無線技術(shù),還提供一種傳感器框架。它非常注重物聯(lián)網(wǎng)安全,提供操作系統(tǒng)、設(shè)備、應(yīng)用程序和數(shù)據(jù)等層面的保護,包括加密和MAC。該發(fā)行版包含在無外設(shè)版本和媒體(XT)版本中。
相關(guān)鏈接:https://ostroproject.org
5.Raspbian――還有另外一些面向Raspberry Pi的發(fā)行版,它們更專門面向物聯(lián)網(wǎng),不過迅速成熟的Raspbian仍是佼佼者。由于它是面向在最廣泛使用的物聯(lián)網(wǎng)平臺上的DIY項目的最流行的發(fā)行版,開發(fā)人員可以向眾多項目和教程尋求幫助。由于Raspbian支持面向Node-JS的可視化設(shè)計工具Node-RED,我們覺得沒有太充分的理由選擇專門針對RPi、面向物聯(lián)網(wǎng)的Thingbox。
相關(guān)鏈接:https://www.raspbian.org
6.Snappy Ubuntu Core――Ubuntu Core的這個嵌入式版本又叫帶Snaps的Ubuntu Core,它利用了Snap軟件包機制――Canonical將其作為一種通用Linux軟件包格式分拆出來,讓單一的二進制軟件包能夠在“任何Linux桌面、服務(wù)器、云或設(shè)備上”運行。Snaps讓Snappy Ubuntu Core能夠提供事務(wù)回滾、安全更新、云支持和應(yīng)用程序商店平臺。Snappy只需要600MHz處理器和128MB內(nèi)存,但還需要4GB閃存。它可以在Pi及其他的嵌入式板卡上運行,出現(xiàn)在眾多設(shè)備上,包括Erle-Copter無人機、戴爾Edge網(wǎng)關(guān)、Nextcloud Box和LimeSDR。
相關(guān)鏈接:https://developer.ubuntu.com/en/snappy/
7.Tizen――Linux基金會托管的這個嵌入式Linux堆棧主要得到了三星的支持,它在移動市場很少引起注意。它廣泛用于三星的電視和智能手表中,包括新的Gear S3,它也零星地實施在三星的相機和消費級設(shè)備中。Tizen 甚至可以在Raspberry Pi上運行。三星已開始將Tizen與其SmartThings智能家居系統(tǒng)集成起來,以便能夠通過三星電視來控制SmartThings。我們還可以預(yù)計它會與三星的Artik模塊和Artik Cloud加強集成。Artik隨帶Fedora,但是Tizen 3.0最近連同Ubuntu Core一并移植。
相關(guān)鏈接:https://www.tizen.org/ko?langredirect=1:
8.uClinux――久負盛名的精簡版uClinux是唯一可以在MCU上運行的Linux,可以在特定的Cortex-M3、M4和M7等型號上運行。uClinux需要MCU內(nèi)置存儲器控制器,可以使用外部DRAM芯片來滿足內(nèi)存要求?,F(xiàn)在uClinux已被并入到主線Linux內(nèi)核中,得益于Linux中廣泛的無線支持。然而,Mbed等更新穎的面向MCU的操作系統(tǒng)在迅速填補無線方面的空白,配置起來更容易。EmCraft是MCU上uClinux的最大支持者之一,提供眾多基于Cortex-M的模塊。
相關(guān)鏈接:http://www.uclinux.org
9.Yocto Project――Linux基金會的Yocto Project不是一款Linux發(fā)行版,而是一個開源協(xié)作項目,為開發(fā)人員提供構(gòu)建自定義嵌入式堆棧的模塊、工具和方法。由于你可以用極小的開銷來定制堆棧,它常常用于物聯(lián)網(wǎng)。Yocto Project構(gòu)成了大多數(shù)商用嵌入式Linux發(fā)行版的基礎(chǔ),也是Ostro Linux和Qt for Device Creation等項目的一部分。Qt正在為Qt 5.8準備一種Qt Lite技術(shù),將為更小巧的物聯(lián)網(wǎng)目標設(shè)備優(yōu)化Device Creation。
相關(guān)鏈接:https://www.yoctoproject.org
九大非Linux開源物聯(lián)網(wǎng)操作系統(tǒng)
1.Apache Mynewt――開源、支持無線的Apache Mynewt面向32位MCU,由Runtime開發(fā),由Apache軟件基金會托管。模塊化的Apache Mynewt擁有無線支持、并發(fā)連接的準確可配置性、調(diào)試功能和細粒度的電源控制。5月份,Runtime和Arduino Srl宣布,將提供Apache Mynewt,面向Arduino Srl的Primo和STAR Otoo SBC。這款操作系統(tǒng)還支持Arduino LLC板卡,比如Arduino Zero。(最近,Arduino Srl和Arduino LLC達成了訴訟調(diào)解,宣布計劃在Arduino控股公司和Arduino基金會下重新聯(lián)手)。
相關(guān)鏈接:http://mynewt.apache.org
2.ARM Mbed――ARM面向物聯(lián)網(wǎng)的操作系統(tǒng)針對小巧、電池供電的物聯(lián)網(wǎng)端點,這些端點在Cortex-M MCU上運行,可能只有8KB內(nèi)存,已出現(xiàn)在BBC Micro:bit SBC上。雖然最初是半專有、只有單線程,缺少確定性功能,但現(xiàn)在它是開源,采用Apache 2.0許可證,提供了多線程和實時操作系統(tǒng)支持。不像許多輕量級實時操作系統(tǒng),Mbed在設(shè)計當初心系無線通信,最近它增添了線程支持。該操作系統(tǒng)支持可通過Mbed Device Connector來安全地提取數(shù)據(jù)的云服務(wù)。今年早些時候,該項目發(fā)布了可穿戴式設(shè)備參考設(shè)計。
相關(guān)鏈接:https://www.mbed.com/en/
3.Contiki――由于只需要10KB內(nèi)存和30KB閃存,開源Contiki無法像Tiny OS或RIOT OS那么小巧,也無法像RIOT及其他一些操作系統(tǒng)提供實時確定性。然而,廣泛使用的Contiki提供了廣泛的無線網(wǎng)絡(luò)支持,IPv6堆棧由思科貢獻。該操作系統(tǒng)提供了一系列廣泛的開發(fā)工具,包括可裝入Cooja Network Simulator的動態(tài)模塊,以便調(diào)試無線網(wǎng)絡(luò)。Contiki聲稱可以高效地分配內(nèi)存。
相關(guān)鏈接:http://www.contiki-os.org
4.FreeRTOS――FreeRTOS很快就能在嵌入式開發(fā)平臺中與Linux相匹敵,它特別適用于開發(fā)物聯(lián)網(wǎng)終端設(shè)備。FreeRTOS缺少Linux功能,比如設(shè)備驅(qū)動程序、用戶帳戶以及高級的網(wǎng)絡(luò)和內(nèi)存管理。然而,它占用的資源比Linux少得多,更不用說與VxWorks這樣的主流實時操作系統(tǒng)相比了,它還提供開源GPL許可證。FreeRTOS可以在內(nèi)存不到0.5KB、ROM為5-10KB的設(shè)備上運行,不過與TCP/IP架構(gòu)結(jié)合使用更為常見,它更像是24KB內(nèi)存和60KB閃存。
相關(guān)鏈接:http://www.freertos.org
5.Fuchsia――谷歌的這款最新開源操作系統(tǒng)在8月份部分透露,留下的問題多過答案。Fuchsia與Linux毫無關(guān)系,但是基于旨在與面向MCU的操作系統(tǒng)(比如FreeRTOS)兼容的LK發(fā)行版,這讓許多人猜測它是一款物聯(lián)網(wǎng)操作系統(tǒng)。不過,F(xiàn)uchsia還支持移動設(shè)備和筆記本電腦,所以谷歌對這個處于早期階段的項目方面抱有極大的野心。
相關(guān)鏈接:https://github.com/fuchsia-mirror
6.NuttX――非限制性的、采用BSD許可證的NuttX主要以此出名:它是面向開源無人機的最常見的實時操作系統(tǒng),在APM/ArduPilot和PX4 UAV平臺上運行,它們都是Dronecode平臺的一部分。NuttX還廣泛用于其他資源受限制的嵌入式系統(tǒng)中。雖然它支持x86、 Cortex-A5及-A8平臺,但這款基于POSIX和ANSI的操作系統(tǒng)主要針對Cortex-M MCU。 NuttX完全搶占式,有固定的優(yōu)先級、輪詢和偶發(fā)調(diào)度。該操作系統(tǒng)號稱是“小巧的Linux通用型操作系統(tǒng),但大大精簡了功能特性。”
相關(guān)鏈接:http://nuttx.org
7.RIOT OS――已有8年歷史的RIOT OS以高效的電源使用和廣泛的無線支持而出名。RIOS的硬件要求是1.5KB內(nèi)存和5KB閃存,要求幾乎與Tiny OS一樣低。不過,它也提供了諸多功能,比如多線程、動態(tài)內(nèi)存管理、硬件抽象、部分的POSIX兼容和C++支持,這些是在Linux中而不是在輕量級實時操作系統(tǒng)中更常見的功能。其他功能包括低中斷延遲(約40個時鐘周期)和基于優(yōu)先級的調(diào)度。你可以在Linux或OS X下進行開發(fā),使用原生移植版,部署到嵌入式設(shè)備。
相關(guān)鏈接:https://www.riot-os.org
8.TinyOS――這款成熟的開源操作系統(tǒng)采用BSD許可證,非常小巧,支持低功耗,MCU目標設(shè)備可以“只有幾KB內(nèi)存和數(shù)十KB代碼空間”。事件驅(qū)動的TinyOS由nesC這種C語言來編寫,它經(jīng)常被研究低功耗無線網(wǎng)絡(luò)(包括多跳網(wǎng)絡(luò))的研究人員使用。據(jù)項目組自己承認,“計算密集型的應(yīng)用程序可能很難編寫。”項目致力于提供Cortex-M3支持,不過眼下它仍是為低端MCU和無線電芯片設(shè)計的。
相關(guān)鏈接:http://webs.cs.berkeley.edu/tos/
9.Zephyr――Linux基金會這款輕量級、提供安全功能的Zephyr RTOS可在只有2-8KB內(nèi)存的設(shè)備上運行。Zephyr可在x86、ARM和ARC系統(tǒng)上運行,主要專注于基于MCU,使用藍牙/BLE和802.15.4無線電(比如6LoWPAN)的設(shè)備。Zephyr基于Wind River的Rocket OS,它基于Viper,而Viper是精簡版的VxWorks。最初的目標設(shè)備包括Arduino Due和英特爾的Arduino 101及其他設(shè)備。Zephyr最近出現(xiàn)在了SeeedStudio的96Boards IoT Edition BLE Carbon SBC,它得到一個新的Linaro LITE工作組的支持。
相關(guān)鏈接:https://www.zephyrproject.org