中國嵌入式系統產業聯盟/北京麥克泰軟件技術公司 何小慶
?
物聯網操作系統淺析
中國嵌入式系統產業聯盟/北京麥克泰軟件技術公司 何小慶
過去十年我國嵌入式系統產業發展迅速,嵌入式應用逐漸告別單片機時代,邁入集成電路、計算機、通信、電子技術等多學科交叉融合的嵌入式系統時代。如今嵌入式系統又將迎來物聯網應用的高潮。
物聯網系統中有大量的嵌入式設備,與傳統的嵌入式設備相比,物聯網感知層的設備更小、功耗更低,而且需要安全可靠和具備組網能力,物聯網通信層需要支持各種通信協議和協議之間的轉換,應用層則需要具備云計算能力。在軟件方面,支撐物聯網設備的軟件比傳統的嵌入式設備軟件更加復雜,這也對嵌入式操作系統提出了更高的要求。為了應對這種要求,一種面向物聯網設備和應用的軟件系統——物聯網操作系統(國外稱為面向IoT的OS)應運而生,以下簡稱為物聯網OS。
互聯網為物聯網系統搭建了無處不在的互聯通道,云計算和大數據的興起為物聯網數據處理和分析提供了技術支撐。在嵌入式設備端,32位MCU技術已經成熟,價格與8/16位MCU接近,不僅在網關設備上使用,也在傳感和執行單元上普遍使用。物聯網典型架構如圖1所示。在MCU市場,ARM Cortex-M系列(M0/M3/M4)的MCU占有最大的份額。在過去10年中,ARM已經建立了完善的生態環境,這大大幫助了包括物聯網OS在內的嵌入式軟件的發展。

圖1 典型的物聯網系統
特別值得關注的是網絡安全,無論是IT、工業控制、還是消費領域,信息安全的重要性得到了政府和企業的廣泛認知。物聯網是一種廣義的信息系統,因此物聯網安全也屬于信息安全的一個子集。從物聯網系統的角度來看,要保護系統中的信息不會被竊取、篡改、偽造,需要綜合運用信息安全的各種技術,而這些安全技術均運行在物聯網OS上,因此,物聯網OS的安全是物聯網系統安全的基礎。
最早具備物聯網OS特征的是無線傳感網(WSN)的OS,例如加州大學伯克利分校(UC Berkeley)的TinyOS和瑞士計算科學學院(Swedish Institute of Computer Science)網絡系統小組Adam Dunkels開發的Contiki,它們是無線傳感網OS的典型代表。2010年之后歐洲有了RIOT,相比前面兩個OS,RIOT更加接近一個完整的RTOS(實時多任務操作系統),具備實時性和模塊化結構,支持標準的C和C++編程接口。RIOT不僅可以運行在小型MCU上,還可以支持MPU。在資源允許的條件下,可以運行最新的互聯網和物聯網協議棧,并完成協議轉換工作[1]。
2014年1月,微軟嵌入式事業部總監Bob Breynaert透露,微軟計劃推出物聯網版本的Windows Embedded。2014年8月,微軟開始向所有Windows物聯網開發者配套英特爾Galileo主板的Windows物聯網OS預覽版。與Arduino兼容的Galileo主板采用了英特爾Quark系統芯片,具有單核400 MHz 32位CPU,尺寸比一張信用卡大不了多少,提供10/100M以太網卡、PCI Express、JTAG和USB端口,以及一個SD插槽和RS-232串行端口,英特爾將其定位在物聯網和可穿戴設備平臺。Windows物聯網OS是一個Windows8.1的非商業版本。顯然預覽版的推出是微軟進軍物聯網計劃中的一個步驟,讓制造商和開發人員產生新的想法,并提供反饋,以幫助微軟繼續發展Windows物聯網OS。
2014年2月在德國紐倫堡的嵌入式世界大會上,風河發布了其基于VxWorks 7的物聯網OS。最近風河在其官方網站上給出了這個產品的介紹和白皮書[2]。微軟和風河這兩家操作系統大公司的加入,使得物聯網OS已經呼之欲出。與此同時,傳統的RTOS的公司也紛紛有所動作,比如因開發了μC/OS-II和μC/OS-III而聞名的Micrium公司2014年9月推出了Micrium Spectrum,這是一個針對物聯網設備,集成了嵌入式軟件、協議棧和云服務的端到端的解決方案[3],如圖2所示。除此之外,Express Logic公司推出基于ARM物聯網設備的X-Wave平臺,該公司的RTOS內核是ThreadX。

