深入解析物聯網操作係統(架構/功能/實例分析)
發布時間:2016-10-20 來源:garryxin 責任編輯:wenwei
【導讀】物聯網操作係統是新一代信息技術的重要組成部分。其英文名稱是IOT(Internet Of Things)。由此,顧名思義,“物聯網就是物物相連的互聯網”。下一代的基礎通信網絡,包括未來的5G,通信網絡架構重構等,為物聯網提供泛連接網絡是核心目標。目前也已經有很多廠商推出解決方案,比如Google的thread/wave,華為的Hi-Link,以及NB-IoT等。
1. 物聯網的主要特點
i. 連接
suoweilianjie,zhideshigezhonggeyangdezhongduanshebei,dounenggoutongguomouzhongwangluojishu,lianjiedaoyigetongyidewangluoshang。renhezhongduanzhijiandoukeyixianghufangwen。xiayidaidejichutongxinwangluo,baokuoweilaide5G,通信網絡架構重構等,為物聯網提供泛連接網絡是核心目標。目前也已經有很多廠商推出解決方案,比如Google的thread/wave,華為的Hi-Link,以及NB-IoT等。
傳統的物聯網連接,都是指物聯網終端設備與物聯網雲平台之間的連接,如下圖:

在這種模式下,物聯網設備通過各種各樣的連接技術,比如WiFi,Ethernet,BLE,Zigbee等(deng)等(deng)技(ji)術(shu),連(lian)接(jie)到(dao)位(wei)於(yu)雲(yun)端(duan)的(de)物(wu)聯(lian)網(wang)平(ping)台(tai)上(shang)。需(xu)要(yao)注(zhu)意(yi)的(de)是(shi),這(zhe)僅(jin)僅(jin)是(shi)一(yi)個(ge)邏(luo)輯(ji)結(jie)構(gou),在(zai)物(wu)理(li)上(shang),物(wu)聯(lian)網(wang)設(she)備(bei)在(zai)接(jie)入(ru)雲(yun)平(ping)台(tai)之(zhi)前(qian),很(hen)可(ke)能(neng)需(xu)要(yao)一(yi)個(ge)物(wu)聯(lian)網(wang)網(wang)關(guan)。因(yin)為(wei)很(hen)多(duo)連(lian)接(jie)技(ji)術(shu)是(shi)無(wu)法(fa)直(zhi)接(jie)連(lian)接(jie)到(dao)位(wei)於(yu)Internet上的物聯網雲平台的,比如Zigbee,BLE,Z-Wave,NFC等等。這些技術的通信範圍是一個小的局域網,比如一個家庭,一間辦公室等。而連入Internet的技術,則往往是WiFi,Ethernet,2/3/4G等這類網絡技術,大部分物聯網設備並不能提供這種連接的支持能力。因此,需要有一個物聯網網關,來彌補這個GAP,完成不同技術之間的轉換。下圖示意了物聯網網關的功能和網絡位置:

物聯網網關往往具備相對強大的計算能力,具備豐富的網絡接口,同時具備消息或數據的彙聚和分解功能。
在這種連接模式下,物聯網雲平台是所有物聯網終端設備的“大腦”,雲平台統一指揮物聯網終端的行為,如果這種連接一旦斷開,那物聯網終端將無所適從,完全失去控製。
更理想的連接,應該是物聯網設備之間,也實現本地的直接連接,如下圖所示:

物wu聯lian網wang設she備bei之zhi間jian也ye建jian立li連lian接jie,同tong時shi保bao留liu與yu雲yun平ping台tai的de連lian接jie。這zhe樣yang的de好hao處chu就jiu是shi,一yi旦dan雲yun平ping台tai的de連lian接jie中zhong斷duan,物wu聯lian網wang終zhong端duan可ke以yi采cai用yong本ben地di之zhi間jian的de終zhong端duan連lian接jie,繼ji續xu提ti供gong服fu務wu。同tong時shi,物wu聯lian網wang設she備bei本ben地di之zhi間jian的de交jiao流liu和he通tong信xin,直zhi接jie通tong過guo本ben地di連lian接jie完wan成cheng,而er不bu用yong再zai上shang升sheng到dao雲yun端duan。
要實現這種“雲端連接”加“本地連接”demoxing,xuyaowulianwangshebeizhichixiaoxizhongjigongneng。jiwulianwangshebeikeyibalingwaidewulianwangshebeidexiaoxihuoshuju,zhuanfadaoyunpingtai,tongshibayunpingtaifaxialaideshuju,zhuanjiegeilingwaidewulianwangshebei。
ii. 協同
協(xie)同(tong),則(ze)是(shi)指(zhi)接(jie)入(ru)網(wang)絡(luo)的(de)任(ren)何(he)設(she)備(bei)之(zhi)間(jian),能(neng)夠(gou)通(tong)過(guo)學(xue)習(xi),實(shi)時(shi)的(de)了(le)解(jie)自(zi)己(ji)和(he)對(dui)方(fang)的(de)能(neng)力(li)和(he)狀(zhuang)態(tai),能(neng)夠(gou)根(gen)據(ju)特(te)定(ding)的(de)輸(shu)入(ru)條(tiao)件(jian),或(huo)者(zhe)特(te)定(ding)的(de)環(huan)境(jing)狀(zhuang)態(tai),多(duo)種(zhong)設(she)備(bei)實(shi)現(xian)有(you)效(xiao)互(hu)動(dong),協(xie)調(tiao)工(gong)作(zuo),完(wan)成(cheng)某(mou)種(zhong)單(dan)一(yi)設(she)備(bei)無(wu)法(fa)完(wan)成(cheng)的(de)工(gong)作(zuo)。協(xie)同(tong)是(shi)物(wu)聯(lian)網(wang)的(de)核(he)心(xin)和(he)本(ben)質(zhi)。協(xie)同(tong)表(biao)現(xian)在(zai)下(xia)麵(mian)幾(ji)個(ge)方(fang)麵(mian):
- wulianwangshebeizhijiandezidongfaxian,youqishibutonggongneng,butongleibiedeshebei,ruhexianghufaxian。biruzaizhihuijiaotonglingyu,qichekaojinludengshi,yinggaikeyikuaisufaxianludeng,bingjianlilianxi。zheyangludengjiukeyigenjuyuzijijianlilianxideqicheshuliang,lailinghuotiaoduxinhaodengdeshanshuoshijian;
- 物(wu)聯(lian)網(wang)設(she)備(bei)之(zhi)間(jian)的(de)能(neng)力(li)交(jiao)互(hu)。設(she)備(bei)之(zhi)間(jian),隻(zhi)有(you)相(xiang)互(hu)了(le)解(jie)對(dui)方(fang)的(de)能(neng)力(li),了(le)解(jie)對(dui)方(fang)能(neng)幹(gan)什(shen)麼(me),才(cai)能(neng)實(shi)現(xian)有(you)效(xiao)的(de)交(jiao)互(hu)和(he)協(xie)同(tong)。類(lei)似(si)中(zhong)國(guo)人(ren)之(zhi)間(jian)的(de)“找關係”,隻有知道對方是幹什麼的,有哪些能力,才會有目的的去“發起請求”,從而一起協作達到目標;
- 新增物聯網設備或功能的自動傳播。比如在一個局域網(智慧家庭)中,新加入了一個新的功能設備,這個新的設備需要盡快的“融入”原有的設備之中。這包括有一種機製,能夠廣播自己的能力,同時,原有的設備,應該也可以快速的“理解”新加入的設備的功能和角色,這樣後續就又達到一種統一的狀態。
iii. 智能
智能,則是指物聯網設備具備“類似於人”的智慧,比如根據特定條件和環境的自我調節能力,能夠通過持續的學習,不斷優化和改進,更“人性化”的為人類服務。
如果物聯網設備隻是連接在一起,能夠遠程控製,被動的聽從人們的指揮,那不能算是真正的物聯網,隻能算是“控製網”。lixiangdemubiaoshi,wulianwangshebeiyinggaijubeiziwoxuexinengli,nenggoutongguojileiguowangdejingyanhuoshuju,nenggouduiweilaijinxingyupan,weirenmentigonggengjiazhinengdefuwu。zhezhong“機器學習”的能力,我們認為應該屬於物聯網操作係統的一部分,應該能夠抽象成一些基本的服務或API,內置到內核中,供應用開發者或者設備開發者調用。
erqie,zhezhongjiqixuexidefuwu,bujinjinzhishiweiyuzhongduancaozuoxitongzhongdeyiduandaima,haiyinggaiyouyigepangdadehoutaijinxingzhicheng。daliangdejisuanheyucegongneng,zaihoutaishangzhixing。erzhongduanshangzhishizuoyixiejiandanjisuanhejieguodezhixing。zheyangzhongduanjiahoutairuanjian,jiuxingchengyigefenbushidejisuanwangge,youxiaofengong,xietongjisuan,youxuzhixing,xingchengyigezhichengwulianwangdeshuzishenjing。
2. 物聯網操作係統整體架構概述
wulianwangcaozuoxitongshizhichengwulianwangdaguimofazhandezuihexinruanjian。genjushangmianzongjiedewulianwangdezhuyaotezheng,jiehecaozuoxitongdezhuyaogongnenghefencengjiegou,womenzongjiechuruxiadewulianwangcaozuoxitongzhengtijiagou:

總(zong)體(ti)來(lai)說(shuo),物(wu)聯(lian)網(wang)操(cao)作(zuo)係(xi)統(tong)是(shi)由(you)操(cao)作(zuo)係(xi)統(tong)內(nei)核(he),外(wai)圍(wei)功(gong)能(neng)組(zu)件(jian),物(wu)聯(lian)網(wang)協(xie)同(tong)框(kuang)架(jia),通(tong)用(yong)智(zhi)能(neng)引(yin)擎(qing),集(ji)成(cheng)開(kai)發(fa)環(huan)境(jing)等(deng)幾(ji)個(ge)大(da)的(de)子(zi)係(xi)統(tong)組(zu)成(cheng)。這(zhe)些(xie)子(zi)係(xi)統(tong)之(zhi)間(jian)相(xiang)互(hu)配(pei)合(he),共(gong)同(tong)組(zu)成(cheng)一(yi)個(ge)完(wan)整(zheng)的(de)麵(mian)向(xiang)各(ge)種(zhong)各(ge)樣(yang)物(wu)聯(lian)網(wang)應(ying)用(yong)場(chang)景(jing)的(de)軟(ruan)件(jian)基(ji)礎(chu)平(ping)台(tai)。需(xu)要(yao)說(shuo)明(ming)的(de)是(shi),這(zhe)些(xie)子(zi)係(xi)統(tong)之(zhi)間(jian)有(you)一(yi)定(ding)的(de)層(ceng)次(ci)依(yi)賴(lai)關(guan)係(xi),比(bi)如(ru)外(wai)圍(wei)功(gong)能(neng)組(zu)件(jian)需(xu)要(yao)依(yi)賴(lai)於(yu)物(wu)聯(lian)網(wang)操(cao)作(zuo)係(xi)統(tong)內(nei)核(he),物(wu)聯(lian)網(wang)協(xie)同(tong)框(kuang)架(jia)需(xu)要(yao)依(yi)賴(lai)於(yu)外(wai)圍(wei)功(gong)能(neng)組(zu)件(jian),而(er)公(gong)共(gong)智(zhi)能(neng)引(yin)擎(qing),需(xu)要(yao)依(yi)賴(lai)於(yu)下(xia)層(ceng)的(de)內(nei)核(he),外(wai)圍(wei)功(gong)能(neng)組(zu)件(jian),甚(shen)至(zhi)是(shi)物(wu)聯(lian)網(wang)協(xie)同(tong)框(kuang)架(jia)等(deng)。在(zai)這(zhe)個(ge)架(jia)構(gou)圖(tu)中(zhong),也(ye)反(fan)映(ying)了(le)這(zhe)種(zhong)層(ceng)次(ci)化(hua)的(de)依(yi)賴(lai)關(guan)係(xi)。
目前主流的物聯網操作係統,比如Google的Brillo,Linux開放基金會的Ostro項目,以及HelloX項目,都遵循這樣一種框架。下麵對這幾個子係統做簡要介紹。
a) 物聯網操作係統內核概述
內核是任何操作係統都有的核心組件,操作係統的核心功能和核心機製,都是在內核中實現的。比如最核心的線程/任ren務wu管guan理li,內nei存cun管guan理li,內nei核he安an全quan和he同tong步bu等deng機ji製zhi。雖sui然ran從cong功gong能neng上shang說shuo,大da部bu分fen操cao作zuo係xi統tong的de內nei核he都dou相xiang差cha不bu大da,但dan是shi在zai這zhe些xie具ju體ti功gong能neng的de實shi現xian上shang,麵mian向xiang不bu同tong領ling域yu的de操cao作zuo係xi統tong,其qi實shi現xian目mu標biao和he實shi現xian技ji術shu都dou是shi不bu同tong的de。
比(bi)如(ru)對(dui)傳(chuan)統(tong)的(de)通(tong)用(yong)個(ge)人(ren)計(ji)算(suan)機(ji)操(cao)作(zuo)係(xi)統(tong)來(lai)說(shuo),內(nei)核(he)更(geng)加(jia)關(guan)注(zhu)用(yong)戶(hu)交(jiao)互(hu)的(de)響(xiang)應(ying)時(shi)間(jian),資(zi)源(yuan)的(de)充(chong)分(fen)利(li)用(yong),不(bu)同(tong)應(ying)用(yong)程(cheng)序(xu)之(zhi)間(jian)的(de)隔(ge)離(li)和(he)安(an)全(quan)等(deng)。這(zhe)是(shi)與(yu)其(qi)應(ying)用(yong)場(chang)景(jing)有(you)關(guan)的(de)。而(er)對(dui)於(yu)麵(mian)向(xiang)嵌(qian)入(ru)式(shi)領(ling)域(yu)的(de)嵌(qian)入(ru)式(shi)操(cao)作(zuo)係(xi)統(tong),則(ze)更(geng)加(jia)關(guan)注(zhu)對(dui)中(zhong)斷(duan)的(de)響(xiang)應(ying)時(shi)間(jian),更(geng)加(jia)關(guan)注(zhu)線(xian)程(cheng)或(huo)任(ren)務(wu)的(de)調(tiao)度(du)算(suan)法(fa),以(yi)使(shi)得(de)整(zheng)個(ge)係(xi)統(tong)能(neng)夠(gou)在(zai)可(ke)預(yu)知(zhi)的(de)時(shi)間(jian)內(nei),完(wan)成(cheng)對(dui)外(wai)部(bu)事(shi)件(jian)的(de)響(xiang)應(ying)。
而er物wu聯lian網wang操cao作zuo係xi統tong的de內nei核he,又you有you不bu同tong於yu其qi它ta操cao作zuo係xi統tong的de特te點dian。最zui主zhu要yao的de是shi其qi伸shen縮suo性xing。物wu聯lian網wang操cao作zuo係xi統tong的de內nei核he應ying該gai能neng夠gou適shi應ying各ge種zhong配pei置zhi的de硬ying件jian環huan境jing,從cong小xiao到dao幾ji十shiK內存的低端嵌入式應用,到高達幾十Mneicundefuzayingyonglingyu,wulianwangcaozuoxitongneihedouyinggaikeyishiying。tongshi,wulianwangcaozuoxitongdeneiheyinggaizugoujieneng,quebaozaiyixienengyuanshouxiandeyingyongxia,nenggouchixuzugouchangdeshijian。biru,neihekeyitigongyingjianxiumianjizhi,baokuoCPU本身的休眠,以便在物聯網設備沒有任務處理的時候,能夠持續處於休眠狀態。在需要處理外部事件時,又能夠快速的喚醒。
物wu聯lian網wang操cao作zuo係xi統tong的de內nei核he也ye應ying該gai具ju備bei嵌qian入ru式shi操cao作zuo係xi統tong的de一yi些xie特te征zheng,比bi如ru可ke預yu知zhi可ke計ji算suan的de外wai部bu事shi件jian響xiang應ying時shi間jian,可ke預yu知zhi的de中zhong斷duan響xiang應ying時shi間jian,對dui多duo種zhong多duo樣yang的de外wai部bu硬ying件jian的de控kong製zhi和he管guan理li機ji製zhi等deng。當dang然ran,物wu聯lian網wang操cao作zuo係xi統tong內nei核he必bi須xu足zu夠gou可ke靠kao和he安an全quan,以yi滿man足zu物wu聯lian網wang對dui安an全quan性xing的de需xu求qiu。
從(cong)功(gong)能(neng)上(shang)說(shuo),與(yu)其(qi)它(ta)操(cao)作(zuo)係(xi)統(tong)基(ji)本(ben)類(lei)似(si),主(zhu)要(yao)包(bao)括(kuo)任(ren)務(wu)管(guan)理(li),內(nei)存(cun)管(guan)理(li),中(zhong)斷(duan)管(guan)理(li),內(nei)核(he)同(tong)步(bu),安(an)全(quan)與(yu)權(quan)限(xian)管(guan)理(li),應(ying)用(yong)管(guan)理(li)等(deng)。為(wei)了(le)確(que)保(bao)內(nei)核(he)的(de)正(zheng)常(chang)運(yun)行(xing),內(nei)核(he)也(ye)應(ying)提(ti)供(gong)內(nei)核(he)統(tong)計(ji)與(yu)監(jian)控(kong)功(gong)能(neng),即(ji)監(jian)視(shi)內(nei)核(he)的(de)運(yun)行(xing)狀(zhuang)態(tai),監(jian)視(shi)內(nei)核(he)對(dui)象(xiang)的(de)數(shu)量(liang)/zhuangtaideng,weiweihuhuokaifarenyuantigongguzhangdingweidegongju。zaimeiyigeneihezimokuaizhong,douhuitongguogengjiajutidejizhihuozhesuanfa,laimanzuwulianwangyingyongdexuqiu。tongshiquebaoneihedezhengtianquanxinghekekaoxing。
內(nei)核(he)也(ye)是(shi)直(zhi)接(jie)與(yu)物(wu)理(li)設(she)備(bei)打(da)交(jiao)道(dao)的(de)軟(ruan)件(jian),所(suo)有(you)對(dui)物(wu)理(li)設(she)備(bei)的(de)管(guan)理(li),包(bao)括(kuo)物(wu)理(li)設(she)備(bei)檢(jian)測(ce),物(wu)理(li)設(she)備(bei)驅(qu)動(dong)程(cheng)序(xu)加(jia)載(zai)和(he)卸(xie)載(zai)等(deng)等(deng)功(gong)能(neng),也(ye)都(dou)是(shi)在(zai)內(nei)核(he)中(zhong)實(shi)現(xian)的(de)。為(wei)了(le)有(you)效(xiao)的(de)管(guan)理(li)物(wu)理(li)設(she)備(bei),內(nei)核(he)需(xu)要(yao)定(ding)義(yi)一(yi)套(tao)標(biao)準(zhun)的(de)設(she)備(bei)管(guan)理(li)框(kuang)架(jia),設(she)備(bei)驅(qu)動(dong)程(cheng)序(xu)需(xu)要(yao)遵(zun)循(xun)這(zhe)一(yi)套(tao)框(kuang)架(jia),才(cai)能(neng)納(na)入(ru)內(nei)核(he)的(de)管(guan)理(li)。為(wei)了(le)訪(fang)問(wen)多(duo)種(zhong)多(duo)樣(yang)的(de)物(wu)理(li)設(she)備(bei),內(nei)核(he)同(tong)時(shi)也(ye)會(hui)定(ding)義(yi)一(yi)套(tao)叫(jiao)做(zuo)硬(ying)件(jian)抽(chou)象(xiang)層(ceng)的(de)軟(ruan)件(jian),這(zhe)本(ben)質(zhi)上(shang)是(shi)對(dui)一(yi)些(xie)常(chang)用(yong)硬(ying)件(jian)操(cao)作(zuo)的(de)抽(chou)象(xiang),比(bi)如(ru)讀(du)寫(xie)設(she)備(bei)配(pei)置(zhi)空(kong)間(jian),有(you)的(de)CPU是通過I/Ojiekoulaifangwenshebeikongjiande,youdezeshibashebeipeizhikongjianzhijieyingshedaoneicunkongjian,tongguochangguineicunfangwenlaiduqushebeipeizhikongjian。weileshiyingzhezhongbutongdeqingkuang,neiheyibanhuidingyiyigejiaozuo__device_read和__device_writedehong,genjushebeileixingdebutong,zhexiehongdingyideshixiandaimahuibutong,danshiduicaozuoxitongneiheheshebeiqudongchengxulaishuo,zhixuyaotiaoyongzhelianggeyizhidehong,jikeduishebeipeizhikongjianjinxingfangwen。zhejiushiyigedianxingdeyingjianchouxiangcengdelizi。
除此之外,物聯網操作係統的內核還提供麵向物聯網應用的常用連接功能,比如對藍牙的支持,對Zigbee的支持,對WiFi的支持,等等。各類領域應用可以直接利用物聯網操作係統內核的這些連接功能,實現最基本的通信需求。
下圖示意了內核的更進一步的功能結構:

