縱論物聯網(五):除了Linux,還有什麼物聯網作業系統

weixin_42480782發表於2018-06-18

導語

在前面介紹物聯網終端裝置的文章中,我們已經簡單地介紹了物聯網作業系統。物聯網作業系統的種類非常多,不過其中有很大一部分是基於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

縱論物聯網(五):除了Linux,還有什麼物聯網作業系統

mbed SDK 體系及目錄結構

mBed(mbed.org)是ARM公司官方提供的一套用於快速開發ARM架構微控制器應用原型的工具集,包括免費的軟體庫(SDK),硬體設計參考(HDK)和基於Web的線上編譯環境(mBed Compiler)三部分。

由於mBed的程式碼和大部分硬體設計都是以開源(permissive Apache 2.0 licence)的方式提供的,再加上它面向的ARM系列微控制器具有較高的價效比和廣泛的應用基礎,所以mBed在世界範圍內已經吸引了大量的電子產品開發者,其產業生態鏈已經初級規模。

MiCO

縱論物聯網(五):除了Linux,還有什麼物聯網作業系統

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微控制器,以及基於MIPSRISC-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 OSUC 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體量小,開發起來門檻也沒那麼高,很多很小的系統都可以作為商用,所以對於物聯網產品設計者來說還是有很多選擇的。

相關文章