物聯網操作系統研究與思考
作者 / 何小慶 嵌入式系統聯誼會秘書長(北京 100191)
本文引用地址:http://www.j9360.com/article/201712/373589.htm何小慶,著名的嵌入式系統專家,麥克泰軟件公司創始人,《單片機與嵌入式系統應用》編委會副主任。*本文來源于“嵌入式系統聯誼會主題討論會(總第22次)——物聯網操作系統現狀與發展前景研討會”上何小慶老師的報告,已經過作者確認。該會議主辦方:嵌入式系統聯誼會,時間:2017年11月12日,地點:北京航空航天大學。
摘要:探討了為什么需要物聯網操作系統,物聯網操作系統的內涵與外延,物聯網操作系統的現狀,及發展建議。
1 物聯網操作系統的產生
1.1 RTOS的發展歷史
提到物聯網操作系統(物聯網OS),肯定離不開嵌入式操作系統,更離不開RTOS(實時多任務操作系統)。因為嵌入式操作系統的內核大都使用RTOS來實現,當然也有不用RTOS來實現的物聯網OS,例如谷歌Android Things、微軟Windows 10 IoT Core等。
RTOS始于上世紀七十年代,最早始于北美,截至2017年約有30年的發展歷史。興盛時有幾百家,即使在今天在全世界范圍當中也有幾十家RTOS公司,中國也有幾家RTOS公司。
表1列舉了一些依然活躍的公司(注:指有商業公司對RTOS進行商業運作,以提供產品或服務的公司),并以時間排序,也標注了近況,例如有些已經被收購了,諸如風河(Wind River)在2009年被英特爾(Intel)收購,但其產品依然還在;還有些產品被收購了,但產品基本上不存在了,諸如VRTX已經不在了,pSoS被Wind River收購后也不在了。表1下面幾列是幾家較新的企業,例如Zephyr、Nuttx等是新一代的開源嵌入式操作系統,也基本屬于RTOS操作系統。
值得說明的是,中國也有幾家不錯的RTOS,除了熊譜翔先生創立的RT-Thread之外,中國最近有一家叫Sylix的RTOS公司,在一些軍工的項目非常活躍[1]。
1.2 嵌入式操作系統的演進之路
在我的《嵌入式操作系統風云錄》書[1]中,有1/3的章節詳解了RTOS 的歷史,其結論是:嵌入式操作系統(也有稱為設備操作系統,device OS)(注:含手機)從1980年開始計算,每隔十年大概會有一次革命,會產生一代具有標志性的嵌入式操作系統(如圖1)。其中,上世紀80年代是RTOS kernel(內核),代表產品有uC/OS和FreeRTOS。上世紀90年代有RTOS,代表產品有Vxwork,因為Vxwork出來時沒有把kernel單獨拿出來,它把文件系統、網絡、shelll、甚至工具IDE(集成開發環境)都配置好了,打包給用戶,讓用戶使用起來非常方便。
但進入2000年之后,以Linux為代表,通用OS(GOS)進入嵌入式領域,是通用型的甚至開源的。當然微軟嵌入式Windows(注:指Windows 10 IoT Core)也是GOS。 2010年之后是以Android(安卓)為代表。Android是面向移動應用的操作系統,因為Android最早的設計來自Andy Rubin,就是定位于使用Linux操作系統做手機,而在之前也有許多人為手機做過操作系統,例如Montavista,但是做得不是很好,甚至做起來非常困難。Android出來之后,其實也不是很容易,但到現在基本占了手機操作系統的八成的市場份額[2]。
最新的是物聯網操作系統。如果按十年為一個周期,2020年或許會有幾家知名或者流行的面向物聯網的操作系統出現。
1.3 為什么需要物聯網操作系統?
無論是傳統嵌入式的還是通用的OS,都無法滿足物聯網的需求,因為物聯網太復雜了,需要一個從端到云的整套解決方案。
2016年在德國紐倫堡舉辦的“嵌入式世界”大會上,風河公司在會議發言中列出了物聯網設備有8大需求:模塊可升級的架構,不同級別的設備軟件可伸縮,物聯網設備安全,虛擬化,性能和可靠性,連接性,豐富的UI,認證。這說明需要一種新型操作系統,或者需要在現有的嵌入式操作系統上進行改造,來滿足物聯網操作系統的需求。 目前市面上多數產品能夠部分滿足這8大需求,例如“模塊可升級架構”,傳統嵌入式OS是不能滿足的;“UI”方面,RT-Thread的UI非常好;再有“認證”,目前很多國內OS產品還沒有通過認證,因此如果用在工業領域里,這些產品可能還有距離。
物聯網操作系統的概念始于2014年,但是直到2016-2017年才得到廣泛的關注,根據Gartner預測的2017-2018年10大IoT技術,物聯網操作系統(IoT Operating System)也位列其中(如圖2),這說明至少從產業界對此有一個共識:物聯網操作系統需要有人去做。
1.4 物聯網OS的起源和發展過程
物聯網操作系統起源于傳感網的兩個開源OS——TinyOS和Contiki。今天的IoT對二者有相當的繼承性。至今還有個別的學校物聯網專業仍在講傳感網的OS。Contiki項目目前依然還很活躍,因為其作者是Adam Dunkels,是為名人,他原來是瑞典工學院計算機研究所的博士,后來創立了Thingsqure公司,是LWIP/uIP項目的作者,這個項目現在一直是他在維護。歐洲一些高校關于傳感網的課程還是基于該系統在講。TinyOS是美國加州大學伯克利分校的開源項目,至今已經停止維護了。
2010年歐洲有了面向物聯網的OS——RIOT,但影響力很小。
2014年物聯網OS開始熱鬧起來。《連線雜志》(Wired)和IEEE的《頻譜》雜志2014年對物聯網操作系統都有報道。為什么是在此時?因為兩家有影響力的公司推出了產品,它們是:Arm的Mbed OS,微軟的Windows 10 IoT Core。2014年10月陸續有一些小公司推出產品,包括Micrium公司的物聯網方案Spectrum(基于uC/OS)、慶科發布MiCO OS。但有些產品還是換湯不換藥,即把自己原有的RTOS增加一些功能組件,然后再對接一下亞馬遜云或微軟云等,就成為一套物聯網的軟件解決方案。 2015年華為發表了LiteOS,不過影響力有限。影響力最大的是2015年初谷歌在其“I/O 開發者大會”上宣布的Brilo OS。其誕生的背景是之前剛把智能家居設備公司Nest收購,因此很快能推出Brillo OS。現在谷歌要把Brilo OS改名為Android Things。這時業界熱鬧起來,大家都覺得物聯網OS一定是下一個風口,一定要跟風沖。所以在此之后,阿里也有YunOS(注:不主要針對物聯網市場,開始是手機,后來手機不成,就轉做汽車)。2016年Linux基金會推出Zephry。我國的海爾在2017年1月CES(美國消費電子展)上展出了基于UIhome OS的大冰箱,冰箱上鑲了一個大平板(人機界面),海爾在冰箱旁邊有了一個很大的宣傳牌:Your Home OS。2017年10月,阿里在云棲大會上宣布支持IoT的AliOS。
1.5 物聯網OS的分類 物聯網OS涵蓋從設備到網關、再到服務器、最后再到終端,只要有服務器/云和終端的地方都可以使用。由圖3可見,一大類是嵌入式操作系統,另一類是Linux開源去做,還有一些是Android和蘋果iOS(注:在此包含了手機)。
但是很有意思的是,據2016年IoT Developers Survey報告,Linux占70%以上的份額,其他小OS也不少,沒有用操作系統的也很多。可見Linux和Android的占有率是很高的。另外如果去看RTOS的機會,未來應該是通用OS的3倍,因為多數物聯網設備將使用MCU 作為主控單元,MCU 無法運行Linux OS。
以上可見,目前物聯網世界中是多種OS并存的。
2 什么是一個物聯網操作系統?
目前在學術界很難找到物聯網操作系統的定義。ELSEVIER出版社的雜志《Next Generation Computing System》計劃出版IoT專輯——Special Issue on Internet of Things,該專輯的征稿說明中定義了物聯網OS (IoT OS)的一些關鍵特性,諸如協議設計和驗證技術,還有模塊、能耗、調度(基于能耗的調度)、硬件支持、架構、網絡、協議棧、可靠性(即互通性)、通用API、實時性的能力等。
在產業界,微軟網站稱之為:The operating system built for Internet of Things(為物聯網打造的操作系統),谷歌網站的Android Things談的不是OS,而是“Build connected devices for a wide variety of consumer,retail,and industrial applications,”大意是針對所面向的應用。Arm認為是開源的嵌入式的操作系統,是針對Thing(物)的設計,當然一定是包含Arm Cortex-M的物。
《嵌入式操作系統風云錄》一書[1]對物聯網操作系統做出了一個基本定義,就是具備低功耗、實時性和安全的傳感、連接、云端管理服務軟件平臺。前三個(低功耗、實時性和安全性)是技術,后三個(傳感、連接和云端管理)是指從端到云的一套方案。
3 物聯網OS的現狀
物聯網OS目前的情況還是大公司在布局,小公司在投石問路[3-5]。這是因為技術和產品好做,商業模式還需要很多摸索。
物聯網OS可以分成兩類:一類是為物聯網而生的OS,即針對物聯網去做的OS,之前并沒有,代表產品是Mbed OS、MiCO OS、Android Things等,它們還可以再分成支持MCU和支持MPU(嵌入式處理器)的兩種,如圖4。 第二類是以嵌入式OS為基礎,把它擴展成支持物聯網應用的,這一類的最大市場份額是Linux和Android。除此之外,FreeRTOS經過加固、改造也能用于物聯網應用[6],最近亞馬遜推出Amazon FreeRTOS,uC/OS-III、ThreadX也可以用,例如瑞薩的Arm MCU平臺——Synergy就是基于ThreadX。Vxwork稱也有自己的嵌入式OS。Nucleus和RT-Thread 3.0等也都是適合物聯網的OS。
但是目前市場上十余種物聯網OS都處于發展初期。例如Arm Mbed OS已出了三個版本——1.0/2.0、3.0和5.0(最新是5.6.3)版本,但如果瀏覽Arm Mbed的官方網站,其中會有一句中文提示:Mbed操作系統仍處于開發階段。說明Arm還是在摸索和發展中。
慶科MiCO OS的市場定位還處于調整期。MiCO OS商標沒有了,之后慶科的MiCO SDK(軟件開發包)是以什么樣的市場品牌出來?大家正在觀望。因為如果只為自己的智能硬件模塊提供SDK,不能稱作物聯網OS。一個操作系統要求能夠支持不同的硬件平臺,這是操作系統的最基本條件。
Windows 10 IoT Core在向云端發展。我參加過多次微軟研討會,認為微軟更強調“云管端”的云,即上面的云怎么對IoT設備進行控制,而淡化操作系統在設備端的作用。
AliOS正在進入IoT市場。AliOS開始和恩智浦(NXP)和ST等公司合作。
MCU廠商在2015年之后與物聯網OS的互動較少,例如ST沒怎么宣傳要支持Mbed,但是最近比較積極地表示要支持AliOS。
只有市場互動起來,才可能帶動更多的用戶來用。華為LiteOS也做了黑客松大賽,但目前用戶和合作伙伴規模相對較小,依靠NB-IoT 發展的策略偏于單調。
本節的結論是:很少看到和聽到國內和國外企業宣傳在使用某種物聯網OS(注:這里指原生態的,諸如 Arm Mbed,而不是指本節開始所提到的第二類,諸如RT-Thread。因為第二類在物聯網出現之前已經有了,因此已積累了很多應用和用戶),傳統的RTOS和Linux還是主流。當然,被用戶接納是一個漫長的過程,但如果這個過程有了,那么后期客戶會愿意主動地用它,這種前仆后繼的浪潮就會產生,像海浪似的一浪推著一浪。
4 思考與建議
第一,無論是物聯網操作系統還是其他操作系統,一個操作系統的普及,需要很長時間的市場引導,用戶不太會在短時間決定選用哪一種,也不會輕易更換。即客戶換多家公司的芯片可能也比換一個操作系統容易,所以一旦用起來,操作系統的黏性/忠誠度是很高的。
第二,目前物聯網OS的內涵和外延還不是很清晰。有一種趨勢是廠商都想做大,那么對于規模相對較小的團隊,就要由小到大、由簡到繁地展開,而不要什么都做、一步到位。例如RT-Thread的創始人熊譜翔先生稱并沒有做安全,這是一個很好的選擇,因為安全又是另外一類技術,沒有相當的技術儲備和積累不一定能做,或許你可以從外部引入一些安全技術。 第三,重視物聯網OS的安全研究。因為安全是物聯網中必備的功能,所以如果有一套安全方案,還是會很吸引用戶的。例如FreeRTOS也沒有現成的安全方案,如果增加了安全功能,會更易吸引人們去使用這套物聯網操作系統。
第四,高校對物聯網操作系統的研究和關注還要加強。2017年我曾在幾次物聯網教育會議上介紹過物聯網操作系統,認為反響不太大。傳統的嵌入式操作系統的課程改進目前處于窗口期了,未來可能升級,現在有些學校也開始考慮開設基于RTOS的嵌入式課程。實際上物聯網OS是有機會進入到高校的,因為進到高校之后才可能影響產業界,高校計劃企業要積極主動。
最后,企業要想將物聯網操作系統普及開來,需要注意以下兩點。首先確定好物聯網OS的邊界,不要什么都做。其次還要堅持,例如有些企業做著做著就不開源了;有些企業剛開始時熱熱鬧鬧地做生態,之后不做了,因為做生態投資投入很大,很難短時間見到產出,因此一些企業做幾次開發者大會后就停下了,回頭還是去做大客戶。
5 結論
隨著物聯網應用落地和逐漸成熟,物聯網OS正在興起,目前處于百花齊放的繁榮期,產業屆需要耐心培育。
參考文獻:
[1]何小慶.嵌入式操作系統風云錄[M].北京:機械工業出版社,2016
[2]Kantar:2017年中國智能手機市場Android份額高達87%[R/OL].(2017-5-12).http://tech.sina.com.cn/roll/2017-05-13/doc-ifyfecvz1148686.shtml
[3]江文瑞,何小慶.嵌入式計算設備[J].單片機與嵌入式系統應用,2014(9)
[4]何小慶.物聯網操作系統淺析[J].單片機與嵌入式系統應用,2015(1)
[5]江文瑞,何小慶.物聯網與實時操作系統[J].單片機與嵌入式系統應用,2014(12)
[6]何小慶.談談FreeRTOS及其授權方式[J].單片機與嵌入式系統應用,2015(10)
本文來源于《電子產品世界》2018年第1期第27頁,歡迎您寫論文時引用,并注明出處。
評論