b) 外圍功能組件概述
物(wu)聯(lian)網(wang)操(cao)作(zuo)係(xi)統(tong)內(nei)核(he)隻(zhi)是(shi)提(ti)供(gong)最(zui)基(ji)本(ben)的(de)操(cao)作(zuo)係(xi)統(tong)功(gong)能(neng),供(gong)物(wu)聯(lian)網(wang)應(ying)用(yong)程(cheng)序(xu)調(tiao)用(yong)。但(dan)隻(zhi)有(you)物(wu)聯(lian)網(wang)操(cao)作(zuo)係(xi)統(tong)內(nei)核(he)是(shi)遠(yuan)遠(yuan)不(bu)夠(gou)的(de),在(zai)很(hen)多(duo)情(qing)況(kuang)下(xia),還(hai)需(xu)要(yao)很(hen)多(duo)其(qi)它(ta)功(gong)能(neng)模(mo)塊(kuai)的(de)支(zhi)持(chi),比(bi)如(ru)文(wen)件(jian)係(xi)統(tong),TCP/IP網絡協議棧,數據庫等。我們把這些功能組件從物聯網操作係統內核中獨立出來,組成一個獨立的功能係統,稱為“外圍功能組件”。
之所以把這些功能組件稱為“外圍”,shiyinweizaihenduoqingkuangxia,zhexiegongnengzujiandoubushibixude。erqiezaishijidewulianwangyingyongzhong,zhexiewaiweizujianyebuhuiquanbubeiyongdao,dabufenqingkuangxiayongdaoyidaolianggejiukeyimanzuxuqiule,qitadegongnengzujianbixucaijiandiao。yinweizaiwulianwangyingyongzhong,henduoqingkuangxiadexitongyingjianziyuanfeichangyouxian,ruguobaoliumeiyouyongdaodegongnengzujian,huilangfeidiaohenduoziyuan。tongshi,baoliuyixieyongbudaodezujian,huiduizhenggexitongdailaianquanyinhuan。biru,ruguowulianwangyingyongbuxuyaolianwang,quebaoliuleTCP/IP協議棧功能,則TCP/IP協議棧的BUGhuoloudong,kenenghuibeiliyong,congerduixitongzaochenganquanyingxiang。zhexiewaiweigongnengzujiandoushizhenduiwulianwangcaozuoxitongjinxingdingzhihekaifade,yuwulianwangcaozuoxitongneihezhijiandejiekoufeichangqingxi,jubeigaodudekecaijianxing。
dantongyongcaozuoxitongzhong,zhexiewaiweizujiandechulifangshiqueyuwulianwangcaozuoxitongbutong,zhexiezujianhuibeitongyiguileidaoneihezhong,suineiheyiqifenfa,zuoweiyigezhengtitigonggeiyonghu。jishiyingyongchengxubuyongzhexiezujian,yebunengbazhexiezujiancaijiandiao。zhisuoyizheyangzuo,shiyinweitongyongcaozuoxitongdeziyuanxiangduifengfu,duobaoliuyixiegongnengmokuaiduizhengtixitongdeyingxiangbingbuda。tongshi,tongyongcaozuoxitongdeanquanxingyaoqiuxiangduijiaodi。
物聯網操作係統內核和外圍功能組件結合起來,可以解決物聯網的“連接”需求。這包括內核提供的基本物聯網本地連接(藍牙,Zigbee,NFC,RFID等),以及外圍功能組件中的TCP/IP協議棧等提供的複雜網絡連接。
除TCP/IP網絡協議棧外,常見的外圍組件還包括文件係統,圖形用戶界麵(GUI),安全傳輸協議,腳本語言執行引擎(比如JavaScript語言的執行引擎等),基於TCP/IP協議的安全傳輸協議(SSL/SSH等),C運行庫,在線更新機製(軟件升級/在線更新補丁)等。需要說明的是,TCP/IP協議棧是麵向互聯網設計的通信協議棧,由於物聯網本身特征與互聯網有很大差異,TCP/IP協議棧在應用到物聯網的時候,麵臨許多問題和挑戰,需要對TCP/IP協議棧做一番優化改造。我們把改造之後的TCP/IP協議棧,稱為“麵向物聯網的TCP/IP協議”,簡寫為“TCP/IP@IoT”。下圖示意了常見的物聯網操作係統外圍功能組件:
c) 物聯網協同框架概述
物聯網協同框架是實現物聯網“協同”功能性需求的關鍵功能係統。物聯網操作係統的內核和外圍功能組件,僅僅實現了物聯網設備之間的“連接”功(gong)能(neng)。但(dan)是(shi)我(wo)們(men)知(zhi)道(dao),僅(jin)僅(jin)實(shi)現(xian)物(wu)聯(lian)網(wang)設(she)備(bei)的(de)連(lian)接(jie)上(shang)網(wang),是(shi)遠(yuan)遠(yuan)不(bu)夠(gou)的(de)。物(wu)聯(lian)網(wang)的(de)精(jing)髓(sui)在(zai)於(yu),物(wu)聯(lian)網(wang)設(she)備(bei)之(zhi)間(jian)能(neng)夠(gou)相(xiang)互(hu)交(jiao)互(hu)和(he)協(xie)同(tong),使(shi)得(de)物(wu)聯(lian)網(wang)設(she)備(bei)能(neng)夠(gou)“充分合作”,相互協調一致,以達到單一物聯網設備無法完成的功能。而物聯網協同框架,就是為物聯網設備之間的協同提供了技術基礎。
一般情況下,物聯網協同框架是一組軟件的集合,由許多個功能相互獨立,但是又相互依賴的軟件模塊組成。比如,Google的Weave物聯網協同框架,是由雲平台組件Weave Cloud,麵向設備端的LibWeave,以及麵向智能手機客戶端的Weave Client等組件組成。Weave Cloud是整個框架的“中心管理器”,所有基於Weave的物聯網設備,首先都連接到Weave Cloud上,接受Weave Cloud下發的指令,並向Weave Cloud上報相關數據。Weave Client則也需通過Weave Cloud來管理和控製基於Weave的物聯網設備,等等。
一般來說,物聯網協同框架至少包括如下功能:
- wulianwangshebeifaxianjizhi。wulianwangshebeiyibanbutigongzhijiedeyonghujiaohujiemian,xuyaotongguozhuruzhinengshouji,diannaodengfangshi,lianjiedaoshebeishang,duishebeijinxingguanlihepeizhi。zaiwulianwangshebeidiyicijiadianbinglianwangzhihou,zhinengshouji/電(dian)腦(nao)等(deng)如(ru)何(he)快(kuai)速(su)準(zhun)確(que)的(de)找(zhao)到(dao)這(zhe)個(ge)物(wu)聯(lian)網(wang)設(she)備(bei),就(jiu)是(shi)物(wu)聯(lian)網(wang)設(she)備(bei)發(fa)現(xian)機(ji)製(zhi)要(yao)解(jie)決(jue)的(de)問(wen)題(ti)。尤(you)其(qi)是(shi)在(zai)物(wu)聯(lian)網(wang)設(she)備(bei)數(shu)量(liang)眾(zhong)多(duo),功(gong)能(neng)多(duo)樣(yang)的(de)情(qing)況(kuang)下(xia),如(ru)何(he)準(zhun)確(que)快(kuai)速(su)的(de)發(fa)現(xian)和(he)連(lian)接(jie)到(dao)物(wu)聯(lian)網(wang)設(she)備(bei)上(shang),是(shi)一(yi)個(ge)很(hen)大(da)的(de)挑(tiao)戰(zhan)。設(she)備(bei)發(fa)現(xian)機(ji)製(zhi)的(de)另(ling)外(wai)一(yi)個(ge)應(ying)用(yong)場(chang)景(jing),是(shi)設(she)備(bei)與(yu)設(she)備(bei)之(zhi)間(jian)的(de)直(zhi)接(jie)交(jiao)互(hu)。比(bi)如(ru)在(zai)同(tong)一(yi)個(ge)局(ju)域(yu)網(wang)內(nei)的(de)物(wu)聯(lian)網(wang)設(she)備(bei),可(ke)以(yi)相(xiang)互(hu)發(fa)現(xian)並(bing)建(jian)立(li)關(guan)聯(lian),在(zai)必(bi)要(yao)的(de)時(shi)候(hou)能(neng)夠(gou)直(zhi)接(jie)通(tong)信(xin),相(xiang)互(hu)協(xie)作(zuo),實(shi)現(xian)物(wu)聯(lian)網(wang)設(she)備(bei)之(zhi)間(jian)的(de)“協同”;
- 物聯網設備的初始化與配置管理,包括設備在第一次使用時的初始化配置,設備的認證和鑒權,設備的狀態管理等等;
- 物wu聯lian網wang設she備bei之zhi間jian的de協xie同tong交jiao互hu。這zhe包bao括kuo物wu聯lian網wang設she備bei之zhi間jian的de直zhi接jie通tong信xin機ji製zhi。物wu聯lian網wang協xie同tong框kuang架jia要yao能neng夠gou提ti供gong一yi套tao標biao準zhun或huo規gui範fan,使shi得de建jian立li關guan聯lian關guan係xi的de物wu聯lian網wang設she備bei之zhi間jian,能neng夠gou直zhi接jie通tong信xin,不bu需xu要yao經jing過guo後hou台tai服fu務wu器qi;
- 雲端服務。大部分情況下,物聯網服務需要雲端(即物聯網後台)的(de)支(zhi)持(chi)。物(wu)聯(lian)網(wang)設(she)備(bei)要(yao)連(lian)接(jie)到(dao)雲(yun)端(duan)平(ping)台(tai)上(shang),進(jin)行(xing)認(ren)證(zheng)和(he)注(zhu)冊(ce)。物(wu)聯(lian)網(wang)設(she)備(bei)在(zai)運(yun)行(xing)期(qi)獲(huo)取(qu)的(de)數(shu)據(ju),也(ye)需(xu)要(yao)傳(chuan)送(song)到(dao)雲(yun)端(duan)平(ping)台(tai)上(shang)進(jin)行(xing)存(cun)儲(chu)。如(ru)果(guo)用(yong)戶(hu)與(yu)物(wu)聯(lian)網(wang)設(she)備(bei)距(ju)離(li)很(hen)遠(yuan),無(wu)法(fa)直(zhi)接(jie)連(lian)接(jie),則(ze)用(yong)戶(hu)也(ye)需(xu)要(yao)經(jing)過(guo)雲(yun)端(duan)平(ping)台(tai),來(lai)簡(jian)介(jie)控(kong)製(zhi)或(huo)操(cao)作(zuo)物(wu)聯(lian)網(wang)設(she)備(bei),等(deng)等(deng)。物(wu)聯(lian)網(wang)協(xie)同(tong)框(kuang)架(jia)至(zhi)少(shao)要(yao)定(ding)義(yi)並(bing)實(shi)現(xian)一(yi)套(tao)標(biao)準(zhun)的(de)協(xie)議(yi),來(lai)支(zhi)撐(cheng)這(zhe)些(xie)操(cao)作(zuo)。
除chu此ci之zhi外wai,物wu聯lian網wang協xie同tong框kuang架jia還hai必bi須xu實shi現xian一yi些xie基ji本ben的de服fu務wu,來lai支zhi撐cheng上shang述shu功gong能neng。比bi如ru,物wu聯lian網wang協xie同tong框kuang架jia需xu要yao定ding義yi一yi套tao標biao準zhun的de物wu聯lian網wang設she備bei命ming名ming體ti係xi,以yi能neng夠gou準zhun確que唯wei一yi的de標biao識shi每mei一yi台tai物wu聯lian網wang設she備bei。物wu聯lian網wang設she備bei之zhi間jian,以yi及ji用yong戶hu與yu物wu聯lian網wang設she備bei之zhi間jian,在zai相xiang互hu操cao作zuo之zhi前qian,還hai必bi須xu要yao完wan成cheng認ren證zheng和he鑒jian權quan,以yi確que保bao物wu聯lian網wang的de安an全quan,等deng等deng。另ling外wai一yi個ge基ji礎chu服fu務wu,就jiu是shi標biao準zhun的de物wu聯lian網wang操cao作zuo模mo式shi。比bi如ru在zai智zhi能neng家jia電dian應ying用yong中zhong,用yong戶hu可ke以yi通tong過guo一yi個ge標biao準zhun的deOpen命令,來遠程打開空調。通過一個Adjustmingling,laitiaojiekongtiaodewendu。zhexiebiaozhundeminglingbixuyouwulianwangxietongkuangjiajinxingdingyi,cainengshixianbutongchangshang,butongleixingshebeizhijiandehucaozuo。ruguomeiyouzhexiebiaozhundecaozuomoshi(操作命令),那麼要打開A廠商的空調,是Open命令,要打開B廠商的空調,則可能是Turn On命令,這樣就無法實現相互操作了。
shangshuxietonggongnenghejibenfuwu,doushijianlizaiwangluotongxinjichuzhishangde,xietongkuangjiahaibixushixianhuozhexuanzeyizhongheshidewangluotongxinxieyi。wulianwangdetezheng,yaoqiuzhezhongtongxinxieyijinkenengdedigonghaohegaoxiaolv。yixiechangyongdebiaozhunxieyi,biruCoAP或者MQTT,可以承擔這個功能。大部分物聯網協同框架,比如IoTivity,就是基於CoAP協議的。
下圖示意了物聯網協同框架的主要組成:

下xia麵mian通tong過guo一yi個ge智zhi慧hui商shang場chang的de例li子zi,進jin一yi步bu說shuo明ming物wu聯lian網wang協xie同tong框kuang架jia的de作zuo用yong。智zhi慧hui商shang場chang解jie決jue方fang案an中zhong,一yi般ban都dou會hui包bao括kuo火huo警jing探tan測ce器qi與yu智zhi慧hui門men禁jin係xi統tong。這zhe兩liang類lei物wu聯lian網wang設she備bei在zai被bei安an裝zhuang在zai商shang場chang之zhi前qian,必bi須xu經jing過guo安an全quan的de初chu始shi配pei置zhi,以yi確que保bao不bu會hui被bei惡e意yi控kong製zhi。初chu始shi配pei置zhi完wan成cheng之zhi後hou,這zhe兩liang類lei設she備bei會hui連lian接jie到dao統tong一yi的de協xie同tong框kuang架jia雲yun端duan係xi統tong,並bing實shi時shi更geng新xin其qi狀zhuang態tai。與yu此ci同tong時shi,火huo警jing探tan測ce器qi也ye會hui通tong過guo物wu聯lian網wang協xie同tong框kuang架jia的de設she備bei發fa現xian機ji製zhi,與yu門men禁jin係xi統tong建jian立li聯lian係xi,並bing相xiang互hu知zhi道dao自zi己ji的de存cun在zai。一yi旦dan火huo警jing探tan測ce器qi探tan測ce到dao火huo警jing發fa生sheng,則ze會hui直zhi接jie告gao訴su門men禁jin係xi統tong打da開kai門men禁jin,以yi便bian方fang便bian人ren們men盡jin快kuai逃tao生sheng。這zhe種zhong情qing況kuang下xia,如ru果guo沒mei有you物wu聯lian網wang設she備bei之zhi間jian的de直zhi接jie通tong信xin功gong能neng,所suo有you的de通tong信xin都dou需xu要yao經jing過guo後hou台tai係xi統tong轉zhuan接jie,那na麼me不bu但dan響xiang應ying時shi間jian會hui增zeng加jia,更geng致zhi命ming的de是shi,一yi旦dan與yu後hou台tai之zhi間jian的de物wu理li網wang絡luo中zhong斷duan,則ze終zhong端duan之zhi間jian將jiang無wu法fa實shi現xian自zi動dong聯lian動dong。這zhe種zhong網wang絡luo故gu障zhang,在zai諸zhu如ru火huo警jing等deng災zai難nan發fa生sheng時shi,是shi最zui常chang見jian的de。
weizhichengshangshujizhideyouxiaoyunxing,wulianwangxietongkuangjiahaibixutigongyizhidetongxinxieyihetongxinjishu,wulianwangshebeizhiyaozunxunzhetaoxieyi,jiunenggouxianghushibieduifangdexiaoxi。tongshi,wulianwangxietongkuangjiahaibixutigongyitaoweiyidemingmingguifan,quebaorenheyigewulianwangzhongduanshebei,dounenghuoqudaoweiyidemingzi,qitashebeinenggoutongguozhegeweiyidemingziyuzhijiaohu。tongshi,zhetaoweiyidemingmingguifan,zuihaonenggoubawulianwangzhongduanshebeidegongneng,yetixianchulai。zheyangwulianwangshebeizhijiantongguoshebeimingzi,jiukeyiquedingqitigongdegongneng,congerzuochuyouzhenduixingdedongzuo。birushangshulizi,huojingtanceqikeyimingmingwei“Fire alert detector”,而門禁係統可以命名為“Entrance access control”,zheyangzheliangzhekeyitongguomingzi,jiuzhidaoduifangdegongnengjiaose。dangran,zhezhishigelizi,zaishijidemingmingxitongzhong,haishiyinggaiyouyitaojisuanjinenggoushibiedebianmatixi。
目(mu)前(qian)物(wu)聯(lian)網(wang)行(xing)業(ye)內(nei)的(de)一(yi)些(xie)協(xie)同(tong)框(kuang)架(jia),基(ji)本(ben)都(dou)是(shi)與(yu)物(wu)聯(lian)網(wang)操(cao)作(zuo)係(xi)統(tong)內(nei)核(he)獨(du)立(li)的(de),即(ji)這(zhe)些(xie)協(xie)同(tong)框(kuang)架(jia)可(ke)以(yi)被(bei)應(ying)用(yong)在(zai)基(ji)於(yu)任(ren)何(he)操(cao)作(zuo)係(xi)統(tong)的(de)物(wu)聯(lian)網(wang)解(jie)決(jue)方(fang)案(an)中(zhong),隻(zhi)要(yao)這(zhe)些(xie)操(cao)作(zuo)係(xi)統(tong)能(neng)夠(gou)提(ti)供(gong)必(bi)要(yao)的(de)接(jie)口(kou)即(ji)可(ke)。但(dan)采(cai)取(qu)這(zhe)種(zhong)方(fang)式(shi),顯(xian)然(ran)有(you)其(qi)明(ming)顯(xian)的(de)弊(bi)端(duan)。那(na)就(jiu)是(shi)無(wu)法(fa)采(cai)用(yong)一(yi)套(tao)統(tong)一(yi)的(de)代(dai)碼(ma),來(lai)適(shi)應(ying)所(suo)有(you)的(de)操(cao)作(zuo)係(xi)統(tong)。比(bi)如(ru)Google的Waeve,針對Linux和Android等複雜的操作係統,采用C++語言開發了LibWeave組件。而針對資源受限的嵌入式應用場景,則又采用C語言開發了uWeave。這樣對物聯網設備的開發者來說,就不得不掌握兩套完全迥異的API,了解兩套機理完全不同的物聯網協同框架,顯然無法降低成本。
理想的實現方式是,物聯網協同框架能夠與物聯網操作係統內核緊密綁定,隻提供一套API給開發者。通過物聯網操作係統內核本身的伸縮機製,來適應不同的應用場景。比如在沒有WiFi支持的嵌入式場景,物聯網操作係統內核會裁剪掉TCP/IP等組件,而采用低功耗藍牙技術實現數據通信。而如果目標硬件配置了WiFi或者Ethernet等網絡接口設備,則會保留TCP/IP協議棧。不論是哪種形態,物聯網操作係統內核都會提供統一的一套API,給物聯網協同框架使用,即底層的通信機製,對物聯網協同框架是透明的。基於這樣的設計原則,類似Google Weave這樣的物聯網協同框架就無需針對不同的目標硬件設計多套解決方案了,而隻需要一套就可解決問題。
d) 公共智能引擎概述
tongguowulianwangxietongkuangjia,keyishidewulianwangshebeizhijianjianliguanlian,chongfenxiezuo,wanchengdanyiwulianwangshebeiwufawanchengdegongneng。danshizhezhongxietongdegongneng,haishijuxianyushixiandingyihaodeluojishang。birushangshuzhihuishangchangzhonghuojingtanceqihemenjinxitongdelizi,bixuzailingyuyingyongzhongbianxiedaima,gaosuhuojingtanceqi,yidanfashenghuojing,zegaosumenjinxitongdakaimenjin。ruguomeiyouzheyangdechengxuluoji,huojingtancexitongshibuhuitongzhimenjinxitongde。
如ru果guo希xi望wang物wu聯lian網wang係xi統tong超chao出chu預yu定ding義yi的de範fan圍wei,能neng夠gou達da到dao一yi種zhong自zi學xue習xi的de程cheng度du,比bi如ru最zui開kai始shi火huo警jing探tan測ce器qi並bing不bu知zhi道dao在zai發fa生sheng火huo警jing時shi通tong知zhi門men禁jin係xi統tong,而er是shi隨sui著zhe運yun行xing時shi間jian的de增zeng加jia,逐zhu漸jian的de“學習”到這種能力。這樣隻有物聯網協同框架就無法做到了,必須引入智能引擎的支持。
物聯網智能引擎,就是指包含了諸如語音與語義識別,機器學習等等功能模塊,以使得物聯網能夠超出“事先定義好”的活動規則,能夠具備像人一樣具備“智慧”的(de)能(neng)力(li)。在(zai)物(wu)聯(lian)網(wang)智(zhi)能(neng)引(yin)擎(qing)內(nei)的(de)功(gong)能(neng)模(mo)塊(kuai),都(dou)是(shi)基(ji)礎(chu)能(neng)力(li),可(ke)以(yi)供(gong)各(ge)種(zhong)物(wu)聯(lian)網(wang)應(ying)用(yong)所(suo)調(tiao)用(yong)。比(bi)較(jiao)典(dian)型(xing)的(de)例(li)子(zi)就(jiu)是(shi),在(zai)物(wu)聯(lian)網(wang)設(she)備(bei)中(zhong)加(jia)入(ru)語(yu)音(yin)識(shi)別(bie)功(gong)能(neng),人(ren)們(men)通(tong)過(guo)自(zi)然(ran)語(yu)言(yan),與(yu)物(wu)聯(lian)網(wang)設(she)備(bei)直(zhi)接(jie)對(dui)話(hua),來(lai)達(da)到(dao)下(xia)達(da)指(zhi)令(ling)的(de)目(mu)的(de)。
另外一個公共智能引擎中的重要模塊,是DSL語言與其對應的處理引擎。DSL(DomainSpecific Language,領域特定語言)是shi針zhen對dui某mou一yi種zhong特te定ding的de應ying用yong領ling域yu開kai發fa的de編bian程cheng或huo操cao作zuo語yu言yan,專zhuan門men應ying用yong於yu一yi個ge相xiang對dui獨du立li的de領ling域yu。這zhe與yu計ji算suan機ji編bian程cheng語yu言yan不bu一yi樣yang,計ji算suan機ji編bian程cheng語yu言yan大da部bu分fen都dou比bi較jiao通tong用yong,可ke以yi為wei多duo種zhong應ying用yong領ling域yu編bian寫xie程cheng序xu。正zheng是shi因yin為wei它ta的de通tong用yong性xing,無wu法fa照zhao顧gu到dao某mou一yi個ge具ju體ti的de領ling域yu,因yin此ci采cai用yong通tong用yong計ji算suan機ji語yu言yan來lai實shi現xian某mou一yi個ge具ju體ti領ling域yu的de應ying用yong時shi,就jiu非fei常chang麻ma煩fan,需xu要yao專zhuan業ye的de程cheng序xu員yuan,經jing過guo複fu雜za的de編bian程cheng工gong作zuo。而erDSL語(yu)言(yan),則(ze)是(shi)針(zhen)對(dui)某(mou)一(yi)個(ge)很(hen)細(xi)的(de)功(gong)能(neng)領(ling)域(yu)開(kai)發(fa),專(zhuan)門(men)應(ying)用(yong)於(yu)這(zhe)個(ge)特(te)定(ding)的(de)領(ling)域(yu)。這(zhe)樣(yang)就(jiu)可(ke)以(yi)針(zhen)對(dui)這(zhe)個(ge)特(te)定(ding)的(de)領(ling)域(yu)建(jian)立(li)一(yi)些(xie)內(nei)置(zhi)對(dui)象(xiang),定(ding)義(yi)領(ling)域(yu)特(te)定(ding)的(de)動(dong)作(zuo),並(bing)根(gen)據(ju)領(ling)域(yu)的(de)習(xi)慣(guan),定(ding)義(yi)領(ling)域(yu)特(te)有(you)語(yu)法(fa)。采(cai)用(yong)DSL語言來編寫領域應用,就非常簡單。
現在有很多軟件工具,可以用於定義DSL,並提供執行解釋引擎。物聯網操作係統的公共智能引擎模塊中,也應該提供DSL語言開發及解釋的功能,以方便物聯網特定場景的調用。
e) 集成開發環境概述
集ji成cheng開kai發fa環huan境jing是shi任ren何he一yi個ge完wan備bei的de操cao作zuo係xi統tong所suo必bi需xu提ti供gong的de功gong能neng組zu件jian,程cheng序xu員yuan通tong過guo集ji成cheng開kai發fa環huan境jing的de輔fu助zhu,完wan成cheng具ju體ti應ying用yong的de開kai發fa,這zhe些xie應ying用yong最zui終zhong運yun行xing在zai目mu標biao操cao作zuo係xi統tong上shang。比bi如ru針zhen對duiLinux操作係統的GCC開發工具套件,麵向Windows操作係統的Microsoft Visual Studio集成開發環境,以及跨平台的Eclipse集成開發環境,等等。
開發環境是豐富壯大操作係統生態圈的最核心組件,同時也是形成“二級開發模式”的(de)基(ji)礎(chu)。所(suo)謂(wei)二(er)級(ji)開(kai)發(fa)模(mo)式(shi),指(zhi)的(de)是(shi)包(bao)含(han)操(cao)作(zuo)係(xi)統(tong)平(ping)台(tai)本(ben)身(shen)功(gong)能(neng)開(kai)發(fa)的(de)第(di)一(yi)級(ji)開(kai)發(fa),以(yi)及(ji)基(ji)於(yu)操(cao)作(zuo)係(xi)統(tong)平(ping)台(tai),進(jin)行(xing)應(ying)用(yong)程(cheng)序(xu)開(kai)發(fa)或(huo)操(cao)作(zuo)係(xi)統(tong)內(nei)核(he)定(ding)製(zhi)的(de)二(er)次(ci)開(kai)發(fa)。其(qi)中(zhong)第(di)一(yi)級(ji)開(kai)發(fa),是(shi)由(you)操(cao)作(zuo)係(xi)統(tong)廠(chang)商(shang)或(huo)者(zhe)開(kai)源(yuan)社(she)區(qu)完(wan)成(cheng)。而(er)第(di)二(er)級(ji)的(de)二(er)次(ci)開(kai)發(fa),則(ze)是(shi)由(you)具(ju)體(ti)的(de)應(ying)用(yong)廠(chang)商(shang)開(kai)發(fa)完(wan)成(cheng)。這(zhe)兩(liang)個(ge)層(ceng)次(ci)的(de)開(kai)發(fa),所(suo)用(yong)的(de)工(gong)具(ju)是(shi)不(bu)同(tong)的(de)。在(zai)第(di)一(yi)級(ji)開(kai)發(fa)中(zhong),一(yi)般(ban)采(cai)用(yong)係(xi)統(tong)級(ji)的(de)開(kai)發(fa)工(gong)具(ju),大(da)部(bu)分(fen)都(dou)是(shi)命(ming)令(ling)行(xing)模(mo)式(shi),采(cai)用(yong)的(de)開(kai)發(fa)語(yu)言(yan),也(ye)是(shi)以(yi)C/C++,甚shen至zhi彙hui編bian語yu言yan為wei主zhu。而er第di二er級ji開kai發fa的de時shi候hou,操cao作zuo係xi統tong基ji礎chu架jia構gou已yi構gou築zhu起qi來lai,對dui應ying的de編bian程cheng開kai發fa環huan境jing也ye已yi經jing完wan善shan,因yin此ci大da部bu分fen是shi采cai用yong圖tu形xing化hua的de開kai發fa環huan境jing。相xiang對dui來lai說shuo,第di二er級ji開kai發fa所suo需xu要yao的de係xi統tong級ji的de開kai發fa技ji能neng也ye相xiang對dui較jiao低di。注zhu意yi,這zhe裏li說shuo的de是shi“係統級”的開發技能,主要是指對計算機CPUheyingjian,caozuoxitongneihedengdelijiehejineng,bingbushishuomianxiangyingyongdekaifajineng。shijishang,bulunshinagecengjidekaifa,zhiyaoshenrujinqu,zhenzhengjiejuewentile,doubuhuitaijiandan。
物(wu)聯(lian)網(wang)領(ling)域(yu)也(ye)是(shi)如(ru)此(ci)。在(zai)物(wu)聯(lian)網(wang)操(cao)作(zuo)係(xi)統(tong)本(ben)身(shen)的(de)開(kai)發(fa)中(zhong),會(hui)采(cai)用(yong)不(bu)同(tong)的(de)相(xiang)對(dui)專(zhuan)業(ye)的(de)開(kai)發(fa)工(gong)具(ju)。在(zai)操(cao)作(zuo)係(xi)統(tong)發(fa)布(bu)之(zhi)後(hou),也(ye)要(yao)提(ti)供(gong)一(yi)套(tao)完(wan)整(zheng)的(de)開(kai)發(fa)工(gong)具(ju),方(fang)便(bian)物(wu)聯(lian)網(wang)領(ling)域(yu)的(de)程(cheng)序(xu)員(yuan)開(kai)發(fa)物(wu)聯(lian)網(wang)應(ying)用(yong)。
一般的集成開發環境是由一係列工具組合而成的,即使是Microsoft的Visual Studio集成開發環境,雖然開起來是一個類似Office Wordyiyangdeduliyingyongchengxu,chengxuyuankeyizaiqizhongwanchengchengxudebianxie,bianyi,tiaoshi,yunxing,fabudengdengquanruanjianshengmingzhouqidesuoyouhuodong,danshitayeshiyouruogangeduligongjuzuhezaiyiqixingchengdejichengruanjiangongzuotai,birubianyigongju,lianjiegongju,tiaoshigongju,ruanjiandaimayizhixingjianzhagongjudengdeng。
麵(mian)向(xiang)物(wu)聯(lian)網(wang)操(cao)作(zuo)係(xi)統(tong)的(de)集(ji)成(cheng)開(kai)發(fa)環(huan)境(jing)也(ye)不(bu)例(li)外(wai),它(ta)是(shi)由(you)一(yi)係(xi)列(lie)相(xiang)互(hu)獨(du)立(li)但(dan)又(you)相(xiang)互(hu)依(yi)賴(lai)的(de)獨(du)立(li)工(gong)具(ju)組(zu)成(cheng)的(de)。最(zui)基(ji)本(ben)也(ye)是(shi)最(zui)核(he)心(xin)的(de)部(bu)分(fen),是(shi)開(kai)發(fa)語(yu)言(yan)。目(mu)前(qian)來(lai)說(shuo),是(shi)沒(mei)有(you)一(yi)套(tao)專(zhuan)門(men)麵(mian)向(xiang)物(wu)聯(lian)網(wang)應(ying)用(yong)開(kai)發(fa)的(de)語(yu)言(yan)的(de),這(zhe)不(bu)利(li)於(yu)推(tui)動(dong)物(wu)聯(lian)網(wang)的(de)大(da)發(fa)展(zhan),因(yin)此(ci),必(bi)須(xu)要(yao)選(xuan)擇(ze)一(yi)種(zhong)適(shi)合(he)物(wu)聯(lian)網(wang)特(te)點(dian)的(de)開(kai)發(fa)語(yu)言(yan)。根(gen)據(ju)物(wu)聯(lian)網(wang)本(ben)身(shen)的(de)特(te)征(zheng),適(shi)合(he)物(wu)聯(lian)網(wang)應(ying)用(yong)開(kai)發(fa)的(de)語(yu)言(yan),必(bi)須(xu)具(ju)備(bei)下(xia)列(lie)特(te)征(zheng):
- 開kai發fa語yu言yan必bi須xu是shi能neng夠gou跨kua硬ying件jian平ping台tai的de。跨kua硬ying件jian平ping台tai的de好hao處chu是shi,針zhen對dui某mou一yi類lei功gong能neng相xiang同tong或huo類lei似si的de物wu聯lian網wang設she備bei編bian寫xie的de應ying用yong程cheng序xu,可ke以yi在zai這zhe一yi類lei物wu聯lian網wang設she備bei上shang通tong用yong,而er不bu管guan這zhe類lei設she備bei是shi不bu是shi同tong一yi個ge廠chang家jia的de。比bi如ru針zhen對dui智zhi能neng攝she像xiang頭tou而er言yan,A廠商的攝像頭個的配置,可能是ARM的CPU,USB接口,分辨率是1024*768等,而B廠商的攝像頭可能是基於x86的CPU,SPI接口。基於攝像頭編寫一個人臉識別程序,如果采用跨平台的編程語言,則針對A廠商設備編寫的應用程序,可以直接在B廠家的設備上使用。但是如果編程語言不是跨硬件平台的,比如C/C++語言,則針對A廠家的攝像頭編寫的應用程序,必須經過重新編譯(甚至還需要大量的修改)之後,才能在B廠家的攝像頭上運行。物聯網設備的碎片化特征,決定了開發語言必須是跨硬件平台的;
- kaifayuyanzuihaoshimianxiangduixiangdekaifayuyan。mianxiangduixiangbianchengfangfa,keyirangchengxuyuanyigengjiejinshijishijiedefangshilailijieyingyongchangjing,jianlichengxukaifamoxing,tongshiyekeyidadajiakuaikaifasudu。duiyudaxingderuanjian,mianxiangduixiangsixiangkeyijianhuakaifaweihuguocheng,jiangdikaifachengben。zaiwulianwanglingyu,mianxiangduixiangbianchengsixianggengyoujiazhi。yinweiwomenmianduideshiyigeyigede“物”,每個物體都可以抽象為程序開發領域的一個對象,通過不同對象(物)之間的消息交互,可以快速完成複雜應用係統的開發。要支持麵向對象的編程思想,麵向對象的編程語言是必須的;
- 開發語言最好能支持完善的“事件驅動”機製。與以人為中心的傳統軟件開發模式不同,物聯網時代的軟件,都是受“事件”驅動的。麵向物聯網的程序,大多數情況下處理的是一個一個的外部事件,根據外部事件做出響應。比如一個火警探測設備,會針對“探測到起火”dengyibushijian,zuochuduiyingdedongzuo。wulianwangruanjiankaifa,henduoqingkuangxiajiushibianxieyigeyigedeshijianchulichengxu,bingyushixiandingyihaodeshijianguanlianzaiyiqi。zheyangyidanwaibushijianfasheng,zechulichengxujiuhuibeitiaoyong。zhezhongyi“事件”為中心的物聯網編程方法,必須配以能夠支持完善事件驅動機製的開發語言。
分析目前常見的開發語言,我們認為JavaScript語言是最合適的。更詳細的分析過程,在後麵部分中會詳細描述。
除了編程語言之外,另外一個集成開發環境的核心部件,是“物聯網運行庫”(物聯網Runtime)。任何一種開發語言,都有一個與之對應的運行庫,比如針對C語言的libc,針對Java語言的J2SE/J2EE/J2ME等等配套庫。這些運行庫提供了開發過程中最常用的功能或函數,比如字符串操作,數字操作,I/O,shujukufangwen,dengdeng。wulianwangkaifalingyuyeyiyang,bixuyouyitaowulianwangyunxingku,laitigongzuichangjiandewulianwangkaifagongnengzhichi。xialieyuwulianwangyingyongkaifaxiangguandegongneng,yinggaizaiwulianwangyunxingkuzhongshixian:
- 支持物聯網應用開發的最基本操作,比如字符串操作,文件I/O,網絡功能,任務管理,內存管理,數據庫訪問等;
- 常chang見jian傳chuan感gan器qi的de訪fang問wen接jie口kou,比bi如ru針zhen對dui溫wen度du,濕shi度du,重zhong力li,加jia速su度du,光guang照zhao等deng等deng常chang見jian傳chuan感gan器qi設she計ji一yi套tao標biao準zhun的de訪fang問wen接jie口kou,然ran後hou把ba這zhe一yi套tao訪fang問wen接jie口kou,作zuo為wei物wu聯lian網wang運yun行xing庫ku的de一yi部bu分fen進jin行xing實shi現xian。對dui應ying用yong程cheng序xu來lai說shuo,隻zhi需xu要yao調tiao用yong這zhe些xie接jie口kou即ji可ke訪fang問wen對dui應ying的de傳chuan感gan器qi,而er不bu用yong關guan心xin傳chuan感gan器qi的de物wu理li參can數shu(廠商,接口類型,等等);
- 支zhi撐cheng物wu聯lian網wang軟ruan件jian開kai發fa的de基ji本ben編bian程cheng機ji製zhi,比bi如ru事shi件jian驅qu動dong機ji製zhi的de框kuang架jia,麵mian向xiang對dui象xiang機ji製zhi的de對dui象xiang管guan理li,等deng等deng。這zhe些xie基ji本ben的de機ji製zhi,也ye需xu要yao在zai物wu聯lian網wang運yun行xing庫ku中zhong實shi現xian,應ying用yong程cheng序xu直zhi接jie調tiao用yong即ji可ke;
- 公共安全服務。比如用戶或設備認證,訪問鑒權,數據通信加密/解密等。這些基本的安全服務,在幾乎每個物聯網應用場景中都會涉及到,因此作為公共服務,納入物聯網運行庫中進行實現;
- 物聯網協同框架提供的基本服務,也可以納入到物聯網運行庫中,暴露給應用程序。比如IoTivity協同框架的API,CoAP協議的API,都可以作為物聯網運行庫的一部分功能來實現;
- 其它與具體領域相關的公共服務,比如物聯網後台連接服務等,都可以作為領域特定物聯網運行庫的一部分來實現。
物聯網運行庫必須與物聯網開發語言強相關,且物聯網運行庫的大部分代碼,都是由物聯網開發語言實現的。如果以JavaScript作為物聯網開發語言,那麼與之對應的物聯網運行庫,大部分會以JavaScript語(yu)言(yan)實(shi)現(xian)。物(wu)聯(lian)網(wang)運(yun)行(xing)庫(ku)有(you)兩(liang)種(zhong)存(cun)在(zai)方(fang)式(shi),一(yi)種(zhong)是(shi)作(zuo)為(wei)集(ji)成(cheng)開(kai)發(fa)環(huan)境(jing)的(de)一(yi)部(bu)分(fen),在(zai)代(dai)碼(ma)編(bian)譯(yi)鏈(lian)接(jie)階(jie)段(duan),編(bian)譯(yi)連(lian)接(jie)器(qi)從(cong)物(wu)聯(lian)網(wang)運(yun)行(xing)庫(ku)中(zhong)選(xuan)擇(ze)與(yu)應(ying)用(yong)程(cheng)序(xu)有(you)關(guan)的(de)代(dai)碼(ma)片(pian)段(duan),與(yu)應(ying)用(yong)程(cheng)序(xu)編(bian)譯(yi)在(zai)一(yi)起(qi),形(xing)成(cheng)一(yi)個(ge)可(ke)運(yun)行(xing)的(de)程(cheng)序(xu)包(bao)。這(zhe)種(zhong)模(mo)式(shi)下(xia),不(bu)需(xu)要(yao)加(jia)載(zai)全(quan)部(bu)物(wu)聯(lian)網(wang)運(yun)行(xing)庫(ku),而(er)隻(zhi)需(xu)要(yao)加(jia)載(zai)應(ying)用(yong)程(cheng)序(xu)需(xu)要(yao)的(de)一(yi)部(bu)分(fen)即(ji)可(ke)。另(ling)外(wai)一(yi)種(zhong)存(cun)在(zai)方(fang)式(shi),是(shi)在(zai)物(wu)聯(lian)網(wang)操(cao)作(zuo)係(xi)統(tong)的(de)內(nei)核(he)中(zhong)。這(zhe)種(zhong)情(qing)況(kuang)下(xia),物(wu)聯(lian)網(wang)應(ying)用(yong)程(cheng)序(xu)與(yu)物(wu)聯(lian)網(wang)運(yun)行(xing)庫(ku)是(shi)獨(du)立(li)存(cun)在(zai)的(de),物(wu)聯(lian)網(wang)應(ying)用(yong)程(cheng)序(xu)在(zai)運(yun)行(xing)時(shi),操(cao)作(zuo)係(xi)統(tong)會(hui)根(gen)據(ju)需(xu)要(yao),臨(lin)時(shi)加(jia)載(zai)物(wu)聯(lian)網(wang)運(yun)行(xing)庫(ku)(或其中的一部分相關內容),支持物聯網應用程序的運行。
除(chu)此(ci)物(wu)聯(lian)網(wang)編(bian)程(cheng)語(yu)言(yan)和(he)物(wu)聯(lian)網(wang)運(yun)行(xing)庫(ku)之(zhi)外(wai),物(wu)聯(lian)網(wang)集(ji)成(cheng)開(kai)發(fa)環(huan)境(jing)還(hai)包(bao)括(kuo)代(dai)碼(ma)編(bian)輯(ji)工(gong)具(ju),編(bian)譯(yi)工(gong)具(ju),連(lian)接(jie)工(gong)具(ju),調(tiao)試(shi)工(gong)具(ju)等(deng)等(deng),這(zhe)是(shi)任(ren)何(he)一(yi)個(ge)軟(ruan)件(jian)開(kai)發(fa)環(huan)境(jing)都(dou)需(xu)要(yao)具(ju)備(bei)的(de)。需(xu)要(yao)注(zhu)意(yi)的(de)是(shi),JavaScript語(yu)言(yan)是(shi)解(jie)釋(shi)型(xing)語(yu)言(yan),即(ji)代(dai)碼(ma)可(ke)以(yi)被(bei)語(yu)言(yan)解(jie)釋(shi)器(qi)直(zhi)接(jie)加(jia)載(zai)並(bing)分(fen)析(xi)運(yun)行(xing),不(bu)需(xu)要(yao)事(shi)先(xian)編(bian)譯(yi)和(he)鏈(lian)接(jie)。在(zai)這(zhe)種(zhong)情(qing)況(kuang)下(xia),就(jiu)不(bu)需(xu)要(yao)編(bian)譯(yi)鏈(lian)接(jie)等(deng)工(gong)具(ju)。但(dan)是(shi)調(tiao)試(shi)工(gong)具(ju)是(shi)必(bi)須(xu)的(de)。
wulianwangyingyongkaifayuyan,wulianwangyunxingku,yijiduiyingdebianji,bianyi,lianjie,tiaoshidenggongju,zuchenglewulianwangkaifahuanjingdehexinbufen。chucizhiwai,weilefangbiankaifa,fenxiang,jiaoliudemude,yigewanshandekaifashequ,yeshibixude。kaifazhekeyizaizhegeshequshanggongxiangdaima,taolunjishuwentideng。gengzhongyaodeshi,wulianwangjichengkaifahuanjingkeyiyukaifashequjinmijiehe,keyibachenggongdedaimahuoyoujiazhidemokuai,fabudaoshequzhong。wulianwangkaifahuanjingkeyizhijiegenjuchengxuyuandexuyao,congshequzhongxiazaidaima,bingnarudaoxiangmuzhong。
f) 物聯網領域應用概述
領ling域yu應ying用yong是shi麵mian向xiang不bu同tong物wu聯lian網wang領ling域yu,通tong過guo綜zong合he利li用yong物wu聯lian網wang操cao作zuo係xi統tong的de各ge層ceng功gong能neng模mo塊kuai,借jie助zhu物wu聯lian網wang操cao作zuo係xi統tong集ji成cheng開kai發fa環huan境jing,開kai發fa出chu來lai的de可ke以yi完wan成cheng一yi項xiang或huo多duo項xiang具ju體ti功gong能neng的de應ying用yong程cheng序xu。應ying用yong領ling域yu可ke以yi根gen據ju需xu要yao,調tiao用yong一yi個ge或huo全quan部bu物wu聯lian網wang操cao作zuo係xi統tong的de功gong能neng。比bi如ru,如ru果guo是shi實shi現xian一yi個ge提ti供gong簡jian單dan網wang絡luo連lian接jie的de實shi時shi溫wen度du計ji應ying用yong,則ze隻zhi需xu要yao利li用yong物wu聯lian網wang操cao作zuo係xi統tong的de內nei核he和heTCP/IPxieyizhandengwaiweizujianjike。danruguozhegewendujiyingyongzaizhihuinongyejiejuefanganzhong,genjubutongdewendu,laishishitiaojietongfengxitong,zebixuyaojichengwulianwangxitongkuangjia,yishidewendujiyutongfengxitongnenggoujianlilianxibingyouxiaoxietong。gengjinyibu,ruguoxiwangwendujijubeimouxie“智慧”degongneng,birunenggoushibierenmendeyuyinzhiling,nenggougenjuzhouweihuanjingdewenduheshidudengxinxi,panduanchushifouxiayu,bingcaiqushidangdongzuodeng,zebixuyaoyougonggongzhinengyinqingdezhichi。
總(zong)之(zhi),領(ling)域(yu)應(ying)用(yong)是(shi)物(wu)聯(lian)網(wang)操(cao)作(zuo)係(xi)統(tong)的(de)直(zhi)接(jie)服(fu)務(wu)目(mu)標(biao),它(ta)利(li)用(yong)物(wu)聯(lian)網(wang)操(cao)作(zuo)係(xi)統(tong)這(zhe)個(ge)基(ji)礎(chu)軟(ruan)件(jian)平(ping)台(tai),並(bing)根(gen)據(ju)具(ju)體(ti)領(ling)域(yu)的(de)特(te)征(zheng),來(lai)完(wan)成(cheng)某(mou)項(xiang)具(ju)體(ti)的(de)功(gong)能(neng)。由(you)於(yu)領(ling)域(yu)應(ying)用(yong)是(shi)與(yu)特(te)定(ding)領(ling)域(yu)強(qiang)相(xiang)關(guan)的(de),不(bu)屬(shu)於(yu)公(gong)共(gong)的(de)平(ping)台(tai)軟(ruan)件(jian),因(yin)此(ci)我(wo)們(men)不(bu)把(ba)它(ta)作(zuo)為(wei)物(wu)聯(lian)網(wang)操(cao)作(zuo)係(xi)統(tong)的(de)組(zu)成(cheng)部(bu)分(fen)。但(dan)是(shi)為(wei)了(le)說(shuo)明(ming)領(ling)域(yu)應(ying)用(yong)與(yu)物(wu)聯(lian)網(wang)操(cao)作(zuo)係(xi)統(tong)的(de)關(guan)係(xi),也(ye)一(yi)起(qi)把(ba)它(ta)體(ti)現(xian)在(zai)了(le)物(wu)聯(lian)網(wang)操(cao)作(zuo)係(xi)統(tong)的(de)架(jia)構(gou)圖(tu)中(zhong)。
g) 物聯網操作係統整體架構總結
綜合上麵的說明,可以把物聯網操作係統的框架做進一步細化,如下圖所示:

