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