圖2 Micrium Spectrum 物聯網軟件平臺
國內關于物聯網OS的研究和開發才剛剛開始,多數還停留在學習、移植和應用階段,自主研發的物聯網OS很少,高校物聯網專業教學上有的使用開源的TinyOS。中國科學院軟件研究所與無錫中科物聯網基礎軟件研發中心發布過一套物聯網軟件平臺。北京凱思昊鵬的SEN-Hopen OS,可以運行于無線傳感網微節點之上,是國內比較早的商用物聯網(無線傳感網)OS。中興公司自主研發的嵌入式操作系統在物聯網設備上也有應用。2014年7月,上海慶科聯合阿里智能云發布了物聯網OS——MICO,MICO目前是基于慶科自己的WiFi模塊,未來慶科希望開發與硬件無關的物聯網OS。
物聯網OS還處在研發階段,部分已有產品或者開源項目都還只是雛形。至今仍然沒有看到關于物聯網OS的明確定義,但從已有產品和宣傳信息來看,其基本的技術特征已初顯端倪。概括來講,物聯網OS應具有以下技術特征[4-5]。
3.1 管理物的能力
物聯網中“物(things)”的定義內容較為廣泛。從嵌入式系統視角看,“物”是網絡上發送和接收信息的一個個嵌入式計算小設備(或稱為“深嵌入式系統”),比如家庭或者工業現場的智能傳感器、佩戴在身上或者植入身體的可穿戴設備、醫療健康裝置、視頻監控裝置和各種便攜終端。目前,嵌入式系統設計的一個共識就是降低功耗,常見的方法是系統盡可能快地完成工作,然后立即進入睡眠模式。現在的處理器核心架構,在低功耗狀態下可以做到基本上不消耗任何電力,針對物聯網邊緣節點的設計很有吸引力。ARM的 Cortex-M0/M3/M4架構可以體現這種低功耗設計的優勢并保證軟件的兼容和較高的性能,這正是它能夠成為物聯網設備主流嵌入式處理器的重要因素,而運行于Cortex-M架構上的物聯網OS必須具備低功耗管理能力。
3.2 可裁減和可擴展的架構
32位MCU價格不斷下降,由于Linux無法支持沒有MMU的MCU,而基于RTOS的設計允許更靈活的和可擴展的軟件運行在這些系統中,RTOS理所應當地成為運行在MCU上的物聯網OS的首選,一個完整的RTOS系統應該具有內核、GUI、文件系統、USB協議棧、網絡,以及更多其他功能,能夠適合小于1 MB的內存空間。RTOS的使用,使得嵌入式系統的軟件體系結構更加靈活,故障排除和添加新功能的能力也大大增強。物聯網OS應具備很好架構和可裁減性,以適應不同配置的硬件平臺。比如風河公司的VxWorks 7的微內核配置是一種內存僅為20 KB的小型RTOS,擴充了VxWorks 7標準內核,為各類設備提供了獨特的可擴展性和一致性的RTOS選擇。物聯網OS還可以簡化實現固件升級的方法,比如動態加載設備驅動程序或其他核心模塊。內核和應用程序應該具備外部二進制模塊動態加載功能,這些應用程序存儲在外部介質或者網絡上,無需修改內核,只需要開發新的應用程序,就可滿足行業應用改變的需求。
3.3 泛在互聯功能
物聯網OS應支持物聯網常用的無線和有線通信功能。比如支持GPRS/3G/HSPA/4G等公共網絡的無線通信功能和ZigBee/NFC/RFID/WiFi/Bluetooth等近場通信功能,還要支持Ethernet/CAN/USB有線網絡功能。在這些不同的物理和鏈路層接口之上的協議之間要能夠相互轉換,即把從一種協議獲取到的數據報文轉換成為另外一種協議的報文發送出去,最后還要能夠遷移到互聯網協議中。此外應該注意,互聯網應用的協議棧很容易生成幾百到幾千字節的數據開銷,而物聯網協議針對受限制的設備和網絡進行了優化,僅有幾十字節的數據開銷。圖3是互聯網和物聯網協議的比較,采用低帶寬消耗的物聯網協議是發展趨勢。

