崔建明
(長(zhǎng)安大學(xué) 信息工程學(xué)院,陜西 西安 710064)
車(chē)輛感知是支持車(chē)聯(lián)網(wǎng)技術(shù)(Internet of Vehicle,IoV)的主要技術(shù)內(nèi)容之一,在文獻(xiàn)[1]中車(chē)聯(lián)網(wǎng)技術(shù)被定義為:指利用先進(jìn)傳感器技術(shù)、網(wǎng)絡(luò)技術(shù)、計(jì)算技術(shù)、控制技術(shù)、智能技術(shù),對(duì)道路和交通進(jìn)行全面感知,實(shí)現(xiàn)多個(gè)系統(tǒng)間大范圍、大容量數(shù)據(jù)的交互,對(duì)每一個(gè)車(chē)輛、每一個(gè)道路的狀態(tài)進(jìn)行多方面、全時(shí)段的控制,以提供交通安全及交通效率。從定義中可以看出“車(chē)聯(lián)網(wǎng)”技術(shù)本質(zhì)就是無(wú)處不在的感知,這樣感知過(guò)程需要有效的傳感器及雙向信息交互。車(chē)聯(lián)網(wǎng)的研究關(guān)注的重點(diǎn)在于車(chē)-車(chē)、車(chē)-路的宏觀通訊技術(shù),以及車(chē)輛自身的微觀狀態(tài)感知,大多數(shù)微小設(shè)備感知信息是單向傳遞,缺乏對(duì)部件的控制與操作回饋的雙向信息傳遞,故此需要完善,文中基于這個(gè)需求進(jìn)行了研究。技術(shù)主要內(nèi)容把嵌入式的BOA[2]技術(shù)引入到車(chē)聯(lián)網(wǎng)技術(shù)當(dāng)中。此方法可以通過(guò)與CAN(Controller Area Network)總線、控制中心的智能程序集成,達(dá)到集中監(jiān)控與調(diào)整設(shè)備整體的關(guān)鍵部件參數(shù),即智能部件感知的目的。甚至通過(guò)具有獨(dú)立的虛擬地址技術(shù)對(duì)關(guān)鍵部件設(shè)置獨(dú)有地址,達(dá)到遠(yuǎn)程感知。對(duì)此,本文做了部分研究工作,首先,介紹了基于BOA的面向車(chē)聯(lián)網(wǎng)構(gòu)架結(jié)構(gòu),其次,對(duì)關(guān)鍵技術(shù)GoAhead的Web Server遷移到VxWorks做詳細(xì)的介紹,最后,給出一個(gè)對(duì)車(chē)聯(lián)網(wǎng)中的關(guān)鍵部件進(jìn)行管理的簡(jiǎn)單例程。
在車(chē)聯(lián)網(wǎng)系統(tǒng)中需要感知具體的關(guān)鍵部件的健康狀態(tài),運(yùn)行信息等。車(chē)聯(lián)網(wǎng)技術(shù)感知模型如圖1所示,車(chē)輛感知信息通過(guò)(OBU)與路邊設(shè)備(RSU)建立無(wú)線通信,經(jīng)過(guò)網(wǎng)關(guān)接入互聯(lián)網(wǎng)。
圖1 “車(chē)聯(lián)網(wǎng)”感知模型Fig.1 Sensor model of IoV
“車(chē)聯(lián)網(wǎng)”感知模型相比來(lái)說(shuō)較為宏觀,如果微觀層面上需要在“車(chē)聯(lián)網(wǎng)”內(nèi)部具有感知車(chē)輛內(nèi)部設(shè)備的數(shù)據(jù)交互,達(dá)到被感知設(shè)備與管理系統(tǒng)或數(shù)據(jù)中心建立通信關(guān)系。借助BOA技術(shù)建立關(guān)系如圖2所示,達(dá)到雙向交互目的。
圖2 被感知設(shè)備與遠(yuǎn)程數(shù)據(jù)中心建立通信關(guān)系Fig.2 Communication relationships be establish the be sensing equipment and the remote data centers
對(duì)一些具體的儀器組件是通過(guò)傳感器的方式感知獲取數(shù)據(jù),缺少對(duì)信息的交互能力。如果部件感知過(guò)細(xì),可以看出對(duì)傳輸?shù)沫h(huán)境要求將有所提高。如圖3所示,(a)表示為感知的是目標(biāo)的整體,而(b)感知的為目標(biāo)的各個(gè)組成部分,(c)則是通過(guò)集中控制器與部件和控制中心聯(lián)系,通道數(shù)量減少,降低復(fù)雜程度與成本。目前,“車(chē)聯(lián)網(wǎng)”的信息交互是處于一個(gè)集中的層面上體現(xiàn),如天氣情況、健康狀態(tài)、交通沖突與否。在本項(xiàng)研究中,建立一個(gè)BOA連接一個(gè)被感知部件與控制中心或數(shù)據(jù)中心的機(jī)制,達(dá)到感知更加細(xì)微,實(shí)現(xiàn)整體更多有效決策。
實(shí)現(xiàn)“車(chē)聯(lián)感知”的計(jì)算模式,是依靠各類(lèi)嵌入式BOA服務(wù)微系統(tǒng)的應(yīng)用,集成各個(gè)部件異構(gòu)傳感數(shù)據(jù)的平臺(tái),集收集傳感數(shù)據(jù)和指令發(fā)送于一體。目前嵌入式BOA服務(wù)器軟件中,GoAhead Web Server是一款可移植性強(qiáng),免費(fèi)的嵌入式WEB服務(wù)器,它是運(yùn)行于嵌入式操作系統(tǒng)之上的應(yīng)用層軟件[3]。VxWorks操作系統(tǒng)是美國(guó)風(fēng)河公司設(shè)計(jì)開(kāi)發(fā)一種嵌入式實(shí)時(shí)操作系統(tǒng)(RTOS),因其良好的持續(xù)發(fā)展能力、高性能的內(nèi)核、友好的開(kāi)發(fā)環(huán)境、卓越的可靠性和實(shí)時(shí)性,被廣泛應(yīng)用于通信、航空、航天等實(shí)時(shí)性要求極高的領(lǐng)域中。并結(jié)合安防監(jiān)控系統(tǒng)的視頻傳感器控制器給出了應(yīng)用實(shí)例。
通過(guò)分析,具有局部控制器的部件感知降更具優(yōu)勢(shì),故此需要建立虛擬地址與外圍控制的關(guān)系,達(dá)到控制中心與微部件的信息交互。如圖3中的 (c)所示,c.1….c.4都集成了BOA的技術(shù),這樣局部控制與部件見(jiàn)建立映射關(guān)系,如圖4所示。其中BOA0為與外界感知的總接口,而B(niǎo)OA 1到BOA 6……等分別為在BOA 0下的虛擬端口地址控制的部件接口。通過(guò)這種虛擬獨(dú)立地址的技術(shù)完全可以避免由于IP地址不足帶來(lái)的弊端,并且可以便于整體管理感知微部件。當(dāng)然BOA支持IPv6[6],那么地址分配可以采用實(shí)地址方式進(jìn)行信息交互。
圖3 感知對(duì)象改進(jìn)Fig.3 Improve the objects of sensing
圖4 控制器與部件BOA映射Fig.4 Mapping the controller and the BOA
BOA是單任務(wù)的HTTP服務(wù)器,與其他傳統(tǒng)的Web服務(wù)器不同的是當(dāng)有連接請(qǐng)求到來(lái)時(shí),它并不為每個(gè)連接單獨(dú)創(chuàng)建進(jìn)程,也不通過(guò)復(fù)制自身進(jìn)程來(lái)處理多鏈接,而是通過(guò)建立HTTP請(qǐng)求列表來(lái)處理多路HTTP連接請(qǐng)求,同時(shí)它只為CGI程序創(chuàng)建新的進(jìn)程,這樣就在最大程度上節(jié)省了系統(tǒng)資源,這對(duì)嵌入式系統(tǒng)來(lái)說(shuō)是關(guān)鍵[2]。同時(shí)它還具有自動(dòng)生成目錄、自動(dòng)解壓文件等功能,因此,BOA具有很高的HTTP請(qǐng)求處理速度和效率,在嵌入式系統(tǒng)中具有很高的應(yīng)用范圍。GoAhead就是這樣一類(lèi)Web Server的工程應(yīng)用軟件。目前有支持 GoAhead[4]的嵌入式操作系統(tǒng)包括 Windows CE,pSOS,Embedded Linux,uCOS,VxWorks,QNX 等。 這種嵌入式 BOA技術(shù)的 Web Server支持 ASP,嵌入式 JavaScript,標(biāo)準(zhǔn) CGI,內(nèi)存中的CGI處理GoForms,擴(kuò)展的API,每秒可處理大于50個(gè)請(qǐng)求[5]。支持硬件構(gòu)架ARM7,ARM9等,并滿足VxWorks操作系統(tǒng)和GoAhead工程運(yùn)行的需要。
首先關(guān)鍵部件本身能夠ARM7/ARM9硬件構(gòu)架控制,這是一個(gè)基本條件,如圖5所示。在本例中采用ARM7作為主要控制硬件平臺(tái)部分。
圖5 車(chē)聯(lián)網(wǎng)BOA系統(tǒng)構(gòu)建Fig.5 Build the BOA of IoV
操作系統(tǒng)是應(yīng)用軟件正常工作的平臺(tái),BOA屬于應(yīng)用軟件的類(lèi)型,它具備Web Server功能屬性。為了完成這個(gè)工作,需要借助能夠應(yīng)用在VxWorks平臺(tái)上的GoAhead軟件。移植GoAhead關(guān)鍵是讓VxWorks在ARM7硬件平臺(tái)上具有很好的運(yùn)行狀態(tài),故此需要開(kāi)發(fā)板級(jí)支持包(BSP),用于建立操作系統(tǒng)與硬件之間的中間層。然后移植TFFS(True File Format System)文件系統(tǒng),這樣VxWorks操作系統(tǒng)映像文件、GoAhead的工程映像文件及Web文檔就可以運(yùn)行在嵌入式系統(tǒng)硬件平臺(tái)上。
當(dāng)目標(biāo)板中需設(shè)計(jì)一個(gè)用于接受用戶指令的進(jìn)程,加入到系統(tǒng)的多個(gè)正在運(yùn)行的進(jìn)程當(dāng)中,系統(tǒng)采用稱(chēng)為ROUNDROBIN[10]的調(diào)度方式進(jìn)行輪轉(zhuǎn)調(diào)度。
為方便程序調(diào)試和系統(tǒng)集成,分別對(duì)EOS(Embedded Operation System)環(huán)境和應(yīng)用程序進(jìn)行配置。首先,進(jìn)行移植準(zhǔn)備。建立一個(gè)可下載的(downloadable)的VxWorks工程,調(diào)試成功后再將VxWorks映像和GoAhead.out文件一起上傳到tffs1中,在 VxWorks的 usrAppInit()函數(shù)中加載 goahead.out文件,然后再啟動(dòng)Web Server。
UsrAppInit中的關(guān)鍵代碼如下:
#ifdef USER_APPL_INIT
USER_APPL_INIT;
#endif
ioDefPathSet (“/tffs1”);/* 設(shè)定當(dāng)前的路徑為 tff1 的根目錄*/
if(loadGoaheadModuleAndRun()==OK)
printf(“GoAhead Webserver READY. ”);
}
如 果 設(shè) 置 websSetDefaultPage(T(“controltree.html”)) /*
設(shè)置默認(rèn)主頁(yè)*/
對(duì)于完成的正常能夠運(yùn)行的項(xiàng)目,在瀏覽器中輸入地址http://192.168.1.1/controltree.html即可以訪問(wèn)/tffs1/webs/controltree.html文件。
板級(jí)支持包BSP(Board Support Package)是介于嵌入式硬件和EOS之間的一層系統(tǒng)軟件,負(fù)責(zé)向 VxWorks提供與硬件環(huán)境的基本接口,其移植的主要過(guò)程有:
第一步 配置嵌入式處理器的CPU型號(hào),主頻等相關(guān)參數(shù),為整個(gè)軟件系統(tǒng)提供底層硬件支持;
第二步 根據(jù)硬件模塊配置相關(guān)設(shè)備驅(qū)動(dòng)和系統(tǒng)中斷服務(wù)程序;
第三步 定制總線及芯片引腳功能,配置存儲(chǔ)空間映射和存儲(chǔ)空間大小;
第四步 定制EOS功能,為軟件系統(tǒng)提供一個(gè)多任務(wù)工作環(huán)境。
BSP的配置是系統(tǒng)重中之重,合理的配置能夠保證系統(tǒng)穩(wěn)定運(yùn)行。
選擇好的調(diào)試方法,可以提高學(xué)習(xí)和項(xiàng)目開(kāi)發(fā)的效率。目前VxWorks程序開(kāi)發(fā)中常用的調(diào)試方法有網(wǎng)絡(luò)和串口調(diào)試方法,在本應(yīng)用系統(tǒng)中選擇網(wǎng)絡(luò)調(diào)試。正確的配置方法是在所建立的Bootable工程的VxWorks組件中選擇WDB連接和END驅(qū)動(dòng),所生成的VxWorks映像通過(guò)網(wǎng)絡(luò)加載到內(nèi)存運(yùn)行。主機(jī)端還需要在Target Server配置和目標(biāo)機(jī)相連,配置中BackEnd選擇wdbrpc,目標(biāo)機(jī)的IP設(shè)置為192.168.1.11,核心文件指向主機(jī)FTP下載目錄中的VxWorks映像,最選擇all symbol并選中Synchronize Target/Host Symbol Table。配置如果正確,即可啟動(dòng)Target Server。
此時(shí)可以在當(dāng)前工作空間下建立一個(gè)可下載的應(yīng)用程序模塊,在該模塊下新建一個(gè)程序文件Multitasks.c,經(jīng)編譯生成Multitasks.o,下載到目標(biāo)機(jī),最后在主機(jī)的wShell中輸入Mutiltasks,在超級(jí)終端中即可以看到任務(wù)的執(zhí)行情況,其中代碼如下:
void pt1(void);
void pt2(void);
Mutiltasks(){/*一個(gè)多任務(wù)例程*/
int tId1,tId2;/* 任務(wù) ID*/
tId1=taskSpawn (“tpt1”,90,0x100,2000,pt1,0,0,0,0,0,0,0,0,0,0);
tId2=taskSpawn (“tpt2”,90,0x100,2000,pt2,0,0,0,0,0,0,0,0,0,0); }
void pt1 (void){printf(“Hello, I am task tprint1. ”); }
void pt2 (void){printf(“Hello, I am task tprint2. ”); }
在開(kāi)發(fā)過(guò)程中使用應(yīng)用程序模塊是非常方便的,如果要形成最終產(chǎn)品,需要將調(diào)試成功的模塊遷移到bootable VxWorks映像中,方法是將源程序加入bootable VxWorks項(xiàng)目,并在usrAppInit.C文件中的usrAppInit()函數(shù)下添加入口代碼Mutiltasks(),代碼如下所示。最后編譯成符合現(xiàn)場(chǎng)要求的VxWorks映像并完成遷移工作。
void usrAppInit(void) {
#ifdef USER_APPL_INIT
USER_APPL_INIT;
#endif
Mutiltasks ();}
本文針對(duì)車(chē)聯(lián)網(wǎng)的特點(diǎn)介紹了目標(biāo)板上移植嵌入式BOA的方法和步驟,交叉編譯環(huán)境的建立方法及控制器的設(shè)計(jì)思路。可以看出,BOA技術(shù)支持車(chē)聯(lián)網(wǎng),可以滿足細(xì)致部件的感知。
此外,針對(duì)于系統(tǒng)的“車(chē)聯(lián)網(wǎng)”技術(shù)還需要深入的研究,BOA只是在此研究上的一個(gè)基本內(nèi)容。由于感知是通過(guò)虛擬地址映射得到每一個(gè)部件的ID,故此需要一個(gè)控制中心,在工程中需要控制中心與感知部件總體考慮,文中沒(méi)有在此內(nèi)容上有過(guò)多描述。在實(shí)際應(yīng)用中采用IPv6地址,還是虛擬地址這取決于成本與技術(shù)條件,這些是以后需要深入研究的內(nèi)容。
[1]WANG Jian,LIU Yan-heng,GAO Wen-bin.Securing internet of vehicles using TCM [J].International Journal of Digital Content Technology and Its Applications,2010,4(7):226-233.
[2]Webserver B [EB/OL].[2000-02-03].http://www.boa.org/documentation/.
[3]Massa A J.Integrating the GoAhead Webserver&eCos[J].Dr.Dobb's Journal,2002,27(11):56-64.
[4]Massa A J.Integrating GoAhead WebServer&eCos:Webbased remote management for small systems[EB/OL].[2002-12-01].http://www.ddj.com/mobile/184405201/.
[5]ZHAOQing-lei,HAN Cheng-shan,WEN Ming,et al.GoAhead Embedded Server’s Design and implementation[J].Control&Automation,2011,27(4):67-69.
[6]Silva C d,Rodrigues B,Mendes J J P C,et al.Design and Construction of Wireless Sensor Network Gateway with IPv4/IPv6 Support[C]//Communications (ICC), 2011 IEEE International Conference on.Washington D.C:IEEE Computer Society,2011.
[7]Shreedhar M,Varghese G.Efficient fair queuing using deficit round-robin[J].IEEEI ACM Transactions on Networking,1996(4):375-385.