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