周 鵬 燕 斌
(江蘇農(nóng)牧科技職業(yè)學(xué)院農(nóng)業(yè)物聯(lián)網(wǎng)系,江蘇 泰州 225300)
?
TinyOS在MSP430F149上的移植與應(yīng)用
周 鵬 燕 斌
(江蘇農(nóng)牧科技職業(yè)學(xué)院農(nóng)業(yè)物聯(lián)網(wǎng)系,江蘇 泰州 225300)
無線傳感器網(wǎng)絡(luò)操作系統(tǒng)TinyOS在生產(chǎn)和科研中有著廣泛的應(yīng)用前景,目前全面支持的節(jié)點(diǎn)平臺只有TelosB、MicaZ等少數(shù)幾種。為支持新設(shè)計(jì)的硬件平臺,需要實(shí)現(xiàn)TinyOS在由MSP430F149和CC2420組成的新平臺上的移植。在分析了TinyOS系統(tǒng)的體系結(jié)構(gòu)和編程機(jī)制后,提出了具體的移植方案,并成功實(shí)現(xiàn)了該系統(tǒng)在新平臺上的移植。試驗(yàn)結(jié)果表明,將TinyOS系統(tǒng)移植到新平臺后,各組件均能穩(wěn)定地工作。
無線傳感器網(wǎng)絡(luò) CTP協(xié)議 嵌入式系統(tǒng) 射頻模塊 微控制器 TinyOS MSP430F149
無線傳感器網(wǎng)絡(luò)[1]由大量帶有感知能力、簡單信息處理能力及無線組網(wǎng)能力的廉價(jià)智能節(jié)點(diǎn)組成,其部署在某一區(qū)域,以實(shí)現(xiàn)對該區(qū)域特定信息的采集、傳輸與控制。為了實(shí)現(xiàn)對硬件資源的合理利用、多任務(wù)的有效管理和系統(tǒng)應(yīng)用程序的便捷開發(fā),引入嵌入式操作系統(tǒng)是一個(gè)理想的方案。然而無線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)具有資源有限、運(yùn)行功耗低等特點(diǎn),傳統(tǒng)嵌入式操作系統(tǒng)很難滿足這些需求。因此,一些科研機(jī)構(gòu)研究開發(fā)了專用于無線傳感器網(wǎng)絡(luò)的操作系統(tǒng)[2],比較出色的操作系統(tǒng)有TinyOS、Contiki等。本文在以MSP430F149為核心的新平臺上,對TinyOS系統(tǒng)進(jìn)行了移植,編寫了基于CTP協(xié)議的程序,并進(jìn)行硬件節(jié)點(diǎn)的組網(wǎng)試驗(yàn)。
1.1 TinyOS操作系統(tǒng)的實(shí)現(xiàn)基礎(chǔ)
TinyOS是由美國加州大學(xué)伯克利分?;趎esC語言開發(fā)的一種無線傳感器網(wǎng)絡(luò)操作系統(tǒng)。該系統(tǒng)具有廣泛的科研和實(shí)用價(jià)值,在國防軍事、環(huán)境監(jiān)測等眾多領(lǐng)域均有應(yīng)用[3]。為了設(shè)計(jì)TinyOS操作系統(tǒng),開發(fā)人員采用了以下幾項(xiàng)技術(shù)[4]。
①組件化的編程機(jī)制。組件化編程允許應(yīng)用程序的設(shè)計(jì)人員將獨(dú)立組件通過各層配件文件進(jìn)行組合,在頂層配件文件中完成應(yīng)用程序的整體裝配。
②事件驅(qū)動(dòng)機(jī)制。TinyOS調(diào)度事件處理程序能快速響應(yīng)由外部事件產(chǎn)生的硬件中斷,因此TinyOS操作系統(tǒng)可以應(yīng)用于具有節(jié)點(diǎn)多、并發(fā)操作多等特點(diǎn)的無線傳感器網(wǎng)絡(luò)中。
③輕量級線程。應(yīng)用于無線傳感器網(wǎng)絡(luò)的硬件平臺往往不具有內(nèi)存保護(hù)機(jī)制,所有組件共享地址空間。采用輕量級線程及FIFO調(diào)度,使短小的并發(fā)任務(wù)能夠共享堆??臻g,并能實(shí)現(xiàn)任務(wù)間的快速切換。
④主動(dòng)消息通信。這是一種基于事件驅(qū)動(dòng)的高性能并行通信方式,應(yīng)用于TinyOS通信層關(guān)鍵協(xié)議。
以上幾種技術(shù)在軟件體系結(jié)構(gòu)上體現(xiàn)了一些已有的研究成果,使得TinyOS操作系統(tǒng)在存儲、處理能力有限的硬件平臺上,仍然能夠進(jìn)行大量信息的收集、處理及傳輸[5]。
TinyOS操作系統(tǒng)最早由C語言及匯編語言設(shè)計(jì)而成,經(jīng)廣泛應(yīng)用和深入研究,發(fā)現(xiàn)開發(fā)過程中采用C語言編寫應(yīng)用程序效率較低、使用不便。研究人員在C語言的基礎(chǔ)上進(jìn)行了一些擴(kuò)展,設(shè)計(jì)出一種支持組件化編程的nesC語言,此后TinyOS操作系統(tǒng)及其應(yīng)用程序均采用該語言進(jìn)行編寫。nesC語言中有組件、模塊、配件、接口等幾個(gè)重要的概念[6]。系統(tǒng)的應(yīng)用程序由配件捆綁的一系列組件所構(gòu)成,組件中又包含各種接口。接口是連接使用者和提供者之間的橋梁,具有雙向性。使用者通過命令調(diào)用提供者接口中所實(shí)現(xiàn)的功能,同時(shí)也要實(shí)現(xiàn)提供者接口中的事件函數(shù)。
1.2 TinyOS操作系統(tǒng)的體系結(jié)構(gòu)
TinyOS操作系統(tǒng)的體系結(jié)構(gòu)如圖1所示,主要包括:應(yīng)用層、系統(tǒng)核心及硬件層[7]。應(yīng)用層主要由應(yīng)用組件組成,系統(tǒng)核心由主組件、感知組件、執(zhí)行組件及通信組件組成,硬件層由硬件抽象組件組成。
圖1 系統(tǒng)體系結(jié)構(gòu)圖
應(yīng)用層根據(jù)具體的應(yīng)用場合編寫應(yīng)用程序,執(zhí)行組件、感知組件和通信組件為編寫的應(yīng)用程序提供相應(yīng)的接口。主組件在系統(tǒng)的初始階段完成對硬件及其他組件的初始化工作,并通過由其實(shí)現(xiàn)的一種簡單的FIFO調(diào)度器和輕量級線程技術(shù)來進(jìn)行系統(tǒng)層和應(yīng)用層的任務(wù)調(diào)度。硬件層對實(shí)際的硬件進(jìn)行抽象,TinyOS操作系統(tǒng)在具體平臺上移植的工作建立在對該層深入研究的基礎(chǔ)上。
整個(gè)硬件層可以劃分為硬件表示層(HPL)、硬件適配層(HAL)和硬件接口層(HIL),結(jié)構(gòu)如圖2所示。
圖2 硬件層結(jié)構(gòu)圖
在硬件層的3層結(jié)構(gòu)中,最低的子層為硬件表示層,該層通過操作硬件設(shè)備的寄存器來訪問硬件。硬件表示層之上為硬件適配層,作為連接的橋梁。硬件適配層對硬件表示層提供的接口進(jìn)行封裝,隱藏對硬件資源的復(fù)雜操作。從應(yīng)用程序開發(fā)者的角度來看,希望所編寫的應(yīng)用程序可以適用于各種硬件平臺。為了消除硬件平臺之間的差異性,硬件接口層要再次對硬件適配層封裝后的接口進(jìn)行抽象,使得應(yīng)用程序開發(fā)人員可以方便地調(diào)用該層提供的接口。
2.1 微控制器
節(jié)點(diǎn)硬件平臺一般由嵌入式微控制器、射頻芯片、傳感器和電源構(gòu)成,有的節(jié)點(diǎn)還包含存儲器。嵌入式微控制器是核心部件,負(fù)責(zé)處理、存儲傳感器所接收的數(shù)據(jù)信息,控制通信單元進(jìn)行數(shù)據(jù)的收發(fā)并操控執(zhí)行器的動(dòng)作。本系統(tǒng)采用TI公司推出的低功耗單片機(jī)MSP430F149作為節(jié)點(diǎn)的嵌入式微控制器。該芯片使用廣泛且性能卓越[8]。MSP430系列的單片機(jī)是16位單片機(jī),采用RISC結(jié)構(gòu),當(dāng)使用8 MHz晶振工作時(shí),指令速度可達(dá)8 MIPS。芯片采用低功耗設(shè)計(jì)方案,電源電壓采用1.8~3.6 V低電壓,在RAM數(shù)據(jù)保持方式下耗電僅0.1 μA/MIPS,活動(dòng)模式耗電250 μA/MIPS。節(jié)點(diǎn)在沒有工作任務(wù)時(shí)處于睡眠模式,以降低系統(tǒng)功耗。采用快速中斷請求喚醒CPU僅需6 μs,這使得節(jié)點(diǎn)既能保持低功耗的運(yùn)行模式,又能快速響應(yīng)外部事件請求。本文設(shè)計(jì)的硬件節(jié)點(diǎn)框圖如圖3所示。
圖3 節(jié)點(diǎn)硬件框圖
2.2 射頻模塊
射頻芯片可實(shí)現(xiàn)各個(gè)節(jié)點(diǎn)之間的無線通信和組網(wǎng)。CC2420是Chipcon公司推出的首款符合2.4 GHz IEEE802.15.4標(biāo)準(zhǔn)的射頻收發(fā)器,具有功耗低、性能穩(wěn)定的特點(diǎn)[9]。CC2420芯片既能實(shí)現(xiàn)點(diǎn)對點(diǎn)通信,又能實(shí)現(xiàn)組網(wǎng)功能,傳輸速率可達(dá)250 kbit/s。CC2420與微控制器MSP430F149的連接非常方便,關(guān)鍵引腳的連接示意圖如圖4所示。
圖4 MSP430F149與CC2420關(guān)鍵引腳連接圖
TinyOS操作系統(tǒng)的移植工作主要來自兩個(gè)方面:開發(fā)環(huán)境的搭建和TinyOS新平臺的搭建。
3.1 開發(fā)環(huán)境的搭建
基于TinyOS系統(tǒng)的應(yīng)用程序使用的編程語言是nesC,文件名均以.nc結(jié)尾。對于nesC程序的編譯,首先使用nesC編譯器進(jìn)行預(yù)編譯,得到普通的.c文件;然后再由具體硬件平臺的編譯器進(jìn)行編譯,得到最終燒寫到硬件節(jié)點(diǎn)的可執(zhí)行文件。
TinyOS系統(tǒng)應(yīng)用程序的編譯使用的是GNU Make,預(yù)編譯相關(guān)的文件在support/make文件夾中。主要文件有兩個(gè),一個(gè)是以.target為后綴的平臺配置文件,另一個(gè)則是在平臺上建立應(yīng)用程序的.rules文件。在應(yīng)用程序進(jìn)行編譯時(shí),編譯文件首先在設(shè)定好的路徑中搜索.target文件,在該文件中設(shè)置有與平臺有關(guān)的變量及平臺的名稱,具體內(nèi)容如下:
PLATFORM =yamp
MSP_MCU=msp430f149
$(callTOSMake_include_platform,msp)
yamp:$(BUILD_DEPS)
@:
3.2 TinyOS新平臺的搭建
本文搭建了名為yamp的TinyOS新平臺,新平臺使用的微控制器和射頻芯片分別為MSP430F149和CC2420。這兩款芯片目前已得到TinyOS的支持,所以省去了許多驅(qū)動(dòng)組件的編寫工作,只需把已有的平臺芯片相關(guān)代碼進(jìn)行整合與連接。具體步驟為:
①在tinyos-2.x/tos/chips目錄中,TinyOS提供了MSP430F149和CC2420等芯片的驅(qū)動(dòng)程序。對于MSP430系列的單片機(jī),驅(qū)動(dòng)程序提供了Timer、ADC、DMA、Flash等外圍部件的組件程序。
②在tinyos-2.x/tos/platforms中給出新平臺yamp的定義,這是移植工作的核心步驟,實(shí)現(xiàn)了各個(gè)分散模塊的連接整合工作。
在該目錄中必須創(chuàng)建以下文件:.platform、platform.h、hardware.h、PlatformC.nc、PlatformP.nc、PlatformLedsC.nc。其中比較重要的是.platform、PlatformC.nc、PlatformP.nc這三個(gè)文件。PlatformC.nc、PlatformP.nc文件提供Init接口,將yamp節(jié)點(diǎn)硬件平臺的初始化與啟動(dòng)工作與RealMain組件進(jìn)行連接。在.platform文件中,定義TinyOS在編譯鏈接過程中所需的編譯參數(shù)。platform文件的具體內(nèi)容為:
push( @includes,qw(
%T/chips/CC2420
%T/chips/msp430
%T/chips/msp430/adc12
%T/chips/msp430/dma
%T/chips/msp430/pins
%T/chips/msp430/timer
%T/chips/msp430/usart
%T/chips/msp430/sensors
%T/lib/timer
%T/lib/serial
%T/lib/power
) );
@opts =qw(
-gcc=msp430-gcc
-mmcu=msp430x149
-fnesc-target=msp430
-fnesc-no-debug
);
push @opts,"-fnesc-scheduler=TinySchedulerC,TinySchedulerC.TaskBasic,TaskBasic,TaskBasic,runTask,postTask" if !$with_scheduler_flag;
③射頻驅(qū)動(dòng)的實(shí)現(xiàn)基于TinyOS系統(tǒng)提供的兩個(gè)重要的庫,一個(gè)是通用射頻HIL組件庫rfxlink,另一個(gè)是網(wǎng)絡(luò)組件庫net。其分別存放于/tos/lib/rfxlink和/tos/lib/net中。設(shè)計(jì)人員只需提供部分HAL組件,就可以完成對整個(gè)TinyOS射頻驅(qū)動(dòng)的設(shè)計(jì)。
至此,新的yamp平臺已搭建完成,可以通過編譯NULL應(yīng)用程序來測試編譯環(huán)境是否構(gòu)建成功。
為了測試平臺移植方案的正確性及Timer組件、Uart組件、RF組件等組件是否均能正常工作,編寫了基于CTP數(shù)據(jù)傳輸協(xié)議[10]的測試程序。采用CTP協(xié)議編寫的程序,首先建立一棵以基站為根節(jié)點(diǎn)的匯聚樹,當(dāng)某節(jié)點(diǎn)有數(shù)據(jù)發(fā)送給基站節(jié)點(diǎn)時(shí),該節(jié)點(diǎn)將沿著匯聚樹發(fā)送數(shù)據(jù)給其上層節(jié)點(diǎn),直至把數(shù)據(jù)傳送到最頂層基站節(jié)點(diǎn)。
試驗(yàn)中,使用3個(gè)節(jié)點(diǎn)構(gòu)建一個(gè)星型網(wǎng)絡(luò),組網(wǎng)后非根節(jié)點(diǎn)在定時(shí)器的作用下,每隔1 s將消息內(nèi)容通過匯聚樹傳輸?shù)礁?jié)點(diǎn)一次。根節(jié)點(diǎn)將接收到的數(shù)據(jù)通過串口發(fā)送到PC上,PC上顯示根節(jié)點(diǎn)接收到的各個(gè)非根節(jié)點(diǎn)的消息內(nèi)容和源地址。
程序編寫好后,使用搭建好的編譯工具進(jìn)行編譯。然后運(yùn)行Lite FET-Pro430 Elprotronic程序,并將編譯生成的可執(zhí)行文件通過仿真器或BSL燒錄到MSP430F149中進(jìn)行測試。實(shí)際測試證明,該節(jié)點(diǎn)平臺在移植TinyOS操作系統(tǒng)后,可以穩(wěn)定地運(yùn)行。
本文介紹了TinyOS操作系統(tǒng)、nesC語言和節(jié)點(diǎn)硬件平臺,通過修改編譯工具、搭建yamp平臺、編寫硬件層的相關(guān)組件,完成了TinyOS在由MSP430F149和CC2420組成的新平臺上的移植。通過測試,驗(yàn)證了構(gòu)建的開發(fā)環(huán)境及使用的各相關(guān)組件均可正常工作,證明了新平臺移植TinyOS操作系統(tǒng)的可行性。后續(xù)能以該平臺為基礎(chǔ),進(jìn)行下一步的功能擴(kuò)充和性能完善,以增強(qiáng)該系統(tǒng)的實(shí)際應(yīng)用價(jià)值。這將對無線傳感器網(wǎng)絡(luò)今后的研究與應(yīng)用起到推進(jìn)作用。
[1] LEVIS P,GAY D.TinyOS programming[M].England:Cambridge University Press,2009:27-28.
[2] 吳小娜,王漫.無線傳感器網(wǎng)絡(luò)操作系統(tǒng)TinyOS 綜述[J].計(jì)算機(jī)與現(xiàn)代化,2011(2) :103-105.
[3] 潘皓,董齊芬,張貴軍,等.無線傳感器網(wǎng)絡(luò)操作系統(tǒng)TinyOS[M].北京:清華大學(xué)出版社,2011:8-10.
[4] 孫利民,李建中,陳渝,等.無線傳感器網(wǎng)絡(luò)[M].北京:清華大學(xué)出版社,2005:342-346.
[5] BURNS A,GREENE B R,MCGRATH M J,et al. SHIMMERTM - a wireless sensor platform for noninvasive biomedical research[J].IEEE Sensors Journal,2010,10( 9) :1527-1534.
[6] 魯琛,屈穩(wěn)太,楊祥龍,等.桃園中無線傳感網(wǎng)絡(luò)通信協(xié)議的改進(jìn)設(shè)計(jì)[J].農(nóng)業(yè)機(jī)械學(xué)報(bào),2014(7):260-266.
[7] 劉志斌,雷景生,杜海舟.基于TinyOS的用電監(jiān)測無線傳感器節(jié)點(diǎn)設(shè)計(jì)[J].上海電力學(xué)院學(xué)報(bào),2015(1):68-72.
[8] Texas Instruments.MSP430 TM Ultra-Low Power 16-Bit Microcontrollers[EB/OL].[2014-05-18]. http:∥e2e.ti.com.
[9] 劉帥,周悅.基于TinyOS的CC2420驅(qū)動(dòng)組件的研究[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2011(12):19-21.
[10]李外云.CC2530與無線傳感器網(wǎng)絡(luò)操作系統(tǒng)TinyOS應(yīng)用實(shí)踐[M].北京:北京航空航天大學(xué)出版社,2013:445-452.
Transplantation and Application of TinyOS to MSP430F149
The operating system TinyOS for wireless sensor network has a wide application prospect in production and scientific research. Currently,the fully supported node platforms are only a few,such as TelosB and MicaZ. To support the newly designed hardware platform,transplantation of new platform composed by Msp430F149 and CC2420 is requested. After analyzing the architecture and programming mechanisms of TinyOS system,a specific transplant plan is put forward and the transplantation on new platform is achieved successfully. The experimental result shows that all components work stably when the TinyOS system is transplanted on the new platform.
Wireless sensor networks CTP protocol Embedded system RFID Microcontroller TinyOS MSP430F149
江蘇省泰州市科技局科技支撐基金資助項(xiàng)目(編號:TG201413)。
周鵬(1983—),男,2013年畢業(yè)于江蘇大學(xué)檢測技術(shù)與自動(dòng)化裝置專業(yè),獲碩士學(xué)位,助教;主要從事嵌入式操作系統(tǒng)與無線傳感器網(wǎng)絡(luò)的研究。
TH86;TP316
A
10.16086/j.cnki.issn 1000-0380.201608004
修改稿收到日期:2015-09-02。