999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

TinyOS在CC2530下的移植及AODV路由協(xié)議的實(shí)現(xiàn)

2012-04-12 00:00:00曾志宏湯碧玉楊琦
現(xiàn)代電子技術(shù) 2012年9期

摘 要:首先介紹了以TI的無(wú)線傳感器網(wǎng)絡(luò)芯片CC2530為核心部件的節(jié)點(diǎn)硬件實(shí)現(xiàn),接著介紹TinyOS操作系統(tǒng)的運(yùn)行機(jī)制及其在CC2530平臺(tái)下的移植過(guò)程;并在此基礎(chǔ)上以nesC語(yǔ)言實(shí)現(xiàn)了AODV路由協(xié)議,最后對(duì)系統(tǒng)進(jìn)行組網(wǎng)測(cè)試,測(cè)試結(jié)果表明平臺(tái)各功能正常運(yùn)行并且實(shí)現(xiàn)AODV協(xié)議的基本功能。

關(guān)鍵詞:無(wú)線傳感器網(wǎng)絡(luò); TinyOS; CC2530; AODV

中圖分類號(hào):TN71134 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1004373X(2012)09004104

收稿日期:20120106

基金項(xiàng)目:教育部博士點(diǎn)基金(20100121120020)0 引 言

無(wú)線傳感器網(wǎng)絡(luò)(Wireless Sensor Network)是由具有感知、計(jì)算和通信能力的大量微型傳感器節(jié)點(diǎn)組成[1],被廣泛地應(yīng)用于國(guó)防軍事、環(huán)境監(jiān)測(cè)等領(lǐng)域。加州大學(xué)Berkeley分校設(shè)計(jì)的基于事件驅(qū)動(dòng)、組件模塊化的無(wú)線傳感器網(wǎng)絡(luò)操作系統(tǒng)TinyOS具有核心程序小、對(duì)硬件要求低等優(yōu)勢(shì),但它不支持功能強(qiáng)大的無(wú)線傳感網(wǎng)絡(luò)芯片CC2530,為此需要將TinyOS移植至CC2530平臺(tái),以使其得到更好的應(yīng)用。同時(shí)為了節(jié)省傳輸能量,需要采用相應(yīng)的路由協(xié)議,以多跳中繼的方式將數(shù)據(jù)經(jīng)由多個(gè)節(jié)點(diǎn)組成的路由傳回匯聚節(jié)點(diǎn)或基站[2]。

本文選用TI的CC2530作為傳感器節(jié)點(diǎn)的核心部件,采用TinyOS操作系統(tǒng)作為軟件平臺(tái),成功將TinyOS移植至CC2530平臺(tái),并添加了Timer、UART、RF等組件;在移植的平臺(tái)上,以nesC語(yǔ)言實(shí)現(xiàn)了AODV路由協(xié)議,并且實(shí)現(xiàn)了傳感器節(jié)點(diǎn)的組網(wǎng),數(shù)據(jù)包的多跳轉(zhuǎn)發(fā);為TinyOS和AODV的研究和應(yīng)用奠定基礎(chǔ)。

1 無(wú)線傳感器網(wǎng)絡(luò)系統(tǒng)結(jié)構(gòu)

1.1 傳感器節(jié)點(diǎn)硬件結(jié)構(gòu)

傳感器節(jié)點(diǎn)一般由供電單元、數(shù)據(jù)采集單元、數(shù)據(jù)處理單元(由微控制器和存儲(chǔ)器組成)、無(wú)線通信單元組成。其中,數(shù)據(jù)處理單元中的微控制器負(fù)責(zé)對(duì)其他三個(gè)單元的控制。

本文的系統(tǒng)采用無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)芯片CC2530作為微控制器。CC2530使用了增強(qiáng)型8051CPU,運(yùn)行時(shí)鐘頻率為32 MHz,具有8 KB RAM;包括一個(gè)普通16位定時(shí)器和兩個(gè)8位定時(shí)器,21個(gè)可編程程I/O引腳,兩個(gè)支持多種串行通信協(xié)議的USART,一個(gè)符合IEEE 802.15.4標(biāo)準(zhǔn)的2.4 GHz無(wú)線收發(fā)器和MAC定時(shí)器。CC2530是用于IEEE.802.15.4,ZigBee和RF4CE應(yīng)用的一個(gè)真正的片上系統(tǒng)(SoC)解決方案[3]。本文節(jié)點(diǎn)核心部分的硬件設(shè)計(jì)如圖1所示。

