物聯網大致可分為感知層、網絡層、設備管理層、應用層等四個層次。其中最能體現物聯網特征的,就是物聯網的感知層。感知層由各種各樣的傳感器、協議轉換網關、通信網關、智能終端等終端設備組成。這些終端大部分都是具備計算能力的微型計算機。運行在這些終端上最重要的系統軟件就是所謂的物聯網操作系統。對于物聯網發(fā)展而言,“碎片化”是主要的問題,其中芯片、傳感器、通信協議、應用場景千差萬別。比如無線通信標準,有Wi-Fi、BLE、ZigBee、NFC、Thread、NB-IoT、LoRa、Sigfox、Gprs、4G等。很明顯,技術方案不統一,體系結構不一致,阻礙了物聯網的發(fā)展,也局限了物聯網的互聯互通。但從已有產品和宣傳信息來看,其基本的技術特征已初顯端倪。概括來講,物聯網操作系統應具有以下技術特征: 1、跨硬件平臺 物聯網應用最重要的是必須跨硬件平臺運行,即編寫的物聯網應用程序,能夠在多種不同的目標硬件設備上運行,而不用重新修改甚至編譯應用程序。如果開發(fā)語言不是跨硬件平臺的,只針對一種硬件平臺開發(fā),當面對硬件配置各不相同和物聯網設備的千差萬別時,就需要針對不同的CPU類型,不同的硬件配置,分別進行開發(fā)和部署,這顯然是無法滿足物聯網硬件碎片化特征的需要。由于物聯網設備硬件配置千差萬別,硬件與軟件不匹配則導致的錯誤會大大增加。而采用跨硬件平臺開發(fā)語言的好處,就是可以限制錯誤范圍,不會因為應用程序層面的錯誤,而導致整個系統崩潰。安卓系統就是采用去跨硬件平臺的構架,才能夠在不同硬件配置的手機上運行相同的應用程序,大大降低了應用程序的開發(fā)工作量。 2、面向對象機制 所謂的面向對象,就是在編程的時候盡可能去模擬真實的現實世界,按照現實世界中的邏輯去處理問題,分析問題,更容易解決大型的復雜的業(yè)務邏輯。在物聯網領域,面向對象編程方法,可以讓程序員以更接近現實世界的方式來理解應用場景,建立程序開發(fā)模型,把每個物體都可以抽象為程序開發(fā)領域的一個對象,通過不同對象之間的消息交互,可以快速完成復雜的應用系統開發(fā),同時也可以簡化開發(fā)維護過程,降低開發(fā)成本,加快開發(fā)速度。相比傳統的模塊化編程,面向對象編程更適合物聯網應用開發(fā),也更具有價值。 3、高效的開發(fā)方式 C和C++都更接近底層設計,當你在需要對硬件進行非常精細的監(jiān)測和控制時,他們都是很好的選擇,但這也意味著所寫出的代碼移植性比較差。而Java是一種面向對象的開發(fā)語言,擁有非常好的移植性,編譯器中幾乎不存在任何硬件依賴性。為了實現對特定硬件部分的精準控制,Java需要借助硬件所支持的庫并從中調用通用代碼。從經濟角度上看,Java是一門非常強大的語言,對Java代碼的一次投入可以在多個不同的平臺收獲果實。Java同時也是當前人氣最高的主流編程語言之一,被應用于成千上萬計算機科學與電子工程技術項目當中。因此懂得Java的人才可以從市場上輕松找到。 4、開發(fā)組件豐富 物聯網操作系統因為是對物應用場景的感知和控制,感知的方式千差萬別,應用場景各不相同,同時哪怕最簡單的物聯網設備也要具無線和有線的聯網功能,網絡通信協議的多樣性,云端接入的復雜性,都要求物聯網操作系統具備豐富組件支持,把常用的傳感器和聯網協議和云接入方案,全部按照組件的形式開放出來,使用者不需要關心太多的物理層功能,專心進行業(yè)務邏輯處理,加快物聯網產品上市速度。 5、占用極低的硬件資源 物聯網是一個數以千億計設備總量的市場,他的特點就是品種多,數量多,對硬件成本要求苛刻,這就要求物聯網操作系統運行的硬件平臺不能太高,要平衡開發(fā)效率和硬件成本的關系。 ![]() 物聯網碎片化特點必將導致物聯網操作系統的多樣性。短時間內,很難形成像智能手機中Android和ios兩家獨占市場的局面,以下簡單介紹幾款物聯網操作系統。 1. AliOS Things 面向IoT領域的輕量級物聯網嵌入式操作系統,搭建云端一體化IoT基礎設備!』Linux平臺,提供MCU虛擬化環(huán)境,開發(fā)者直接在Linux平臺上開發(fā)硬件無關的IoT應用和軟件庫,使用GDB/Valgrind/SystemTap等PC平臺工具診斷開發(fā)問題。 2. Andorid Things 作為 Andorid 系統的一個分支版本,類似于可穿戴和智能手表用的Andorid Wear。使用一種名為 Weave的通信協議,實現設備與云端相連,并且與谷歌助手等服務交互,面向所有Java開發(fā)者。該操作系統能夠支持一系列物聯網設備的計算平臺,其中包括英特爾Edison 平臺,NXP公司的Pico平臺,以及“黑莓派3”。 3. RUFF 采用JavaScript語言,專為硬件開發(fā)而設計,兼容多個平臺的運行環(huán)境,不僅支持嵌入式Linux,還支持MCU單片機領域等。擁有大量的開發(fā)API接口,也能在Rapsberry Pi等常見開發(fā)板上運行。 4. mbed OS 由ARM開發(fā),專門為運行ARM處理器的物聯網設備而設計。包含了C++應用程序網絡,公司也提供其他開發(fā)工具和相關的設備服務器。默認情況下,mbed OS是事件驅動的單線程架構,而非多線程(實時操作系統)環(huán)境。 5. 鈦極OS 該系統基于Java語言進行嵌入式開發(fā),將Java虛擬機移植到低資源MCU芯片中,由內核掌管底層硬件資源,實現軟硬件分離,伸縮性非常強,可以在編譯時,裁剪掉不需要的模塊,來匹配低端硬件的需求。不僅可以更好的擴大物聯網應用程序的運行范圍,而且能夠降低開發(fā)效率和開發(fā)難度,快速推動物聯網生態(tài)圈發(fā)展。 ![]() 從技術層面看,物聯網操作系統仍處在研發(fā)階段,至今尚無一個比較完善的可商業(yè)應用的物聯網標準操作系統,物聯網時代最大的問題之一就在于溝通,不同設備之間不同標準的溝通、軟件與硬件的溝通。而采用Java來開發(fā)智能硬件的鈦極OS實現了這種溝通的可行性,并保證了溝通的實效性和高效化。全球又有大量的Java開發(fā)者,根據Oracle和ARM估計,全球大約有45萬的嵌入式軟件工程師,而IT業(yè)約有900萬的Java開發(fā)人員。這無疑是給物聯網行業(yè)帶來了巨大的增長潛力。 |