縱論物聯網(五):除了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
mBed(mbed.org)是ARM公司官方提供的一套用於快速開發ARM架構微控制器應用原型的工具集,包括免費的軟體庫(SDK),硬體設計參考(HDK)和基於Web的線上編譯環境(mBed Compiler)三部分。
由於mBed的程式碼和大部分硬體設計都是以開源(permissive Apache 2.0 licence)的方式提供的,再加上它面向的ARM系列微控制器具有較高的價效比和廣泛的應用基礎,所以mBed在世界範圍內已經吸引了大量的電子產品開發者,其產業生態鏈已經初級規模。
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微控制器,以及基於MIPS和RISC-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 OS是UC 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體量小,開發起來門檻也沒那麼高,很多很小的系統都可以作為商用,所以對於物聯網產品設計者來說還是有很多選擇的。
相關文章
- 縱論物聯網(六):基於Linux的物聯網作業系統Linux作業系統
- 物聯網與工業物聯網:有什麼區別?
- 物聯網作業系統列表作業系統
- 物聯網開發系統有什麼作用?
- “物聯網”與“聯網物”,到底有什麼差異?
- 物聯網是什麼意思?物聯網概念是什麼?
- 除了VR還有什麼能在2016年撬動物聯網?VR
- 工業物聯網是什麼?工業物聯網有什麼作用?能在哪些行業應用?行業
- 物聯網閘道器與物聯網平臺有什麼功能
- 物聯網作業系統安全性分析作業系統
- AliOS Things物聯網作業系統iOS作業系統
- 什麼是工業物聯網?工業物聯網Web組態軟體Web
- 什麼是物聯網路卡?物聯網路卡的優點是什麼?
- 物聯網作業系統已現中國時機作業系統
- 工業物聯網體系下的裝置管理系統有什麼功能
- 物聯網路卡是什麼?
- 網際網路與物聯網有什麼區別?
- 三星要在物聯網領域KO蘋果:4月將公佈物聯網作業系統蘋果作業系統
- 三星4月將公佈物聯網作業系統 要在物聯網領域KO蘋果作業系統蘋果
- 【工業物聯網】如何假裝很懂工業物聯網?
- 最小物聯網系統(五)——Laravel RESTful模板化LaravelREST
- 最小物聯網系統——Dashboard
- 除了LoRa和SigFox,物聯網低功耗廣域網路還有哪些?
- 什麼是物聯網?國內如何定義物聯網?—健永科技
- 分析|什麼是物聯網路卡
- 什麼是工業物聯網閘道器?
- 物聯網CEO們,未來三年,物聯網將發生什麼?
- 企業級MQTT物聯網接入平臺是什麼?有什麼功能?MQQT
- 物聯網
- 【物聯網】物聯網時代,傳統企業終會奪回自己的天下!
- IoT和IIoT(工業物聯網)之間有什麼區別?
- 什麼是物聯網?—Vecloud微雲Cloud
- 谷歌Android正成為物聯網標準作業系統谷歌Android作業系統
- 物聯網資料卡系統原始碼——物聯網技術架構圖原始碼架構
- 樂訊通雲通訊:物聯網路卡在物聯網中起到什麼作用
- 有Android還不夠 谷歌正開發物聯網系統BrilloAndroid谷歌
- 物聯網路卡為什麼那麼火
- 什麼是工業物聯網?IIoT的要點