1.2 傳感器節(jié)點(diǎn)軟件結(jié)構(gòu)

TinyOS是加州大學(xué)Berkeley分校專門為無(wú)線傳感器網(wǎng)絡(luò)開發(fā)的微型操作系統(tǒng)[45]。該系統(tǒng)采用輕量級(jí)線程(Lightweight Thread)、主動(dòng)消息(Active Message)通信模塊、事件驅(qū)動(dòng)(Event Driven)模式和組件化編程(ComponentBased Programming)等技術(shù),有助于提高傳感器網(wǎng)絡(luò)的性能,發(fā)揮硬件的特點(diǎn),降低其功耗,并且簡(jiǎn)化了傳感器網(wǎng)絡(luò)應(yīng)用的開發(fā)。

TinyOS采用基于事件驅(qū)動(dòng)、兩層調(diào)度的并發(fā)模型。內(nèi)核支持兩種執(zhí)行線程,即中斷處理和任務(wù),主控構(gòu)件維護(hù)兩個(gè)數(shù)據(jù)結(jié)構(gòu)支持內(nèi)核的兩層調(diào)度:中斷向量表和任務(wù)隊(duì)列。TinyOS系統(tǒng)采用組件化思想,其應(yīng)用程序都是由若干個(gè)模塊組件和配置組件構(gòu)成的,其組件有四個(gè)相互關(guān)聯(lián)的部分[6]:一組命令處理程序句柄,一組事件處理程序句柄,一個(gè)經(jīng)過(guò)封裝的私有數(shù)據(jù)幀,一組簡(jiǎn)單任務(wù)。每一個(gè)組件聲明自己使用的接口及其需要用信號(hào)的通知的事件。一個(gè)應(yīng)用程序的組件結(jié)構(gòu)圖如圖2所示,高層次的組件通過(guò)命令調(diào)用低層次組件,低層次組件發(fā)送信號(hào)事件給高層次組件,最低層次組件直接與硬件相互作用。

圖2 TinyOS應(yīng)用程序組件結(jié)構(gòu)1.3 TinyOS操作系統(tǒng)移植

1.3.1 修改編譯工具鏈

TinyOS開發(fā)環(huán)境為Unix,若要為TinyOS開發(fā)應(yīng)用程序,首先要使用nesC進(jìn)行編程,產(chǎn)生以“.nc”為擴(kuò)展名的源文件;然后再調(diào)用Unix的NCC(nesC Compiler)編譯器將源文件編譯成硬件可以執(zhí)行的二進(jìn)制/十六進(jìn)制機(jī)器碼[7],如圖3(a)所示。

但nesC的編譯器NCC調(diào)用的是Unix的GCC(GNU Compiler Collection)編譯器,而GCC編譯器并不支持CC2530所使用的8051處理器。為此,需要在編譯過(guò)程使用Perl語(yǔ)言,轉(zhuǎn)換C語(yǔ)言編譯器不能識(shí)別的nesC關(guān)鍵字,將nesC語(yǔ)言編寫的“.nc”文件編譯為常規(guī)的C語(yǔ)言源文件,然后繞過(guò)Unix的GCC編譯器,改由支持8051的Keil進(jìn)行編譯,其過(guò)程如圖3(b)所示。具體的實(shí)現(xiàn)為編寫腳本文件mangleAppC.pl,在編譯規(guī)則文“.rules”中添加該P(yáng)erl腳本的引用,以生成中間文件App.preMangle.c,并通過(guò)建立批處理文件CC2530F256.bat,調(diào)用Keil程序編譯生成目標(biāo)文件App.hex。

圖3 TinyOS應(yīng)用程序編譯過(guò)程1.3.2 TinyOS平臺(tái)搭建

