文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2013)07-0025-03
無(wú)線傳感器網(wǎng)絡(luò)WSN(Wireless Sensor Network)是集傳感器、嵌入式、分布式信息處理等技術(shù)于一體的與應(yīng)用相關(guān)的無(wú)結(jié)構(gòu)網(wǎng)絡(luò)。它由大量體積較小、能源受限且具有一定計(jì)算、存儲(chǔ)和無(wú)線通信能力的傳感器節(jié)點(diǎn)組成,已廣泛應(yīng)用于戰(zhàn)場(chǎng)態(tài)勢(shì)感知、遠(yuǎn)程醫(yī)療監(jiān)護(hù)、環(huán)境監(jiān)測(cè)等領(lǐng)域。由于傳感器節(jié)點(diǎn)的硬件資源有限,因此,WSN節(jié)點(diǎn)硬件平臺(tái)及操作系統(tǒng)的選擇與實(shí)現(xiàn)是兩個(gè)重要的研究課題[1]。
CC2530芯片是TI公司推出的用于IEEE 802.15.4的真正的片上系統(tǒng)解決方案。它集成了微處理器、存儲(chǔ)器和射頻模塊,只需要極少的外部元件就可應(yīng)用于其他電路設(shè)計(jì)。CC2530具有集成度高、功耗低、體積小、成本低、電路結(jié)構(gòu)簡(jiǎn)單、接口豐富的特點(diǎn),能夠滿足傳感器節(jié)點(diǎn)在數(shù)據(jù)采集、處理與無(wú)線傳輸時(shí)對(duì)處理器的需求,CC2530已成為無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)硬件平臺(tái)設(shè)計(jì)的首選。TinyOS(TinyMicro Threading Operation System)是一個(gè)開(kāi)源微型嵌入式操作系統(tǒng),是針對(duì)WSN節(jié)點(diǎn)硬件資源受限、并發(fā)性高等問(wèn)題而量身定做的操作系統(tǒng)。TinyOS的代碼量小且高效,具有極其低的資源消耗,已成為WSN主流的操作系統(tǒng)。
由于TinyOS還不支持CC2530,所以在該平臺(tái)上開(kāi)發(fā)基于TinyOS的應(yīng)用程序前,需將TinyOS移植到CC2530上,使其支持該平臺(tái)。因此,實(shí)現(xiàn)TinyOS在CC2530上的移植能為WSN提供更多的平臺(tái)選擇,具有重要的應(yīng)用價(jià)值。
1 移植的可行性
對(duì)TinyOS層次性的架構(gòu)模型研究發(fā)現(xiàn),其移植性的實(shí)現(xiàn)直接與硬件抽象封裝層相關(guān),該層組件完成物理硬件到TinyOS組件模型的映射。TinyOS硬件抽象層可進(jìn)一步分成如圖1所示的層次結(jié)構(gòu)[2]。硬件抽象層明確了每一層的功能,每層依賴(lài)于下層提供的接口,越往上層對(duì)硬件的依賴(lài)性越小[3]。通過(guò)對(duì)TinyOS的進(jìn)一步抽象,使得各層的組件可實(shí)現(xiàn)對(duì)物理硬件的不同程度封裝和屏蔽,有區(qū)別地實(shí)現(xiàn)硬件平臺(tái)和上層組件的隔離,不同層上的組件只完成特定功能,增強(qiáng)了TinyOS的移植性。使得TinyOS移植時(shí)只需要修改、設(shè)計(jì)相應(yīng)的組件即可。
2 移植準(zhǔn)備
2.1 修改編譯工具鏈
TinyOS和基于TinyOS的應(yīng)用程序均使用nesC語(yǔ)言編寫(xiě),生成以“.nc”為后綴的源文件,它經(jīng)過(guò)TinyOS自帶的NCC編譯器編譯后生成app.c文件。它的部分語(yǔ)法與KEIL的語(yǔ)法不兼容,是不能被KEIL直接編譯到8051平臺(tái)上運(yùn)行的,因此需要對(duì)不兼容的語(yǔ)法進(jìn)行修改。而app.c代碼較多,人工修改不僅費(fèi)時(shí)費(fèi)力,而且極易出錯(cuò)[4],所以本文采用perl語(yǔ)言編寫(xiě)語(yǔ)法編輯腳本Mangle script來(lái)實(shí)現(xiàn)app.c文件與KEIL的耦合,將app.c文件轉(zhuǎn)換成app_Mangled.c文件,作為KEIL編譯器的輸入,最終生成app.hex文件。具體編譯過(guò)程如圖2所示。
2.2 搭建CC2530平臺(tái)
搭建CC2530平臺(tái)的目的是為T(mén)inyOS組件的移植和應(yīng)用程序的編譯提供編譯參數(shù)和聲明環(huán)境變量信息。搭建CC2530平臺(tái)需要以下4個(gè)步驟:
(1)在/opt/tinyos-2.x/tos/platforms/CC2530目錄下創(chuàng)建.platform文件、hardware.h文件、PlatformP.nc和PlatformC.nc文件[4]。
(2)在/opt/tinyos-2.x/support/make目錄下創(chuàng)建.target文件。.target文件為CC2530平臺(tái)配置編譯環(huán)境,讓TinyOS知道并支持所創(chuàng)建的平臺(tái)。
(3)在/opt/tinyos-2.x/support/make/mcs51目錄下創(chuàng)建mcs51.rules文件。mcs51.rules的作用是解析命令參數(shù)、設(shè)置編譯路徑、提取和指向目標(biāo)平臺(tái)。
(4)在/opt/tinyos-2.x/tos/chips/mcs51目錄下創(chuàng)建mcs51hardware.h文件和McuSleepC.nc文件。
3 移植實(shí)現(xiàn)
組件移植是TinyOS移植的核心,包括CC2530寄存器聲明和組件移植[5-6]。
3.1 創(chuàng)建ioCC2530.h文件
在/opt/tinyos-2.x/tos/chips/CC2530目錄下創(chuàng)建ioCC2530.h文件。
3.2 組件移植
(1)Timer組件的移植。Timer組件是一個(gè)定時(shí)器組件,其Timer接口用來(lái)觸發(fā)事件。在Timer組件移植時(shí),先根據(jù)CC2530芯片內(nèi)部定時(shí)器部分?jǐn)?shù)據(jù)資料定義各層需要定制的接口和組件列表;然后用nesC語(yǔ)言編寫(xiě)上述各層列表中定義的接口、組件的代碼和timer.h文件,并一起存放到/opt/tinyos-2.x/tos/chips/CC2530目錄下的timer文件夾中。
(2)Adc組件的移植。Adc組件是一個(gè)具有模/數(shù)轉(zhuǎn)換功能的組件,它的AdcControl接口用來(lái)控制Adc組件的開(kāi)始和關(guān)閉;Read接口提供讀取模數(shù)轉(zhuǎn)換結(jié)果的功能。用nesC語(yǔ)言編寫(xiě)各層接口、組件代碼和Adc.h文件,并存放到/opt/tinyos-2.x/tos/chips/CC2530目錄下的adc文件夾中。
(3)Radio組件的移植。Radio組件是TinyOS的射頻組件,提供Packet、Receive、AMSend和SpiltControl接口。Packet用來(lái)實(shí)現(xiàn)數(shù)據(jù)包的管理,Receive具有數(shù)據(jù)包的接收功能,AMSend具有發(fā)送數(shù)據(jù)包的功能,SpiltControl用來(lái)控制天線的狀態(tài),負(fù)責(zé)天線的開(kāi)啟和關(guān)閉。用nesC語(yǔ)言編寫(xiě)各層接口和組件的代碼和Radio.h文件,并一起存放到/opt/tinyos-2.x/tos/chips/CC2530目錄下的radio文件夾中。
(4)Uart組件的移植。Uart組件提供模塊組件HalCC2530SimpleUartP和配置組件HalCC2530SimpleUartC,通過(guò)Init接口實(shí)現(xiàn)Uart組件的初始化;通過(guò)SerialByteComm接口實(shí)現(xiàn)該異步串行接收和轉(zhuǎn)發(fā)的功能。用nesC語(yǔ)言實(shí)現(xiàn)各層接口和組件文件,并存放到/opt/tinyos-2.x/tos/chips/CC2530目錄下的uart文件夾中。
(5)I/O組件的移植。I/O組件具有GeneralIO口的配置功能,可將端口配置成輸入或輸出,允許置位和清零,該功能由HplCC2530GeneralIOC組件實(shí)現(xiàn),它包含了io8051.h文件和ioCC2530.h文件。用nesC語(yǔ)言實(shí)現(xiàn)各層接口和組件文件,并存放到/opt/tinyos-2.x/tos/chips/CC2530目錄下的pins文件夾中。
(6)Flash組件的移植。Flash組件通過(guò)SimpleFlash接口實(shí)現(xiàn)對(duì)Flash的讀、寫(xiě)和刪除操作。用nesC語(yǔ)言實(shí)現(xiàn)各層接口和組件文件,并存放到/opt/tinyos-2.x/tos/chips/CC2530目錄下的flash文件夾中。
4 移植測(cè)試
CC2530平臺(tái)TinyOS的測(cè)試是對(duì)所移植組件的相應(yīng)功能進(jìn)行測(cè)試。串口傳輸設(shè)置:波特率57 600 b/s,校驗(yàn)位為無(wú),數(shù)據(jù)位為8 bit,停止位為1 bit。
本文以Radio組件測(cè)試為例介紹對(duì)Timer組件、Adc組件、Radio組件、I/O組件和Flash組件的測(cè)試環(huán)境、測(cè)試程序、測(cè)試過(guò)程,并分析了測(cè)試結(jié)果。
(1)測(cè)試環(huán)境。測(cè)試過(guò)程使用基于CC2530的節(jié)點(diǎn)2個(gè),一個(gè)節(jié)點(diǎn)獨(dú)立放置,另外一個(gè)節(jié)點(diǎn)通過(guò)串口與PC連接,兩個(gè)節(jié)點(diǎn)相距15 m。
(2)測(cè)試程序。獨(dú)立放置節(jié)點(diǎn)的測(cè)試程序是Radio-
SendTestApp,它在Radio組件、Timer組件初始化完成后,啟動(dòng)Radio組件,定時(shí)發(fā)送數(shù)據(jù)包;與PC相連節(jié)點(diǎn)的測(cè)試程序是RadioReceiveTestApp,它將接收數(shù)據(jù)包并將數(shù)據(jù)包通過(guò)串口傳送至PC;PC上運(yùn)行串口調(diào)試助手,觀察是否有數(shù)據(jù)上傳。
(3)測(cè)試過(guò)程。程序編譯、下載至節(jié)點(diǎn)后,按復(fù)位開(kāi)關(guān),配置好串口調(diào)試工具,觀察串口調(diào)試工具的輸出。
(4)測(cè)試結(jié)果及分析。Radio組件的測(cè)試結(jié)果如圖3所示。串口調(diào)試顯示能正常接收到數(shù)據(jù)包,表明Radio組件的移植是正確的。
按照Radio的測(cè)試過(guò)程,對(duì)Timer、Adc、Uart、I/O和Flash組件進(jìn)行了測(cè)試。結(jié)果表明,這些組件均能正常工作,實(shí)現(xiàn)了TinyOS對(duì)CC2530平臺(tái)的支持。
本文針對(duì)TinyOS不支持CC2530平臺(tái)的問(wèn)題,在分析TinyOS層次結(jié)構(gòu)模型的基礎(chǔ)上,確定了移植的可行性;通過(guò)修改編譯工具鏈、搭建CC2530平臺(tái)、編寫(xiě)硬件抽象層各層的組件和接口文件,完成了TinyOS在CC2530上的移植。驗(yàn)證結(jié)果表明,Timer組件、Adc組件、Radioz組件、Uart組件、I/O組件和Flash組件均可正常工作。TinyOS在CC2530平臺(tái)上的移植,為其他硬件平臺(tái)的移植提供了參考,為WSN和TinyOS的研究與應(yīng)用提供了更多的平臺(tái)選擇。
參考文獻(xiàn)
[1] 錢(qián)開(kāi)國(guó),桑楠.基于TinyOS的無(wú)線傳感器網(wǎng)絡(luò)操作系統(tǒng)移植性研究與實(shí)現(xiàn)[C].第二屆全國(guó)通信理論與新技術(shù)學(xué)術(shù)大會(huì)會(huì)議論文集,2008:131.
[2] HANDZISKI V,POLASTRE J,HAUER J H,et al.Flexible hardware abstraction for wireless sensor networks[C].In:Proceeding of the 2nd European Workshop on Wireless Sensor Networks(EWSN2005),Turkey,2005.
[3] 錢(qián)開(kāi)國(guó).無(wú)線傳感器網(wǎng)絡(luò)嵌入式操作系統(tǒng)的研究和應(yīng)用[D].成都:電子科技大學(xué),2010.
[4] 莊雄,楊永明,丁唯.基于CC2431的無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2008,34(6):98-101.
[5] 李響.無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)嵌入式操作系統(tǒng)TinyOS的研究與移植[D].成都:電子科技大學(xué),2008.
[6] 錢(qián)開(kāi)國(guó).無(wú)線傳感器網(wǎng)絡(luò)嵌入式操作系統(tǒng)的研究和應(yīng)用[D].成都:電子科技大學(xué),2010.