- 相關(guān)推薦
TinyOs2.x的電源管理策略及程序移植
實(shí)用技術(shù)
TinyOs2.x的電源管理策略及程序移植
朱佳慧 鄭子龍 韓久迪 黃宏光
(四川大學(xué)電氣信息學(xué)院, 成都 610065)
摘要:本文針對(duì)WSN的操作系統(tǒng)TinyOs,從結(jié)構(gòu)、電源管理以及系統(tǒng)構(gòu)成方面對(duì)2.x下的實(shí)現(xiàn)進(jìn)行分析,并與1.x作了對(duì)比,給出了控制模型、機(jī)制、設(shè)備狀態(tài)和編程接口。從開(kāi)發(fā)實(shí)現(xiàn)角度涉及了TinyOs2.x的一些新特性,同時(shí)以實(shí)例說(shuō)明了程序設(shè)計(jì)過(guò)程及存在的問(wèn)題。
關(guān)鍵詞:TinyOs;電源管理;控制模型;設(shè)備狀態(tài);程序設(shè)計(jì);傳感器節(jié)點(diǎn)
1. 操作系統(tǒng)TinyOs
TinyOs[1]是由加州大學(xué)伯克利分校專門(mén)為無(wú)線傳感器網(wǎng)絡(luò)開(kāi)發(fā)的一種微型操作系統(tǒng)。是目前主流的WSN的操作系統(tǒng),這種系統(tǒng)區(qū)別于傳統(tǒng)意義上的電腦操作系統(tǒng),準(zhǔn)確的說(shuō),它是一個(gè)適用于網(wǎng)絡(luò)嵌入式系統(tǒng)的編程框架,具體應(yīng)用結(jié)構(gòu)如圖1所示。TinyOs由一系列的軟件組件和硬件組件構(gòu)成,而一個(gè)完整的系統(tǒng)配置由一個(gè)調(diào)度器和組件表[2]組成。
隨著時(shí)間的推移,TinyOs聯(lián)盟也不斷地推出新版本,以滿足更高的技術(shù)需求。從最初的TinyOs1.x到最新的TinyOs2.x版本,在原有的基礎(chǔ)上,改進(jìn)了對(duì)新的平臺(tái)和系統(tǒng)的支持,并增加了一些新特性,它們是:
1) 改進(jìn)的內(nèi)核機(jī)制,
2) 支持mica2,micaZ,Telos revB/TMote Sky,IntelMote2,eyes, tinynode平臺(tái),
3) 整合了外圍設(shè)備電源管理,
4) mica和telos平臺(tái)系列的非易失性存儲(chǔ)器支持,
5) 大幅改善了對(duì)傳感器的支持。
新的TinyOs2.x操作系統(tǒng)帶了很多新特性和更多設(shè)備和功能的支持,在無(wú)線傳感器網(wǎng)絡(luò)的主要方面:任務(wù)調(diào)度、通信協(xié)議、電源管理、平臺(tái)也有一系列性能上的變化。
2 TinyOs的電源管理
平臺(tái)的能量是有限的。對(duì)所有的外圍設(shè)備使用統(tǒng)一的電源管理策略是不合適的,因?yàn)樗鼈冊(cè)陬A(yù)熱階段、電源配置和工作延遲上有很大的不同。傳感器因?yàn)橛蓄A(yù)熱階段等因素,不能像微控制器那樣,迅速計(jì)算出功率最低的電源狀態(tài)。
在TinyOs 1.x 中,應(yīng)用程序自己負(fù)責(zé)所有的電源管理。比如像SPI 總線這樣的子系統(tǒng)需要由高層抽象來(lái)顯式地啟動(dòng)和關(guān)閉[3]。這種方法需要深層的StdControl.start() 和StdControl.stop() 調(diào)用,這可能會(huì)引入怪異的行為并且妨礙電源的節(jié)省。比如在Telos 平臺(tái)上關(guān)閉射頻模塊時(shí)需要關(guān)閉SPI 總線,這會(huì)導(dǎo)致Flash 驅(qū)動(dòng)器不能工作。另外,即使SPI 總線不活動(dòng),微控制器也會(huì)為它保持在高功耗狀態(tài)。
表1 電源管理對(duì)比
TinyOs 1.x TinyOs 2.x
工作方式 應(yīng)用程序負(fù)責(zé) 微控制器、外圍設(shè)備
功耗 高功耗 低功耗
性能 在Telos 平臺(tái)上flash驅(qū)動(dòng)器不能工作 利用狀態(tài)轉(zhuǎn)換處理中斷
TinyOs 2.x 定義了兩類設(shè)備用于電源管理:微控制器和外圍設(shè)備,如圖2所示。微控制器通常有幾個(gè)電源狀態(tài),它們具有不同的電源功率、喚醒延遲和外圍支持。微控制器在能滿足程序需求的前提下,應(yīng)當(dāng)一直處于能耗盡量低的電源狀態(tài)。為了準(zhǔn)確地決斷處理器該處于哪個(gè)狀態(tài),需要有大量外圍子系統(tǒng)和外圍設(shè)備的電源狀態(tài)信息。另外,狀態(tài)轉(zhuǎn)換是很常見(jiàn)的。每當(dāng)微控制器處理一個(gè)中斷時(shí),它從低功耗狀態(tài)切換到激活狀態(tài);當(dāng)TinyOs 調(diào)度器發(fā)現(xiàn)任務(wù)隊(duì)列為空時(shí),它回到低功耗狀態(tài)。TinyOs 2.x 使用三種機(jī)制來(lái)決定讓處理器處于哪種狀態(tài):狀態(tài)和控制寄存器、臟位、電源狀態(tài)覆蓋(override)[3]。外圍設(shè)備與微控制器不同,它沒(méi)有多個(gè)電源狀態(tài),只有兩個(gè)狀態(tài):開(kāi)啟與關(guān)閉。外圍設(shè)備指的是使用仲裁訪問(wèn)機(jī)制的硬件設(shè)備。這些設(shè)備不是虛擬化的,訪問(wèn)它們時(shí)必須顯式地請(qǐng)求并釋放。在TinyOs 中有兩種不同的外圍設(shè)備電源狀態(tài)管理模型:顯式電源管理和隱式電源管理[4]。顯式電源管理模型提供單個(gè)客戶端手工控制已分配物理設(shè)備電源狀態(tài)的方法。隱式模型提供讓設(shè)備在驅(qū)動(dòng)中控制自己的電源狀態(tài)的方法。
TinyOs 2.x 目前可以提供兩種默認(rèn)的外設(shè)電源管理策略。該策略在TinyOs-2.x/lib/power中由多個(gè)組件實(shí)現(xiàn)。第一種策略使用立即電源控制模式,即設(shè)備在被請(qǐng)求或釋放時(shí)立即開(kāi)啟或關(guān)閉電源。第二種策略是使用延遲電源控制模式,即設(shè)備在被請(qǐng)求是立即啟動(dòng),而在釋放時(shí)延遲一段時(shí)間后再關(guān)閉。該延遲的時(shí)間是可以配置的,以滿足各種不同設(shè)備驅(qū)動(dòng)的需求。
每種策略都分別用StdControl,SplitControl,AsyncStdControl 接口實(shí)現(xiàn),如下所示:
1)立即電源管理
_ StdControlPowerManagerC
_ SplitControlPowerManagerC
_ AsyncStdControlPowerManagerC
2)延遲電源管理
_ StdControlDeferredPowerManagerC
_ SplitControlDeferredPowerManagerC
_ AsyncStdControlDeferredPowerManagerC
3 平臺(tái)
無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)是構(gòu)成整個(gè)無(wú)線網(wǎng)絡(luò)的基礎(chǔ),用于部署到研究區(qū)域中收集發(fā)送、協(xié)作完成指定任務(wù)。所有與之相關(guān)的協(xié)議、算法、機(jī)制等都需要在節(jié)點(diǎn)上運(yùn)行才具有現(xiàn)實(shí)意義。無(wú)線節(jié)點(diǎn)一般包括以下幾個(gè)部分:處理器單元、存儲(chǔ)器單元、射頻單元、擴(kuò)展接口單元、傳感器以及電源。由于節(jié)點(diǎn)處理能力及存儲(chǔ)能力有限,TinyOs操作系統(tǒng)引入了輕線程、主動(dòng)信息、事件驅(qū)動(dòng)和組件化編程四種技術(shù)。TinyOs支持多款平臺(tái):Iris、Shimmer,mica2,micaZ,Telos revB/TMote Sky,IntelMote2,eyes, tinynode等。Imote2對(duì)TinyOs的支持比較完整。
Imote2 是一款先進(jìn)的無(wú)線傳感器節(jié)點(diǎn)平臺(tái)。它集成了低功耗PXA271XScale CPU 和兼容 IEEE 802.15.4的射頻芯片。Imote2 的正反兩面都設(shè)計(jì)有擴(kuò)展接口等標(biāo)準(zhǔn)組件:正面提供標(biāo)準(zhǔn) I/O 接口,用于基本擴(kuò)展芯片;反面附加高速接口,用于特殊 I/O。其基本構(gòu)成及結(jié)構(gòu)如圖3所示[5]:
由于TinyOs是基于層次設(shè)計(jì)的系統(tǒng)體系,其移植性與硬件抽象層相關(guān)。硬件抽象層對(duì)硬件平臺(tái)合理的描述,可以使操作系統(tǒng)內(nèi)核基本與具體的硬件無(wú)關(guān),以實(shí)現(xiàn)不同平臺(tái)的移植[6]。作為實(shí)際應(yīng)用, TinyOs2.x代碼在Imote2的運(yùn)行,大部分還是流暢的。
TinyOs2.x上典型編程設(shè)計(jì)過(guò)程(以BLINK為例):
1) 檢查一下編譯環(huán)境是否安裝完畢,在Cygwin的shell中寫(xiě)入tos-check-env,
2) 檢查T(mén)inyOs build system是否安裝完畢。這需要MAKERULES環(huán)境運(yùn)行良好。在Shell中輸入printenv MAKERULES,
3) 用make 命令來(lái)編譯一個(gè)TinyOs應(yīng)用系統(tǒng):make [platfrom],
4) 確定安裝正確版本的nesC編譯器,
5) 在以上基礎(chǔ)上,將已經(jīng)編譯好的應(yīng)用程序灌入到節(jié)點(diǎn)上,
6) 將節(jié)點(diǎn)從板子上拔下來(lái),打開(kāi)電源開(kāi)關(guān),此時(shí)三個(gè)LED將會(huì)以4HZ為頻率進(jìn)行計(jì)數(shù)閃爍。
TinyOs2.x在Imote2上也有一些問(wèn)題[7]如:
radio driver,DMA版本的射頻驅(qū)動(dòng)(默認(rèn))不能夠工作,對(duì)于SPI版本,多于十位的信息將使RX堆棧溢出;
DVFS,動(dòng)態(tài)電壓頻率調(diào)整問(wèn)題依然沒(méi)有解決。
4 結(jié)束語(yǔ)
TinyOs的電源管理、平臺(tái)支持上有了較大變化,使其在無(wú)線傳感器網(wǎng)絡(luò)上的應(yīng)用更趨完善。平臺(tái)支持方面,與已經(jīng)接受廣泛試用,運(yùn)行相對(duì)穩(wěn)定的TinyOs1.X版本相比,還存在一些不足之處,需要在實(shí)際運(yùn)用中不斷改進(jìn)。
參考文獻(xiàn)
[1] J Hill, R.Szewczyk,A. Woo,S. Hollar, D. E. Culler, and K. S. J. Pister. System architecture directions for networked sensors. In: Architectural Support for Programming Languages and Operating Systems, 2000, 93-104. TinyOS is available at http://webs.cs.berkeley.edu.
[ 2]于海斌,梁韡,曾鵬.智能無(wú)線傳感器網(wǎng)絡(luò)系統(tǒng) [M]. 北京:科學(xué)出版社,2006.
[3] http://TinyOs-network-protocol.googlecode.com/files/tep112-mcu-power-management.pdf
[4]http://TinyOs-network-protocol.googlecode.com/files/tep115-pwr-mngmnt-non-virtual-dev.pdf.
[5]http://www.xbow.com/Products/Product_pdf_files/Wireless_pdf/Imote2_Datasheet.pdf.
[6]錢(qián)開(kāi)國(guó) 桑楠 基于TinyOs的無(wú)線傳感器網(wǎng)絡(luò)操作系統(tǒng)移植性研究與實(shí)現(xiàn) [J].福建電腦,2009,2(2):7-9.
[7] http://docs.tinyos.net/index.php/T2_on_Imote2.
【TinyOs2.x的電源管理策略及程序移植】相關(guān)文章:
基于先驗(yàn)預(yù)知的動(dòng)態(tài)電源管理技術(shù)08-06
移動(dòng)通信終端電源管理設(shè)計(jì)原理08-06
談?wù)勑iL(zhǎng)的管理策略08-13
我的“午睡管理”策略08-15
知識(shí)管理的維度與策略08-07
嵌入式系統(tǒng)的動(dòng)態(tài)電源管理架構(gòu)08-06