TinyOS應(yīng)用程序的編譯是以平臺(tái)為對(duì)象的,但TinyOS并不支持CC2530平臺(tái),因此必須先建立能被TinyOS承認(rèn)的平臺(tái)。根據(jù)TinyOS最小平臺(tái)的定義,需要?jiǎng)?chuàng)建的目錄及編寫的文件為[8]:

(1) /tos/platforms/cc2530目錄,及其下的“.platform”文件、platform.h、PlatformC.nc和PlatformP.nc文件,這些文件包含平臺(tái)初始化的實(shí)現(xiàn)代碼和平臺(tái)的環(huán)境變量;

(2) /tos/support/make下的CC2530em.target文件,包含移植代碼的目標(biāo)平臺(tái)的識(shí)別信息;

(3) /tos/support/ make/mcs51下的“.rules”文件,包含生成目標(biāo)平臺(tái)二進(jìn)制/十六進(jìn)制可執(zhí)行代碼時(shí)的編譯說(shuō)明;

(4) /tos/chips/ mcs51下的hardware.h和McuSleepC.nc文件,包含平臺(tái)硬件體系必備的宏定義和低功耗機(jī)制實(shí)現(xiàn)代碼。

1.3.3 基于CC2530的組件編寫

TinyOS應(yīng)用程序是由一系列組件鏈接而成,其中包括用于實(shí)現(xiàn)應(yīng)用程序功能的組件、系統(tǒng)提供的用于實(shí)現(xiàn)常用功能的組件和針對(duì)不同芯片的硬件表達(dá)和抽象組件。由于TinyOS本身并不含有針對(duì)CC2530平臺(tái)的硬件表達(dá)和抽象組件,因此需要編寫直接與硬件相互作用的組件來(lái)完成移植。編寫以下幾個(gè)重要的組件:

(1) IO口組件,通過(guò)建立HplCC2530GeneralIOC組件來(lái)提供兩類系統(tǒng)接口GeneralIO和Init。

(2) Timer組件,主要由TimerMilli組件、HilTimerMilliC配置組件、HplCC2530Timer1AlarmCounterP組件等組成,用于產(chǎn)生以毫秒為單位的計(jì)時(shí)器。

(3) Uart組件,由StdOut組件、PlatformSerialC配置組件、HalCC2530SimpleUartP組件等組成,用于實(shí)現(xiàn)串口收發(fā)功能。

(4) RF組件,主要由ActiveMessageC配置組件、CC2530ActiveMessageP模塊組件、CC2530TransmitP模塊組件、HalCC2530Radio模塊組件和HplCC2530InterruptsC模塊組件構(gòu)成,用于實(shí)現(xiàn)基本無(wú)線數(shù)據(jù)傳輸功能。

2 TinyOS下的AODV路由實(shí)現(xiàn)

AODV是一種適用于無(wú)線傳感器網(wǎng)絡(luò)的按需路由協(xié)議,采用最短路由選路,注重網(wǎng)絡(luò)吞吐量和網(wǎng)絡(luò)服務(wù)質(zhì)量,實(shí)現(xiàn)簡(jiǎn)單。本文以TinyOS作為系統(tǒng)的軟件平臺(tái),根據(jù)TinyOS操作系統(tǒng)的應(yīng)用程序結(jié)構(gòu),以nesC語(yǔ)言實(shí)現(xiàn)了AODV路由協(xié)議。

2.1 AODV路由協(xié)議的基本思想

AODV(Ad hoc Ondemand Distance Vector)借用了DSR中路由發(fā)現(xiàn)和路由維護(hù)的基礎(chǔ)程序,以及DSDV的逐跳(HopbyHop)路由、順序編號(hào)和路由維護(hù)階段的周期更新機(jī)制。