前麵講到,物聯網的三個主要特征分別是連接,協同和智能。物聯網的這個整體框架,是與這三個特征分別對應的,如下圖所示:

如果物聯網應用隻希望實現基本的連接功能,那麼隻要保留物聯網操作係統的內核,以及一兩個基本的外圍組件,比如TCP/IP協議棧,就足夠了。
- 如(ru)果(guo)物(wu)聯(lian)網(wang)應(ying)用(yong)需(xu)要(yao)實(shi)現(xian)協(xie)同(tong)功(gong)能(neng),則(ze)必(bi)須(xu)包(bao)含(han)物(wu)聯(lian)網(wang)協(xie)同(tong)框(kuang)架(jia)這(zhe)個(ge)功(gong)能(neng)模(mo)塊(kuai)。通(tong)過(guo)引(yin)入(ru)物(wu)聯(lian)網(wang)協(xie)同(tong)框(kuang)架(jia),可(ke)以(yi)實(shi)現(xian)包(bao)括(kuo)物(wu)聯(lian)網(wang)應(ying)用(yong)終(zhong)端(duan)設(she)備(bei)之(zhi)間(jian)的(de)交(jiao)互(hu)和(he)協(xie)同(tong),物(wu)聯(lian)網(wang)設(she)備(bei)與(yu)物(wu)聯(lian)網(wang)運(yun)平(ping)台(tai)之(zhi)間(jian)的(de)交(jiao)互(hu)和(he)協(xie)同(tong),甚(shen)至(zhi)包(bao)括(kuo)物(wu)聯(lian)網(wang)終(zhong)端(duan)設(she)備(bei)與(yu)智(zhi)能(neng)手(shou)機(ji)之(zhi)間(jian)的(de)協(xie)同(tong)等(deng)功(gong)能(neng)。
- 如(ru)果(guo)僅(jin)僅(jin)提(ti)供(gong)連(lian)接(jie)和(he)協(xie)同(tong),並(bing)不(bu)能(neng)滿(man)足(zu)物(wu)聯(lian)網(wang)的(de)應(ying)用(yong)需(xu)求(qiu),那(na)麼(me)物(wu)聯(lian)網(wang)的(de)領(ling)域(yu)應(ying)用(yong)可(ke)以(yi)把(ba)物(wu)聯(lian)網(wang)操(cao)作(zuo)係(xi)統(tong)的(de)智(zhi)能(neng)引(yin)擎(qing)利(li)用(yong)起(qi)來(lai)。一(yi)個(ge)典(dian)型(xing)的(de)場(chang)景(jing)就(jiu)是(shi),用(yong)戶(hu)可(ke)以(yi)通(tong)過(guo)語(yu)音(yin)控(kong)製(zhi)物(wu)聯(lian)網(wang)設(she)備(bei),可(ke)以(yi)與(yu)物(wu)聯(lian)網(wang)設(she)備(bei)進(jin)行(xing)對(dui)話(hua)。物(wu)聯(lian)網(wang)係(xi)統(tong)可(ke)以(yi)通(tong)過(guo)學(xue)習(xi),來(lai)理(li)解(jie)用(yong)戶(hu)的(de)行(xing)為(wei),並(bing)對(dui)用(yong)戶(hu)的(de)行(xing)為(wei)進(jin)行(xing)預(yu)測(ce)和(he)反(fan)饋(kui)。
可以看出,物聯網操作係統完整的解決了物聯網的三個功能性需求。
最zui後hou需xu要yao說shuo明ming的de是shi,雖sui然ran我wo們men把ba物wu聯lian網wang操cao作zuo係xi統tong分fen為wei了le內nei核he,外wai圍wei組zu件jian等deng四si個ge層ceng次ci,但dan是shi這zhe些xie層ceng次ci之zhi間jian,並bing不bu是shi嚴yan格ge的de涇jing渭wei分fen明ming,而er是shi具ju備bei一yi些xie依yi賴lai關guan係xi的de。比bi如ru外wai圍wei功gong能neng組zu件jian要yao依yi賴lai物wu聯lian網wang操cao作zuo係xi統tong內nei核he機ji製zhi,而er協xie同tong框kuang架jia又you依yi賴lai於yu某mou些xie外wai圍wei功gong能neng組zu件jian。同tong時shi,公gong共gong智zhi能neng引yin擎qing也ye需xu要yao依yi賴lai於yu內nei核he,外wai圍wei組zu件jian等deng來lai作zuo為wei基ji礎chu支zhi撐cheng。這zhe些xie不bu同tong的de功gong能neng層ceng次ci之zhi間jian,通tong過guo預yu先xian定ding義yi好hao的de接jie口kou,既ji能neng夠gou水shui乳ru交jiao融rong的de集ji成cheng在zai一yi起qi,形xing成cheng完wan成cheng的de解jie決jue方fang案an,又you可ke以yi根gen據ju應ying用yong場chang景jing的de需xu求qiu,隻zhi保bao留liu其qi中zhong的de一yi個ge或huo幾ji個ge部bu分fen,而er仍reng然ran可ke以yi整zheng齊qi劃hua一yi。同tong時shi,集ji成cheng開kai發fa環huan境jing提ti供gong統tong一yi的deAPI,使整個係統表現出一致的風格。
i) 常見物聯網操作係統架構分析
i. Google Brillo物聯網操作係統分析
下麵列舉幾個比較典型的物聯網操作係統,來進一步說明物聯網操作係統的功能和架構。首先看一下業界比較有影響力的Brillo操作係統,這是Google發布的專門麵向物聯網應用的操作係統。Brillo的架構如下:

可見,Brillo與Android一樣,仍然使用Linux內核作為其操作係統內核。這樣Linux在物聯網領域應用的一些弊端,就被完整的繼承到了Brillo中。比如,Linux內核對運行內存的要求較高,同時Linux還需要CPU硬件支持MMU(內存管理單元)功能,等等。這樣就間接導致Brillo的運行內存要求較高,按照官方說法,要至少32M內存。同時要求CPU支持MMU功能。這樣大量的低端CPU或MCU,比如STM32係列,就無法運行Brillo,因為這些CPU的片上內存一般不超過1M,同時一般不提供MMU功能。由於這些原因,大大限製了Brillo的應用範圍。
在Linux內核之上,Brillo保留了Android操作係統裏麵的一個硬件訪問層(HAL,Hardware Access Layer)。這zhe個ge層ceng次ci的de主zhu要yao功gong能neng,就jiu是shi對dui底di層ceng的de硬ying件jian進jin行xing統tong一yi的de抽chou象xiang,以yi更geng加jia友you好hao一yi致zhi的de方fang式shi,提ti供gong給gei應ying用yong程cheng序xu訪fang問wen。從cong功gong能neng上shang說shuo,這zhe一yi層ceng軟ruan件jian並bing無wu明ming顯xian的de價jia值zhi,但dan是shi其qi簡jian化hua了le對dui硬ying件jian的de操cao作zuo,給gei程cheng序xu開kai發fa帶dai來lai較jiao大da的de便bian利li。按an照zhao一yi般ban的de軟ruan件jian分fen層ceng規gui則ze,這zhe一yi層ceng軟ruan件jian應ying該gai還hai是shi屬shu於yu操cao作zuo係xi統tong內nei核he的de一yi部bu分fen,因yin為wei它ta並bing沒mei有you提ti供gong額e外wai的de附fu加jia功gong能neng,在zai代dai碼ma量liang上shang,與yu內nei核he相xiang比bi,也ye非fei常chang少shao,在zai某mou些xie情qing況kuang下xia甚shen至zhi可ke以yi忽hu略lve掉diao。因yin此ci,在zai展zhan示shi上shang,應ying該gai與yu操cao作zuo係xi統tong內nei核he放fang在zai一yi起qi。但dan是shiGoogle為了區分這一層軟件是來源於Android係統,而不是Linux,因此把它單獨列出來了。
再往上,就是支撐操作係統運行的一些輔助功能組件了。主要有在線更新(OTA Updates),安全相關的一些組件和機製,以及在線數據分析和性能測量等。在線更新機製,可以使運行Brillo操作係統的物聯網設備,在運行過程中就可以更新軟件,而不用中斷運行。這個特性是非常有價值的,Brillo是(shi)一(yi)個(ge)複(fu)雜(za)的(de)係(xi)統(tong),其(qi)版(ban)本(ben)更(geng)迭(die)和(he)補(bu)丁(ding)發(fa)布(bu)必(bi)定(ding)非(fei)常(chang)頻(pin)繁(fan)。如(ru)果(guo)不(bu)提(ti)供(gong)在(zai)線(xian)更(geng)新(xin)功(gong)能(neng),沒(mei)發(fa)布(bu)一(yi)個(ge)新(xin)的(de)版(ban)本(ben)和(he)補(bu)丁(ding),都(dou)需(xu)要(yao)現(xian)場(chang)更(geng)新(xin)物(wu)聯(lian)網(wang)設(she)備(bei),顯(xian)然(ran)是(shi)不(bu)可(ke)操(cao)作(zuo)的(de)。因(yin)此(ci)Google設計了這個特性來支撐在線實時軟件更新功能。隻要與Brillo的後台服務器連接上,Brillo會(hui)自(zi)動(dong)檢(jian)查(zha)更(geng)新(xin),並(bing)安(an)排(pai)更(geng)新(xin),而(er)不(bu)會(hui)影(ying)響(xiang)設(she)備(bei)的(de)正(zheng)常(chang)運(yun)行(xing)。而(er)安(an)全(quan)機(ji)製(zhi)則(ze)提(ti)供(gong)了(le)設(she)備(bei)認(ren)證(zheng),數(shu)據(ju)加(jia)密(mi)等(deng)功(gong)能(neng),這(zhe)是(shi)任(ren)何(he)網(wang)絡(luo)流(liu)解(jie)決(jue)方(fang)案(an)必(bi)須(xu)要(yao)提(ti)供(gong)的(de)機(ji)製(zhi),在(zai)後(hou)麵(mian)部(bu)分(fen)會(hui)詳(xiang)細(xi)介(jie)紹(shao)。而(er)在(zai)線(xian)性(xing)能(neng)統(tong)計(ji)和(he)分(fen)析(xi)功(gong)能(neng),則(ze)可(ke)以(yi)幫(bang)助(zhu)用(yong)戶(hu)實(shi)時(shi)查(zha)看(kan)和(he)分(fen)析(xi)設(she)備(bei)狀(zhuang)態(tai),性(xing)能(neng),消(xiao)息(xi)數(shu)量(liang)等(deng)數(shu)據(ju),為(wei)設(she)備(bei)維(wei)護(hu)人(ren)員(yuan)提(ti)供(gong)一(yi)個(ge)基(ji)礎(chu)的(de)管(guan)理(li)平(ping)台(tai)。開(kai)發(fa)者(zhe)可(ke)以(yi)根(gen)據(ju)需(xu)要(yao),選(xuan)擇(ze)啟(qi)用(yong)或(huo)關(guan)閉(bi)這(zhe)些(xie)外(wai)圍(wei)輔(fu)助(zhu)功(gong)能(neng)。
再上麵,就是Weave框架了。Brillo操作係統內嵌了對Weave的支持,把Weave作為支撐物聯網應用的主要功能模塊。但是具有諷刺意味的是,Weave並沒有把Brillo作為唯一的底層操作係統,反而一直強調“跨平台,可移植”等特性。可見,在Google內部,Weave要更強勢一些,Brillo的定位或者價值,仍然存疑。
從架構上看,Brillo是完全符合我們前麵提到的物聯網操作係統參考架構的。比如Linux內核和Android HALzuhedaoyiqi,jiuduiyingwulianwangcaozuoxitongneihezheyiceng。zaixianshengji,anquanjizhi,xingnengceliangheshujufenxidengzhexiefuzhugongnengzujian,duiyingyuwaiweigongnengzujianzheyiceng。Weave則對應於物聯網協同框架這一層。如下圖所示:

