------ 【導讀】 ------
區塊鏈技術的確可以為IoT帶來特定層面的提升,比如改進數據的安全性和激發新的商業模式,但這并不是一種顛覆,而是一次融合。“物鏈網”操作系統如果想在IoT領域站穩腳跟,必須讓物聯網企業易于使用,它的本質與物聯網操作系統別無二致,因此應滿足物聯網操作系統的各種要求。
這是一篇非典型的學習筆記,因為這周我想聊聊物聯網操作系統。
為什么突然想到這個老生常談的話題呢?有兩個主要原因:
一是這個禮拜有意無意當面接觸了很多做物聯網操作系統的公司,尤其在坐鎮由母校組織的第3屆清華校友創意創新創業大賽(簡稱三創大賽)過程中,看到了新型物聯網操作系統項目的展示。
二是隨著區塊鏈與物聯網深度結合為“物鏈網”的發酵,專為“物鏈網”而生的操作系統也不甘寂寞,紛紛ICO或者發行代幣,比如Elastos(現在叫亦來云)、Ruff、萬物鏈ITC…我也被越來越多的人問到怎么看待這些物鏈網OS,那么這次我就來分享一下關于物鏈網操作系統這門“課程”我的學習筆記,需要說明的是,首先我認為筆記必須淺顯易懂,其次這些筆記蘊含了【物聯網智庫】篩選優質項目的部分方法論。畢竟作為物聯網領域中獨具“高冷范兒”的專業媒體和研究機構,對于報道哪些有價值的靠譜項目,雪藏哪些埋伏著“定時炸彈”的忽悠項目,我們是這個行業中最為“挑剔”的。
“物鏈網”操作系統的本質是“物聯網”操作系統
區塊鏈技術的確可以為IoT帶來特定層面的提升,比如改進數據的安全性和激發新的商業模式,但這并不是一種顛覆,而是一次融合。“物鏈網”操作系統如果想在IoT領域站穩腳跟,必須讓物聯網企業易于使用,它的本質與物聯網操作系統別無二致,因此應滿足物聯網操作系統的各種要求。
[筆記1:為什么需要物聯網操作系統IoT OS?因為雙重解耦]
物聯網的典型特征是碎片化,硬件設備配置多種多樣,不同的應用領域差異很大。從小到只有幾個KB內存的低端單片機,到數百MB內存的高端智能設備。因此需要IoTOS屏蔽物聯網底層硬件碎片化的特征,提供統一的編程接口,降低物聯網應用開發的成本和時間。
IoT OS與Android在移動互聯網領域的地位和作用類似,實現了應用軟件與智能終端硬件的解耦。就像在Android的生態環境中,開發者基本不用考慮智能終端的物理硬件配置,只需根據Android的編程接口編寫應用程序,就可以運行在所有基于Android的智能終端上一樣,IoTOS的作用也是如此。除此之外,在邊緣計算時代的某些特定場景中,物聯網OS還需要達到另外一種解耦:硬件驅動程序與操作系統內核的分離。
[筆記2:物聯網操作系統的整體架構,至少包含3個關鍵子系統]
IoTOS由操作系統內核、中間件平臺(外圍功能組件)、物聯網協同框架、集成開發環境等子系統組成。這些子系統之間相互配合,共同組成一個完整的面向各種各樣物聯網應用場景的軟件基礎平臺。同時這些子系統之間有一定的層次依賴關系,比如外圍功能組件需要依賴于物聯網操作系統內核,物聯網協同框架需要依賴于外圍功能組件。
1.內核是任何操作系統都有的核心組件,操作系統的核心功能和核心機制,都是在內核中實現的。
內核中包括線程/任務管理、多任務同步與通信、內存管理、內核安全等機制。對于物聯網硬件來說,內核的能力千差萬別。
如果把物聯網設備比作外星人,他們的智商參差不齊,其中一些只會從0數到1,而另一些外星人的智商超過愛因斯坦。內核就相當于外星人的腦容量,智商不同腦容量自然差異很大。一些內核尺寸必須維持在10K以內,超標了外星人就要罷工,另外一些則不同,內核尺寸達到MB級別也不在話下。
2. 中間件平臺(外圍功能組件)是指為了適應物聯網的應用特點,操作系統應該具備的一些功能特征。
中間件平臺還包含為了擴展物聯網操作系統內核的功能范圍,而開發的一些模塊,比如文件系統、網絡協議棧等。物聯網操作系統內核和外圍功能組件結合起來,可以解決物聯網的連接需求,比如支持以太網、3G/4G、藍牙、Wi-Fi、ZigBee、NFC、LiFi、NB-IoT、LoRa等。
延續上面的比喻,想讓領養來的外星人可管可控,你得給他配備必要的服飾和工具。這些工具就由中間件平臺提供,比如穿好工作服(GUI)、配備手機/呼機/商務通…讓他能與外界聯系(滿足連接需求)、當然還需要一位翻譯讓外星人理解你的指令(JAVA虛擬機)。
3. 物聯網協同框架是實現物聯網“協同”功能性需求的關鍵功能系統。
團隊的能量是巨大的,為了最大程度壓榨外星人團隊的腦力和體力,自帶十八般武藝的“總管”不可或缺(一組軟件的集合),他負責統籌外星人隊員之間的協同工作。也就是說,協同框架使得物聯網設備能夠“充分合作”,以達到單一物聯網設備無法完成的功能。
4. 物聯網智能引擎(非必需),其中包含了諸如語音與語義識別,機器學習等功能模塊。
5. 集成開發環境是豐富操作系統生態圈的核心組件,同時也是形成“二級開發模式”的基礎。
所謂二級開發模式,指的是包含操作系統平臺本身功能開發的第一級開發,以及基于操作系統平臺,進行應用程序開發或操作系統內核定制的二次開發。簡單而言,它讓你能夠重新配置外星人大腦中的部分底層代碼。
其中,物聯網運行庫(IoT Runtime)值得劃重點強調。任何一種開發語言,都有一個與之對應的運行庫,比如針對Java語言的J2SE/J2EE/J2ME等配套庫。這些運行庫包含開發過程中常用的功能或函數,提供最為常見的物聯網開發功能支持。
以最后一個比喻結束筆記2。如果你想讓一個外星人不止會算加法,還要會算平方,就拿來“平方”對應的Runtime直接導入。綜合上面的說明,可以把物聯網操作系統的框架做進一步細化,如下圖所示。
[筆記3:物聯網操作系統呈現開源為主、閉源并存的發展態勢]
各種物聯網操作系統可以支持不同的硬件、通信標準、應用場景。開源,有利于打破技術障礙和壁壘,提高互操作性和可移植性,減小開發成本,同時也適合開源社區的開發人員參與。
典型的開源物聯網操作系統包括:RT-Thread、LiteOS、Tizen、TinyOS、RIOT、Contiki、FreeRTOS、ApacheMynewt、Zephyr OS、Ubuntu Core、ARM mbed、AndroidThings、Yocto、Raspbian。
為了保證安全性和掌握控制權,某些操作系統會將關鍵部分閉源授權。同時,由于某些特殊行業存在自身特殊需求,操作系統的閉源策略仍有很大的互補需求。
典型的商業物聯網操作系統包括:Windows 10 IoT、WindRiverVxWorks、MicriumμC/ OS、Micro Digital SMX RTOS、MicroEJOS、ExpressLogic ThreadX、Mentor Graphics Nucleus RTOS、Green Hills Integrity、Particle。
[筆記4:物聯網操作系統的兩條技術路線之爭]
由于原有的嵌入式操作系統很難完全匹配物聯網應用需求,目前物聯網操作系統領域主要存在出2條技術路徑:
一條是基于Android這樣的操作系統進行裁剪和定制,來適應物聯網接入設備的需求;另一條是以傳統嵌入式操作系統和實時操作系統為基礎,通過增加設備聯網等功能,滿足物聯網接入設備互聯需求,形成新的嵌入式操作系統。
1.基于Android等操作系統進行裁剪和定制的技術路線
采用這條技術路線的操作系統大多是基于開源Linux系統裁剪,優勢在于保持底層技術架構一致的基礎上,可以使用原有操作系統的商業生態,從而降低市場進入成本。
缺點在于要兼顧多種應用場景,很難保證針對底層應用的最優化,包括功耗的最優化和可靠性最優化等,也很難保證運行在高頻處理器的操作系統,經過裁剪能夠運行在低主頻和更低主頻的微控制器上。為了便于理解,此處調用上面的比喻。也就是說,這條路線對“外星人”的腦容量有一定要求,智商達標了才可以。
典型代表公司是Google,通過對Android的適當定制裁剪,Google推出了AndroidThings。
2.在傳統RTOS實時操作系統的基礎上增加設備聯網功能
這條技術路線的優勢在于原本單片機操作系統就是針對資源受限的硬件平臺開發,功耗和可靠性方面都顯著優于上面的技術路徑,通過適當增加功能也能保證功耗和性能符合應用需求。
缺點和主要問題在于如何圍繞操作系統構建一套新的完整生態體系,提高市場占有率。
典型代表公司是亞馬遜,2017年底,FreeRTOS作者加入亞馬遜AWS任首席工程師,正式推出AmazonFreeRTOS。
目前兩種技術路線尚處發展的過程中,兩者技術架構完全不同,基本上不存在交集。
“說法”并不驗證“想法”,用“做法”驗證想法
如今大家對邊緣計算的認識得到了極大提升,物聯網操作系統的戰略重要性越來越高。一方面物聯網操作系統不僅包含內核,還包含各種功能組件,便于物聯網企業加快產品上市時間。另一方面,隨著華為、阿里、ARM等巨頭紛紛布局物聯網,IoTOS作為連接“云”和“端”的“入口”,成為巨頭的必爭之地。
有了上面的課程筆記作為基礎,我們可以相對容易的對各種物聯網操作系統做出基本判斷。“傳統”物聯網OS的評述和分析已有不少現成的精華文章,因此這里著重以最近火爆的“新型”物鏈網OS為例,包括萬物鏈ITC、Ruff、亦來云,進行說明。
當下“物鏈網”操作系統尚沒有明確的定義,對于大量碎片化的物聯網設備來說,能夠承載區塊鏈功能的操作系統與“傳統”IoT操作系統并沒有嚴格的區別。物鏈網OS的新意之一在于考慮到部署區塊鏈錢包的便捷性,在內核之上通過中間件和應用程序提供了更多區塊鏈功能的支持。
客觀現實的危險性不得不提:物鏈網離人性的試金石“利益”太近,往往令人變得“言不由衷”,因此寫在白皮書上的文字和各種高談闊論的“說法”并不能驗證真實“想法”。一個物聯網操作系統團隊的想法是否可行、能否落地,只能反應于他們會采取什么樣的“做法”。區塊鏈技術在物聯網領域的應用,將是個緩慢長期的過程,但由于物鏈網OS的做法普遍“非比尋常”,結果或很快就能見分曉。
從學習筆記你可以看出,操作系統是一個比較耗費時間的技術,相對來說從業者并不多,創始團隊如果沒有10年以上的底蘊積累,難掀風浪。而區塊鏈也是一種以公信力為代表的技術,也就意味著裝機量不大的系統直接出局。IoT設備普遍計算能力相對薄弱,資源受限,挖礦激勵機制基本上在IoT設備中不可行,也就大概率不存在為了獲得激勵而鋪機器的情況。因此作為操作系統的“新生”萬物鏈ITC可以直接跳過。
直接來看Ruff。Ruff是由上海南潮信息科技有限公司開發的一個支持JavaScript開發應用的物聯網操作系統。RuffOS 1.0于2016年4月正式發布,同時發布的還有RuffSDK、Ruff軟件倉庫、Ruff開發套件等幫助開發者快速開發物聯網應用的工具。
Ruff在物聯網領域是一種獨特的存在。RuffOS是一個兼容多個平臺的運行環境Runtime,它不僅支持嵌入式Linux,還支持MCU單片機領域等。RuffOS為開發者提供統一的硬件資源的抽象,幫助開發者便捷管理APP。
依照學習筆記中整體架構一項作為主要判斷因素,Ruff的理想是在現有操作系統內核之上,增加一個物聯網運行庫(IoT Runtime)就好,的確令人眼前一亮。然而理想豐滿現實骨感,以Runtime為支撐的操作系統很“單薄”,受到來自芯片企業和IoT軟件應用開發者的雙重壓力也更大,使用場景比較有限。
尤其在當Ruff提出了自己的區塊鏈Ruff Chain之后,雖然在區塊鏈技術應用于物聯網方面有一定優勢,但“傳統”物聯網公司也可以在具體實施過程中引入區塊鏈技術,況且Ruff團隊在運營區塊鏈生態之余,還有多少精力兼顧OS底層架構的牢固可靠性,不禁令人擔憂。
Elastos現在有了更令人熟知的名字,亦來云。我與亦來云的創始人陳榕相識于2015年,他是清華大學計算機系77級的學長,先是在美國伊利諾伊大學研究了7年操作系統,隨后又在微軟總部8年,參與Windows操作系統底層模塊的開發,回國后一心做操作系統苦熬十多年,可以說從頭見證了各種OS的發展。
從學習筆記中的技術路線上來看,亦來云采用了物聯網操作系統中的第一種。由于Linux已經相當成熟,改進空間不大,因此亦來云將主要精力用于虛擬機技術。這一定位決定了亦來云對于大量的碎片化小型物聯網設備來說有些“龐大”,覆蓋不了占據絕大多數比例的物聯網場景,Elastos更加適合于計算能力較高的物聯網設備以及與互聯網接壤的領域。Elastos將區塊鏈功能運行在操作系統之上,提升了部署效率。
寫到這里,不禁有個問題,物聯網操作系統承載區塊鏈DApp應用并非難事,為什么那些最有實力的IoTOS沒有介入呢?你我心中都有答案。
除了物鏈網操作系統之外,現在打著各種“人工智能”旗號的物聯網操作系統正在浮現。比較奇葩的一款比如TreeOS,號稱可以“從電路圖直接生成代碼”,呵呵。相信每個人對照著上面的“課程”筆記,都可以對它進行一目了然的評價。根據一份最新的研究報告顯示,全球物聯網操作系統最近幾年將以超過42%的CAGR增長。與PC、平板電腦和智能手機有本質不同,由于碎片化、場景復雜等特性,IoT可能不會出現只有幾款操作系統主導整個物聯網市場的情況。相反,和物聯網云平臺的情況類似,我們將不得不面對數十種IoT OS的備選方案,它們各自的優缺點都不能放之四海而皆準,但四海之內一定有最適合你手中物聯網場景的OS或OS組合。上述學習筆記可以進一步提煉為IoT OS要素Checklist,希望它能為你擦亮雙眼。
掃一掃在手機上閱讀本文章