當(dāng)源節(jié)點(diǎn)需要和目的節(jié)點(diǎn)通信時(shí),如果在路由表中已經(jīng)存在了對(duì)應(yīng)的路由時(shí),AODV就不會(huì)進(jìn)行任何操作,而是直接進(jìn)行通信。當(dāng)原路由失效或者需要和新的目的節(jié)點(diǎn)通信時(shí),它就會(huì)發(fā)起路由發(fā)現(xiàn)過(guò)程,廣播RREQ信息。當(dāng)RREQ到達(dá)目的節(jié)點(diǎn)本身,或者是一個(gè)擁有“足夠新”的到目的節(jié)點(diǎn)路由的中間節(jié)點(diǎn)時(shí),目的節(jié)點(diǎn)或者中間節(jié)點(diǎn)通過(guò)RREQ的反向路徑向源節(jié)點(diǎn)返回一個(gè)RREP消息。所謂“足夠新”就是通過(guò)目的序列號(hào)來(lái)判斷的,每個(gè)節(jié)點(diǎn)進(jìn)行節(jié)點(diǎn)序列號(hào)的管理,維護(hù)自身的序列號(hào)和保存目的節(jié)點(diǎn)序列號(hào)。AODV使用了分布式的、基于路由表的路由方式,建立路由表項(xiàng)以后,在路由中的每個(gè)節(jié)點(diǎn)都要執(zhí)行路由維持、管理路由表的任務(wù)。節(jié)點(diǎn)會(huì)監(jiān)視一個(gè)活動(dòng)路由(Active Route)中下一跳節(jié)點(diǎn)的狀況。當(dāng)發(fā)現(xiàn)有鏈路斷開的情況時(shí),就向該路由的前驅(qū)節(jié)點(diǎn)發(fā)出RERR消息通知。在RRER消息中,指明了由于鏈路斷開而導(dǎo)致無(wú)法到達(dá)的目的節(jié)點(diǎn)。每個(gè)節(jié)點(diǎn)都保留了一個(gè)“前驅(qū)列表”(Precursor List)來(lái)幫助完成錯(cuò)誤報(bào)告的功能[9]。

2.2 AODV路由實(shí)現(xiàn)的軟件結(jié)構(gòu)

AODV路由協(xié)議的實(shí)現(xiàn)主要包括兩個(gè)組件:MulitHopEngineM和MulihopAodv,如圖4所示。其中MultiHopEngineM組件負(fù)責(zé)轉(zhuǎn)發(fā)分組,MultiHopAodv是AODV路由功能的實(shí)現(xiàn)組件,通過(guò)配置組件MultiHopAodvRouter將兩個(gè)組件寫通(write)起來(lái)。

MultiHopAodv使用TimerMilliC提供的Timer接口作為路由協(xié)議所需的定時(shí)器,實(shí)現(xiàn)了AODV的路由發(fā)現(xiàn)、路由維護(hù)、Hello消息等機(jī)制,為MulitHopEngineM提供路由的下一跳地址。MultiHopEngineM通過(guò)兩個(gè)接口(RouteControl,RouteSelect)和MultiHopAodv交互,它的實(shí)現(xiàn)獨(dú)立于任何路由協(xié)議實(shí)現(xiàn),這非常有利于基于TinyOS平臺(tái)的第三方路由協(xié)議的開發(fā)[10]。AodvQueueTransmitP為MultiHopEngineM和MultiHopAodv提供了AMSend和Receive接口,同時(shí)提供了FIFO機(jī)制。

3 系統(tǒng)測(cè)試

采用6個(gè)節(jié)點(diǎn)進(jìn)行組網(wǎng)測(cè)試,使用16位的短地址作為節(jié)點(diǎn)地址,如表1所示。系統(tǒng)測(cè)試時(shí),PC端使用串口與節(jié)點(diǎn)連接,然后通過(guò)串口查看節(jié)點(diǎn)的路由信息和數(shù)據(jù)的轉(zhuǎn)發(fā)情況。

3.1 路由發(fā)現(xiàn)機(jī)制

源節(jié)點(diǎn)發(fā)起尋找目的節(jié)點(diǎn)的路由發(fā)現(xiàn)過(guò)程,中間節(jié)點(diǎn)收到RREQ后,檢查自身是否有到達(dá)目的節(jié)點(diǎn)的有效路由,如果有,則回復(fù)RREP;如果沒有,則繼續(xù)廣播RREQ,如圖5所示。

