国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

TinyOS在CC2530上的移植

2013-09-07 02:51張金榜何秀春
電子技術(shù)應(yīng)用 2013年7期
關(guān)鍵詞:C語言串口數(shù)據(jù)包

林 語,張金榜,何秀春,劉 軍

(1.武警工程大學(xué) 研究生管理大隊,陜西 西安 710086;2.武警警官學(xué)院 信息工程系,四川 成都 610213;3.武警工程大學(xué) 信息工程系,陜西 西安 710086)

無線傳感器網(wǎng)絡(luò)WSN(Wireless Sensor Network)是集傳感器、嵌入式、分布式信息處理等技術(shù)于一體的與應(yīng)用相關(guān)的無結(jié)構(gòu)網(wǎng)絡(luò)。它由大量體積較小、能源受限且具有一定計算、存儲和無線通信能力的傳感器節(jié)點組成,已廣泛應(yīng)用于戰(zhàn)場態(tài)勢感知、遠程醫(yī)療監(jiān)護、環(huán)境監(jiān)測等領(lǐng)域。由于傳感器節(jié)點的硬件資源有限,因此,WSN節(jié)點硬件平臺及操作系統(tǒng)的選擇與實現(xiàn)是兩個重要的研究課題[1]。

CC2530芯片是TI公司推出的用于IEEE 802.15.4的真正的片上系統(tǒng)解決方案。它集成了微處理器、存儲器和射頻模塊,只需要極少的外部元件就可應(yīng)用于其他電路設(shè)計。CC2530具有集成度高、功耗低、體積小、成本低、電路結(jié)構(gòu)簡單、接口豐富的特點,能夠滿足傳感器節(jié)點在數(shù)據(jù)采集、處理與無線傳輸時對處理器的需求,CC2530已成為無線傳感器網(wǎng)絡(luò)節(jié)點硬件平臺設(shè)計的首選。TinyOS(TinyMicro Threading Operation System)是一個開源微型嵌入式操作系統(tǒng),是針對WSN節(jié)點硬件資源受限、并發(fā)性高等問題而量身定做的操作系統(tǒng)。TinyOS的代碼量小且高效,具有極其低的資源消耗,已成為WSN主流的操作系統(tǒng)。

由于TinyOS還不支持CC2530,所以在該平臺上開發(fā)基于TinyOS的應(yīng)用程序前,需將TinyOS移植到CC2530上,使其支持該平臺。因此,實現(xiàn)TinyOS在CC2530上的移植能為WSN提供更多的平臺選擇,具有重要的應(yīng)用價值。

1 移植的可行性

對TinyOS層次性的架構(gòu)模型研究發(fā)現(xiàn),其移植性的實現(xiàn)直接與硬件抽象封裝層相關(guān),該層組件完成物理硬件到TinyOS組件模型的映射。TinyOS硬件抽象層可進一步分成如圖1所示的層次結(jié)構(gòu)[2]。硬件抽象層明確了每一層的功能,每層依賴于下層提供的接口,越往上層對硬件的依賴性越小[3]。通過對TinyOS的進一步抽象,使得各層的組件可實現(xiàn)對物理硬件的不同程度封裝和屏蔽,有區(qū)別地實現(xiàn)硬件平臺和上層組件的隔離,不同層上的組件只完成特定功能,增強了TinyOS的移植性。使得TinyOS移植時只需要修改、設(shè)計相應(yīng)的組件即可。

圖1 TinyOS硬件抽象層層次結(jié)構(gòu)圖

2 移植準備

2.1 修改編譯工具鏈

TinyOS和基于TinyOS的應(yīng)用程序均使用nesC語言編寫,生成以“.nc”為后綴的源文件,它經(jīng)過TinyOS自帶的NCC編譯器編譯后生成app.c文件。它的部分語法與KEIL的語法不兼容,是不能被KEIL直接編譯到8051平臺上運行的,因此需要對不兼容的語法進行修改。而app.c代碼較多,人工修改不僅費時費力,而且極易出錯[4],所以本文采用perl語言編寫語法編輯腳本Mangle script來實現(xiàn)app.c文件與KEIL的耦合,將app.c文件轉(zhuǎn)換成app_Mangled.c文件,作為KEIL編譯器的輸入,最終生成app.hex文件。具體編譯過程如圖2所示。