圖3 互聯網和物聯網協議比較
3.4 系統安全性
隨著越來越多的設備連接到物聯網中,對互聯網的依賴性將不斷增大。如果設備不安全,這種依賴將導致互聯網存在重大的安全隱患,使設備很容易遭到攻擊和破壞。物聯網設備中很大一部分是使用MCU和資源有限的微處理器,與大型設備相比,這些小型設備更容易保護,不易受同類型威脅的攻擊,因此更安全。物聯網設備的安全分為兩個層面[6]:
(1) 通信的安全
安全協議確保設備間的通信安全,它有一個可以依賴的信任等級,可以建立安全通信路徑和通道。比如TLS(前身是SSL)是為基于TCP的流連接提供通信安全的最常用的方式。DTLS是一個新的協議,提供可靠的UDP傳輸和基于TLS的數據包傳輸。
(2) 設備的安全
文件傳輸、數據存儲和系統更新方式都必須是安全的,比如防范入侵者通過電子郵件、FTP或其他方式將病毒文件移入設備。
這些安全技術均運行在物聯網OS上,因此物聯網OS的安全是系統安全的基礎。
風河公司制訂了一個物聯網OS安全規范,該規范是一個專門針對Wind River Linux的高附加值軟件規范。其主要特點包括對Linux內核的安全增強、安全啟動、保護用戶安全空間。ARM mbed OS有一個稱為 CryptoBox 的安全子系統,支持各種安全服務,詳細內容見第4節。
3.5 云計算后臺
物聯網設備區別于傳統設備的標志是這些設備將產生海量數據,如何管理和處理這些數據是擺在物聯網企業面前的一個難題,而云計算無疑是解決這個難題最有效的技術手段。云計算后臺是物聯網OS一個不可缺少的組成部分,選擇支持物聯網系統的云計算平臺需要考慮以下技術因素(信息安全因素不在此范圍討論):
① 支持云計算和物聯網協議(Websocket、RESTful、MQTT和CoAP等);
② 靈活和標準的設備管理方式;
③ 支持安全的遠程固件升級;
④ Web/移動應用開發的能力;
⑤ 高效和可靠數據存儲能力。
比如Micrium Spectrum使用的是2Lemetry的物聯網平臺和heroku 云計算技術[7],產品架構如圖4所示。ARM mbed OS則是自己提供的mbed Device Server的云計算服務[8]。

圖4 Micrium Spectrum 云平臺
3.6 先進的編程語言
用于傳統嵌入式系統的編程語言多數是C和C++。以后互聯網編程技術將進入物聯網設備,優化后的互聯網編程語言可在低功耗MCU上運行,比如Java、JavaScript和Python。需要注意的是,Java總是運行在操作系統之上,所以不是C/C++或Java兩者選擇其一,而是C/C++和Java都會使用。對于物聯網設備,Java是極有吸引力的,因為全球有大量的Java開發者,占領移動終端市場80%以上的Android就是使用Java作為應用開發語言,這給行業帶來了巨大的增長潛力。Oracle和ARM估計,全球大約有45萬的嵌入式軟件工程師,而IT業約有900萬的Java開發人員。
Java引擎的資源占用是必須要考慮的因素,Oracle針對基于ARM架構的SoC系統小型設備推出的嵌入式Java ME產品,至少要占用130 KB RAM/350 KB ROM資源,而且還要考慮商業知識產權問題(Google與Oracle在Java虛擬機知識產權上一直有糾紛)。
更加開放的JavaScript和Python或許是另外一種途徑,開源硬件已經開始在這方面積極嘗試,比如樹莓派可以支持 Python的編程[8],而Spark Core和Espreuino內置了JavaScript解釋器,可以運行JavaScript應用程序。Spark Core和Espreuino都是基于ARM Cortex-M3/M4的SoC,十分適合物聯網設備。不久的將來,不必掌握C/C++語言,就能對物聯網設備編程或許不再是夢想。
2014年10月,ARM公布了專門為物聯網設計的軟件及系統平臺,以加速物聯網設備的開發及應用。該軟件專門為基于ARM Cortex-M架構的MCU而設計,包括了設備端的嵌入式mbed OS操作系統、軟件工具包mbed和云端的mbed Device Server三大部分,如圖5所示。ARM公司稱“能夠以安全的方式為連接和管理設備提供所需的服務器端技術”,ARM在借mbed基礎軟件為物聯網設備構建“磚石”,希望物聯網設備商能夠專注于為其產品增加更多新功能,使產品盡快上市并具有競爭力。