多跳路由發(fā)現(xiàn)如圖6和圖7所示,節(jié)點(diǎn)2在收到節(jié)點(diǎn)4發(fā)來(lái)的RREQ后,更新到源節(jié)點(diǎn)(節(jié)點(diǎn)4)的路由,同時(shí)在路由表查找到目的節(jié)點(diǎn)的有效路由,然后向節(jié)點(diǎn)4回復(fù)RREP。節(jié)點(diǎn)4收到節(jié)點(diǎn)2返回的RREP,添加相應(yīng)路由,將節(jié)點(diǎn)2作為到目的節(jié)點(diǎn)(節(jié)點(diǎn)1)的下一跳節(jié)點(diǎn)。該測(cè)試表明本系統(tǒng)實(shí)現(xiàn)了AODV路由協(xié)議的RREQ轉(zhuǎn)發(fā)機(jī)制和中間路由回復(fù)機(jī)制,節(jié)點(diǎn)4獲得到達(dá)目的節(jié)點(diǎn)的路由。

3.2 數(shù)據(jù)包的發(fā)送和轉(zhuǎn)發(fā)

將6個(gè)節(jié)點(diǎn)隔開一定距離布置,節(jié)點(diǎn)1作為sink節(jié)點(diǎn),其余5個(gè)節(jié)點(diǎn)建立到達(dá)節(jié)點(diǎn)1的路由,向sink節(jié)點(diǎn)發(fā)送數(shù)據(jù),中間節(jié)點(diǎn)同時(shí)負(fù)責(zé)轉(zhuǎn)發(fā)其他的節(jié)點(diǎn)的數(shù)據(jù),圖8是組網(wǎng)完成后的拓?fù)鋱D。

組網(wǎng)拓?fù)鋱D源節(jié)點(diǎn)(節(jié)點(diǎn)3)發(fā)起查找目的節(jié)點(diǎn)(節(jié)點(diǎn)1)路由發(fā)現(xiàn)過(guò)程,在建立路由之后(3→4→2→1),向下一跳節(jié)點(diǎn)(節(jié)點(diǎn)4)發(fā)送數(shù)據(jù)包,如圖9所示,中繼節(jié)點(diǎn)(節(jié)點(diǎn)2,節(jié)點(diǎn)4)轉(zhuǎn)發(fā)數(shù)據(jù)包如圖10~圖12所示。在圖12中,目的節(jié)點(diǎn)收到節(jié)點(diǎn)2轉(zhuǎn)發(fā)的來(lái)自節(jié)點(diǎn)3的數(shù)據(jù)。從該測(cè)試結(jié)果看出系統(tǒng)具備AODV協(xié)議的路由發(fā)現(xiàn)、路由表查找、數(shù)據(jù)包的轉(zhuǎn)發(fā)等基本功能。

4 結(jié) 語(yǔ)

本文介紹了無(wú)線傳感器網(wǎng)絡(luò)硬件節(jié)點(diǎn)和TinyOS操作系統(tǒng)的結(jié)構(gòu),根據(jù)系統(tǒng)所采用的硬件將TinyOS操作系統(tǒng)移植至8051平臺(tái),同時(shí)添加系統(tǒng)所需的IO,Timer,UART,RF等組件。這些組件提供了AODV路由協(xié)議所需要的IO控制、定時(shí)器、射頻收發(fā)等功能。通過(guò)測(cè)試AODV協(xié)議的路由發(fā)現(xiàn)和多跳轉(zhuǎn)發(fā)等機(jī)制驗(yàn)證了所移植組件和路由協(xié)議實(shí)現(xiàn)的正確性。

參 考 文 獻(xiàn)

[1] 石軍鋒,鐘先信,陳帥,等.無(wú)線傳感器網(wǎng)絡(luò)結(jié)構(gòu)及特點(diǎn)分析[J].重慶大學(xué)學(xué)報(bào):自然科學(xué)版,2005,28(2):1720.

[2] 蘆東昕,徐文龍,王利存.無(wú)線傳感器網(wǎng)絡(luò)[J].工業(yè)控制計(jì)算機(jī),2005,18(4):2728.

[3] TI. CC2530 datasheet[EB/OL].[20100203]. http://wwws.ti.com/sc/techlit/swrs081.