圖2 nesC源文件編譯過程

2.2 搭建CC2530平臺

搭建CC2530平臺的目的是為TinyOS組件的移植和應(yīng)用程序的編譯提供編譯參數(shù)和聲明環(huán)境變量信息。搭建CC2530平臺需要以下4個步驟:

(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平臺配置編譯環(huán)境,讓TinyOS知道并支持所創(chuàng)建的平臺。

(3)在/opt/tinyos-2.x/support/make/mcs51目錄下創(chuàng)建mcs51.rules文件。mcs51.rules的作用是解析命令參數(shù)、設(shè)置編譯路徑、提取和指向目標平臺。

(4)在/opt/tinyos-2.x/tos/chips/mcs51目錄下創(chuàng)建mcs51hardware.h文件和McuSleepC.nc文件。

3 移植實現(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組件是一個定時器組件,其Timer接口用來觸發(fā)事件。在Timer組件移植時,先根據(jù)CC2530芯片內(nèi)部定時器部分數(shù)據(jù)資料定義各層需要定制的接口和組件列表;然后用nesC語言編寫上述各層列表中定義的接口、組件的代碼和timer.h文件,并一起存放到/opt/tinyos-2.x/tos/chips/CC2530目錄下的timer文件夾中。

(2)Adc組件的移植。Adc組件是一個具有模/數(shù)轉(zhuǎn)換功能的組件,它的AdcControl接口用來控制Adc組件的開始和關(guān)閉;Read接口提供讀取模數(shù)轉(zhuǎn)換結(jié)果的功能。用nesC語言編寫各層接口、組件代碼和Adc.h文件,并存放到/opt/tinyos-2.x/tos/chips/CC2530目錄下的adc文件夾中。

(3)Radio組件的移植。Radio組件是TinyOS的射頻組件,提供Packet、Receive、AMSend和SpiltControl接口。Packet用來實現(xiàn)數(shù)據(jù)包的管理,Receive具有數(shù)據(jù)包的接收功能,AMSend具有發(fā)送數(shù)據(jù)包的功能,SpiltControl用來控制天線的狀態(tài),負責天線的開啟和關(guān)閉。用nesC語言編寫各層接口和組件的代碼和Radio.h文件,并一起存放到/opt/tinyos-2.x/tos/chips/CC2530目錄下的radio文件夾中。

(4)Uart組件的移植。Uart組件提供模塊組件Hal-CC2530SimpleUartP和配置組件HalCC2530SimpleUartC,通過Init接口實現(xiàn)Uart組件的初始化;通過SerialByteComm接口實現(xiàn)該異步串行接收和轉(zhuǎn)發(fā)的功能。用nesC語言實現(xiàn)各層接口和組件文件,并存放到/opt/tinyos-2.x/tos/chips/CC2530目錄下的uart文件夾中。

(5)I/O組件的移植。I/O組件具有GeneralIO口的配置功能,可將端口配置成輸入或輸出,允許置位和清零,該功能由HplCC2530GeneralIOC組件實現(xiàn),它包含了io8051.h文件和ioCC2530.h文件。用nesC語言實現(xiàn)各層接口和組件文件,并存放到/opt/tinyos-2.x/tos/chips/CC2530目錄下的pins文件夾中。

(6)Flash組件的移植。Flash組件通過SimpleFlash接口實現(xiàn)對Flash的讀、寫和刪除操作。用nesC語言實現(xiàn)各層接口和組件文件,并存放到/opt/tinyos-2.x/tos/chips/CC2530目錄下的flash文件夾中。

4 移植測試

CC2530平臺TinyOS的測試是對所移植組件的相應(yīng)功能進行測試。串口傳輸設(shè)置:波特率57 600 b/s,校驗位為無,數(shù)據(jù)位為8 bit,停止位為1 bit。

本文以Radio組件測試為例介紹對Timer組件、Adc組件、Radio組件、I/O組件和Flash組件的測試環(huán)境、測試程序、測試過程,并分析了測試結(jié)果。

(1)測試環(huán)境。測試過程使用基于CC2530的節(jié)點2個,一個節(jié)點獨立放置,另外一個節(jié)點通過串口與PC連接,兩個節(jié)點相距15 m。

(2)測試程序。獨立放置節(jié)點的測試程序是Radio-SendTestApp,它在Radio組件、Timer組件初始化完成后,啟動Radio組件,定時發(fā)送數(shù)據(jù)包;與PC相連節(jié)點的測試程序是RadioReceiveTestApp,它將接收數(shù)據(jù)包并將數(shù)據(jù)包通過串口傳送至PC;PC上運行串口調(diào)試助手,觀察是否有數(shù)據(jù)上傳。

(3)測試過程。程序編譯、下載至節(jié)點后,按復(fù)位開關(guān),配置好串口調(diào)試工具,觀察串口調(diào)試工具的輸出。

(4)測試結(jié)果及分析。Radio組件的測試結(jié)果如圖3所示。串口調(diào)試顯示能正常接收到數(shù)據(jù)包,表明Radio組件的移植是正確的。

圖3 Radio組件測試結(jié)果

按照Radio的測試過程,對Timer、Adc、Uart、I/O和Flash組件進行了測試。結(jié)果表明,這些組件均能正常工作,實現(xiàn)了TinyOS對CC2530平臺的支持。

本文針對TinyOS不支持CC2530平臺的問題,在分析TinyOS層次結(jié)構(gòu)模型的基礎(chǔ)上,確定了移植的可行性;通過修改編譯工具鏈、搭建CC2530平臺、編寫硬件抽象層各層的組件和接口文件,完成了TinyOS在CC2530上的移植。驗證結(jié)果表明,Timer組件、Adc組件、Radioz組件、Uart組件、I/O組件和Flash組件均可正常工作。TinyOS在CC2530平臺上的移植,為其他硬件平臺的移植提供了參考,為WSN和TinyOS的研究與應(yīng)用提供了更多的平臺選擇。

[1]錢開國,桑楠.基于TinyOS的無線傳感器網(wǎng)絡(luò)操作系統(tǒng)移植性研究與實現(xiàn)[C].第二屆全國通信理論與新技術(shù)學(xué)術(shù)大會會議論文集,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]錢開國.無線傳感器網(wǎng)絡(luò)嵌入式操作系統(tǒng)的研究和應(yīng)用[D].成都:電子科技大學(xué),2010.

[4]莊雄,楊永明,丁唯.基于CC2431的無線傳感器網(wǎng)絡(luò)節(jié)點設(shè)計[J].電子技術(shù)應(yīng)用,2008,34(6):98-101.

[5]李響.無線傳感器網(wǎng)絡(luò)節(jié)點嵌入式操作系統(tǒng)TinyOS的研究與移植[D].成都:電子科技大學(xué),2008.

[6]錢開國.無線傳感器網(wǎng)絡(luò)嵌入式操作系統(tǒng)的研究和應(yīng)用[D].成都:電子科技大學(xué),2010.

猜你喜歡
C語言串口數(shù)據(jù)包
二維隱蔽時間信道構(gòu)建的研究*
淺談AB PLC串口跟RFID傳感器的通訊應(yīng)用
民用飛機飛行模擬機數(shù)據(jù)包試飛任務(wù)優(yōu)化結(jié)合方法研究
基于Visual Studio Code的C語言程序設(shè)計實踐教學(xué)探索
51單片機C語言入門方法
SmartSniff
基于C語言的計算機軟件編程
高職高專院校C語言程序設(shè)計教學(xué)改革探索
數(shù)字電源內(nèi)部數(shù)據(jù)傳輸?shù)拇谕ㄐ欧椒▽崿F(xiàn)
USB接口的多串口數(shù)據(jù)并行接收方法探索