圖5 ARM 物聯網平臺mbed OS框圖
mbed OS的設計理念有別于傳統的RTOS和Linux,它不追求最大的靈活性,而強調物聯網應用專業性——低功耗和高效率。在mbed OS的設備端,連接和安全是兩大亮點。mbed OS支持多種互聯標準,包括3G/4G/LTE、Bluetooth Smart(藍牙4.0)、WiFi以及6LoWPAN(基于IEEE 802.15.4實現IPv6通信協議)。在安全方面,mbed OS提供了通信和設備安全兩種機制(在一個稱為CryptoBox的子系統里),提供安全的API,支持安全標示、固件升級、認證和安全存儲等功能,這個功能大大簡化了產品的安全設計。mbed OS強調代碼的可重用性,面向對象和模塊化,開發者可用C++語言編寫自己的應用。
mbed Device Server是mbed OS軟件平臺的另一大亮點,這是由ARM自己開發的云端軟件,支持IPSO Web目標管理和OMA設備管理標準,支持CoAP、6LoWPAN和HTTP協議,提供設備開發者可以免費使用的SDK開發包。在應用上,mbed OS目前側重在智能家居、智慧城市(智能照明)和可穿戴設備3個方向[10]。
據ARM介紹,mbed OS將對開發者和設備制造商免費提供,該操作系統源碼一部分基于ARM收購的Sensinode公司的技術構建,另一部分由內部開發。mbed OS基于Apache 2.0許可證,操作系統大部分為開源,但部分組件只對ARM合作商開放。ARM在2014年向合作商提供alpha版本的mbed OS,預計2015年10月發布第一個正式的版本。目前業界對mbed OS持觀望態度,畢竟一個操作系統需要一段很長的時間才能讓用戶和市場認可,ARM雖不能說是從零開始,但在這個領域還是一個新兵。因為ARM在嵌入式系統技術和產業鏈方面有20多年的成功經驗,所以我們有理由期待mbed OS的成功,另外開源技術也是ARM切入物聯網市場的一大利器。

[1] Emmanuel Baccelli.RIOT OS: Towards an OS for the Internet of Things[C]//International Conference on Computer Communications,Turin,2013.
[2] Wind River Company.The Internet of Things Defines the Future RTOS[EB/OL].[2014-12]. http://eecatalog.com/intel/2014/01/14/the-internet-of-things-defines-the-future-of-the-rtos/.
[3] Micrium Company.Micrium Launches First End-to-End Solution for Internet of Things Device Design[EB/OL].[2014-12].http://www.businesswire.com/news/home/20140924005087/en.
[4] 江文瑞.嵌入式計算設備[J].單片機與嵌入式系統應用,2014,14(9).
[5] 江文瑞.物聯網與實時操作系統[J].單片機與嵌入式系統應用,2014,14(12).
[6] 張愛華.基于嵌入式操作系統的物聯網安全[J].單片機與嵌入式系統應用,2015,15(1).
[7] 2lemetry.IoT Platform[EB/OL].[2014-12].http://2lemetry.com/iot-platform/.
[8] 何小慶.云計算在物聯網中的應用[J].單片機與嵌入式系統應用,2014,14(11).
[9] Simon Monk.Raspberry Pi Python編程入門[M].北京:科學出版社,2013.
[10] Pratul Sharma.Next Steps in mbedTM IoT device Platform: mbed OS,2014.
士然
2014-12-02)