[4] 孫利民,李建中,陳渝,等.無(wú)線傳感器網(wǎng)絡(luò)[M].北京:清華大學(xué)出版社,2009.

[5] Anon. TinyOS latest news \\[EB/OL\\]. \\[20100721\\]. http://www.tinyos.net.

[6] SOHRABI K, GAO J, AILAWADHI V, et al. Protocols for selforganization of a wireless sensor network \\[J\\]. IEEE Personal Communications, 2000, 7(5): 1627.

[7] 程龍,楊波.無(wú)線傳感器網(wǎng)絡(luò)操作系統(tǒng)TinyOS的移植[J].計(jì)算機(jī)科學(xué),2011,38(10A):323325.

[8] LEOPOLD M. Creating a new paltform for TinyOS 2.x \\[EB/OL\\]. \\[20070906\\]. http://www.tinyos.net/tinyos2.1.0/doc/html/tep121.html.

[9] PERKINS C, BELDINGROYER E, DAS S. Ad hoc on demand distance vector routing \\[EB/OL\\]. \\[20030701\\]. http://en.wikipedia.org/wiki/Ad_hoc_OnDemand_Distance_Vector_Routing.

[10] 顏庭莘,孫利民.TinyOS路由協(xié)議原理及性能評(píng)估[J].計(jì)算機(jī)工程,2007,33(1):112114.

作者簡(jiǎn)介: 曾志宏 男,1985年出生,福建漳平人,碩士研究生。主要從事無(wú)線通信研究。

楊 琦 男,1977年,福建泉州人,博士,助理教授,碩士生導(dǎo)師。主要研究方向?yàn)闊o(wú)線通信網(wǎng)絡(luò)。2012年5月1日第35卷第9期

主站蜘蛛池模板: 97视频在线观看免费视频| 日韩高清一区 | 天天操精品| 亚洲精品视频免费观看| 国产在线小视频| 香蕉色综合| 在线观看国产网址你懂的| 国产午夜不卡| 野花国产精品入口| 日本亚洲欧美在线| 国产精品美女在线| a毛片免费观看| 午夜精品久久久久久久2023| 国产微拍精品| 亚洲二区视频| 色偷偷一区| 免费一极毛片| 91精品视频在线播放| 亚洲一级毛片免费观看| 青青草欧美| 亚洲浓毛av| 亚洲性视频网站| 亚洲va视频| 午夜无码一区二区三区| 国产精品网址在线观看你懂的| 99成人在线观看| 91精品国产自产在线观看| 亚洲人成网站色7799在线播放| 凹凸精品免费精品视频| 日韩a在线观看免费观看| 亚洲中文无码h在线观看| 99视频全部免费| 免费黄色国产视频| 人妻免费无码不卡视频| 一级成人a做片免费| 999福利激情视频| 熟女视频91| 99re在线观看视频| 成人一级免费视频| 99视频在线看| 夜色爽爽影院18禁妓女影院| 欧美日韩亚洲国产| 亚洲婷婷在线视频| 国产精品欧美激情| 国产色网站| 扒开粉嫩的小缝隙喷白浆视频| 欧美亚洲欧美区| 国产成人亚洲综合A∨在线播放| 国产丝袜啪啪| 国产午夜人做人免费视频中文| 亚洲中文字幕久久无码精品A| 中国国产A一级毛片| 无码高潮喷水专区久久| 91欧洲国产日韩在线人成| 大香网伊人久久综合网2020| 日本91视频| 色综合五月| 国产美女在线观看| 91福利一区二区三区| 成人国产三级在线播放| 亚洲第一网站男人都懂| 国产精品刺激对白在线| 98精品全国免费观看视频| 无码久看视频| 五月综合色婷婷| 精品免费在线视频| 麻豆国产原创视频在线播放| 成人在线观看不卡| 亚洲色图另类| 亚洲免费三区| 国产一区二区三区免费| 成人在线观看不卡| 色网站在线免费观看| lhav亚洲精品| 国产拍在线| 国产精品女同一区三区五区| 色综合天天操| 黄色污网站在线观看| 久草性视频| 免费人成视网站在线不卡| 久久精品视频亚洲| 国产精品大尺度尺度视频|