需要說明的是,在Google提供的官方架構圖中,Weave模塊是與OTAUpdates等外圍輔助模塊位於同一個層次的。這樣無法反映出Weave和Brillo之間的關係。Weave是依賴於Brillo操作係統而運行的,Weave又不屬於Brillo操作係統的範疇。因此正確的表示方法應該是把Weave放在Brillo上麵,既體現了依賴邏輯,又體現了這兩者相互獨立的關係。不論哪種處理方式,都不會帶來理解上的偏差。
ii. Ostro物聯網操作係統分析
Ostro項目是由Intel主導創建的一個開源物聯網操作係統項目,它的目的是開發一個針對物聯網應用的專門操作係統,這個操作係統的名字也叫做Ostro。它是基於Linux內核進行裁剪,並針對物聯網領域的智能設備進行定製,專門應用於物聯網的操作係統。
它可以被安裝在USB存儲杆或者SD卡上,可以直接啟動物聯網硬件設備。當然,物聯網應用開發者也可以根據自己的需要,對Ostro進行二次裁剪,自定義一個符合自身應用場景的全新內核。這個特征完全符合物聯網操作係統的要求。
它所宣稱的最主要特征,包括可裁剪,安全,豐富的開發環境,以及麵向物聯網的豐富組件和服務支持等。主要特點如下:
- 基於Linux操作係統進行裁剪,專門用於IoT領域;
- 支持Intel的Quark和Intel Atom處理器;
- 支持Node.js,Python,Java和C/C++等語言進行應用程序開發;
- 程序員可通過RestFUL API,對設備狀態進行查詢。支持符合OCF標準的設備發現機製;
- 支持符合OCF標準的JavaScript API;
- 安全特性,比如可信啟動,應用程序內存隔離,權限管理,OS鏡像完整性驗證等機製;
- 豐富的通信技術支持,包括Bluetooth*/BLE, WiFi, 6LowPAN, 以及CAN bus等;
- 支持VirtualBox虛擬機;
- 可以基於Yocto工具鏈進行編譯開發和裁剪。
下圖示意了Ostro物聯網操作係統的整體架構:

下麵按照從上往下的順序,對Ostro的各個層次做簡要介紹。
IoT應用程序:這個層次包含了所有使用Ostro編程接口所開發的物聯網應用程序。當前的Ostro版本並沒有開發任何特定的應用程序實例,僅僅提供了如何開發應用程序的指導以及一些簡單的代碼片段。隨著Ostro的發展,或許會有針對特定典型場景的物聯網應用程序,比如智慧家庭應用程序,被納入到這個層次中發布。
編程接口:編程接口是Ostro提供給應用程序開發者使用的,用於開發各種各樣的物聯網應用程序。當前來說,Ostro提供了多種多樣的編程接口供程序員根據自己的喜好和特定應用場景調用。主要有:
- Java和Python編程接口,物聯網應用程序開發者可以采用Python和Java語言,開發特定的應用程序。Ostro提供了常用的支持類庫;
- Node.JS編程接口。Ostro提供了Node.JS的運行期支持,以及特定的一些JavaScript API(以Node.JS模塊方式提供)。這些Java Script API涵蓋了相對廣泛的物聯網應用場景,比如包含了開放連接基金會(OCF)定義的API接口。這樣就非常便於物聯網應用程序開發者直接使用這些API,調用IoTivity等協同框架的功能;
- Soletta編程接口。Soletta是一個開源的物聯網應用程序開發框架,它提供了一些常用的物聯網應用開發庫,便於程序員方便快速的開發物聯網應用程序。Soletta是一種編程框架,可以采用傳統的C語言進行應用程序開發,也可以采用一種叫做“基於流的編程語言”(Flow-based Programming)來進行物聯網應用的開發。
總之,Ostra提供了相對豐富的變成框架,供應用開發者選擇。
物聯網協同框架:Ostro內置了對IoTivity的支持。IoTivity shiyigekaiyuanderuanjiankuangjia,yongyuwufengdezhichishebeidaoshebeidehulian,yijirenyushebeidejianbianhulian。qizhuyaoshiweilemanzuwulianwangkaifadexuyao,goujianwulianwangdeshengtaixitong,shideshebeiheshebeizhijiankeyianquankekaodelianjie。erIoTivity 通過提供一係列框架和服務來加速設備的互聯應用開發。該項目由 Open Interconnect Consortium (OIC) 組織讚助,相當於是 OIC 標準的一個參考實現。在本書的第二部分中,有詳細的描述。
Ostro服務:Ostro服務主要是指係統級的一些進程或線程,這些進程或線程負責管理網絡連接,加載必要的支撐服務,以及提供進程間通信(IPC)支持等。在Ostro操作係統中,保留了大部分Linux操作係統所支持的systemd,D-Bus等。
除此之外,在線軟件更新也是Ostro提(ti)供(gong)的(de)基(ji)本(ben)服(fu)務(wu)之(zhi)一(yi)。這(zhe)是(shi)專(zhuan)門(men)為(wei)物(wu)聯(lian)網(wang)應(ying)用(yong)所(suo)提(ti)供(gong)的(de)一(yi)個(ge)基(ji)本(ben)服(fu)務(wu),可(ke)以(yi)快(kuai)速(su)的(de)完(wan)成(cheng)物(wu)聯(lian)網(wang)設(she)備(bei)的(de)軟(ruan)件(jian)更(geng)新(xin),而(er)且(qie)隻(zhi)需(xu)要(yao)最(zui)小(xiao)的(de)軟(ruan)件(jian)下(xia)載(zai)量(liang),隻(zhi)需(xu)要(yao)重(zhong)新(xin)啟(qi)動(dong)必(bi)要(yao)的(de)物(wu)聯(lian)網(wang)設(she)備(bei)即(ji)可(ke),而(er)不(bu)需(xu)要(yao)重(zhong)新(xin)啟(qi)動(dong)所(suo)有(you)的(de)物(wu)聯(lian)網(wang)設(she)備(bei)。
在zai線xian軟ruan件jian更geng新xin是shi確que保bao物wu聯lian網wang可ke管guan理li可ke維wei護hu的de核he心xin機ji製zhi,通tong過guo物wu聯lian網wang操cao作zuo係xi統tong與yu後hou端duan雲yun平ping台tai的de協xie同tong,使shi得de物wu聯lian網wang設she備bei的de軟ruan件jian始shi終zhong保bao持chi在zai最zui新xin和he最zui安an全quan的de狀zhuang態tai。
Ostro基本庫:Ostro基本庫包括隨Linux內核一起發行的最基本運行庫,比如最常用的C運行庫等。當然,Ostro可以根據需要,動態的擴展基本庫的範圍。
Linux內核:Ostro的內核就是通用的Linux內核,它包括了最基本的驅動程序支持,硬件適配支持,網絡支持,文件係統以及設備管理機製等。為了適應物聯網的應用,Ostro對Linux內核做了一些微調,使得內核可以支持更多的傳感器(Sensor),能夠支持更多的連接類型,比如藍牙/WiFi/Zigbee等等。
但是由於Linux內核本身的複雜性和不可分割性,使得Ostro物聯網操作係統很難具備物聯網操作係統所應該具備的高度伸縮性要求。
從上麵的分析中可以看出,Ostro物聯網操作係統與我們定義的物聯網操作係統分層模型基本上是對應的,下圖示意了這種對應關係:

iii. HelloX物聯網操作係統分析
HelloX是由國內操作係統愛好者開發的完全開源物聯網操作係統,下圖示意了HelloX的整體架構:

從整體結構上可以看出,HelloX操作係統也符合物聯網操作係統的分層結構。最下方是驅動程序層,實現了大多數常見硬件的驅動支持,包括USB,以太網,SPI/UART等等。嚴格來說,驅動程序層應該屬於內核的一部分。在HelloX的實現中,為了突出HelloX豐富的驅動支持的特點,把驅動程序單獨拿出來,作為一個層次展示。
在驅動層之上,是內核層。內存管理,任務調度等機製,都是在內核中實現的。與其它物聯網操作係統基於Linux內核定製的思路不同,HelloX的(de)內(nei)核(he)是(shi)根(gen)據(ju)物(wu)聯(lian)網(wang)的(de)特(te)征(zheng),完(wan)全(quan)全(quan)新(xin)開(kai)發(fa)的(de)。內(nei)核(he)中(zhong)各(ge)模(mo)塊(kuai)之(zhi)間(jian)是(shi)鬆(song)耦(ou)合(he)的(de),可(ke)以(yi)根(gen)據(ju)需(xu)要(yao),靈(ling)活(huo)的(de)裁(cai)剪(jian)或(huo)者(zhe)增(zeng)加(jia)任(ren)何(he)內(nei)核(he)模(mo)塊(kuai),這(zhe)樣(yang)就(jiu)確(que)保(bao)了(le)內(nei)核(he)的(de)可(ke)伸(shen)縮(suo)性(xing),能(neng)夠(gou)滿(man)足(zu)多(duo)種(zhong)多(duo)樣(yang)的(de)碎(sui)片(pian)化(hua)硬(ying)件(jian)需(xu)求(qiu)。也(ye)可(ke)以(yi)根(gen)據(ju)需(xu)要(yao),替(ti)換(huan)內(nei)核(he)中(zhong)的(de)缺(que)省(sheng)模(mo)塊(kuai)或(huo)者(zhe)算(suan)法(fa),比(bi)如(ru)可(ke)以(yi)采(cai)用(yong)自(zi)定(ding)義(yi)的(de)任(ren)務(wu)調(tiao)度(du)算(suan)法(fa),替(ti)換(huan)內(nei)核(he)中(zhong)缺(que)省(sheng)的(de)基(ji)於(yu)優(you)先(xian)級(ji)輪(lun)詢(xun)的(de)調(tiao)度(du)算(suan)法(fa)。也(ye)可(ke)以(yi)采(cai)用(yong)更(geng)加(jia)實(shi)時(shi)的(de)內(nei)存(cun)分(fen)配(pei)算(suan)法(fa)(比如固定尺寸鏈表法),來替換內核中缺省的空閑鏈表內存分配算法,等等。對於MMU的支持,HelloX也是作為可選模塊來實現,裁剪掉MMU功能,不會對係統中的其它模塊產生任何功能上的影響(但是內存保護,虛擬內存等機製就不能用了)。
在內核層之上,是外圍組件層。HelloX提供了包括網絡,文件係統,係統調用等在內的多種多樣的外圍組件,供物聯網應用程序開發調用。
目前的HelloX,移植IoTivity物聯網協同框架,作為自己的協同框架。未來根據需要,HelloX會開發更加靈活的物聯網協同框架,與HelloX捆綁使用。
基於這些基本組件和功能,可以基於HelloX操作係統實現廣泛的物聯網應用,比如家庭網關,智能攝像頭,智慧家庭中的家電設備,抄表,e-Health等。目前HelloX已經實現了同多個物聯網雲平台的對接和集成。
推薦閱讀:
特別推薦
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
技術文章更多>>
- 貿澤EIT係列新一期,探索AI如何重塑日常科技與用戶體驗
- 算力爆發遇上電源革新,大聯大世平集團攜手晶豐明源線上研討會解鎖應用落地
- 創新不止,創芯不已:第六屆ICDIA創芯展8月南京盛大啟幕!
- AI時代,為什麼存儲基礎設施的可靠性決定數據中心的經濟效益
- 矽典微ONELAB開發係列:為毫米波算法開發者打造的全棧工具鏈
技術白皮書下載更多>>
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
微波功率管
微波開關
微波連接器
微波器件
微波三極管
微波振蕩器
微電機
微調電容
微動開關
微蜂窩
位置傳感器
溫度保險絲
溫度傳感器
溫控開關
溫控可控矽
聞泰
穩壓電源
穩壓二極管
穩壓管
無焊端子
無線充電
無線監控
無源濾波器
五金工具
物聯網
顯示模塊
顯微鏡結構
線圈
線繞電位器
線繞電阻


