- 相关推荐
TinyOs2.x的电源管理策略及程序移植
实用技术
TinyOs2.x的电源管理策略及程序移植
朱佳慧 郑子龙 韩久迪 黄宏光
(四川大学电气信息学院, 成都 610065)
摘要:本文针对WSN的操作系统TinyOs,从结构、电源管理以及系统构成方面对2.x下的实现进行分析,并与1.x作了对比,给出了控制模型、机制、设备状态和编程接口。从开发实现角度涉及了TinyOs2.x的一些新特性,同时以实例说明了程序设计过程及存在的问题。
关键词:TinyOs;电源管理;控制模型;设备状态;程序设计;传感器节点
1. 操作系统TinyOs
TinyOs[1]是由加州大学伯克利分校专门为无线传感器网络开发的一种微型操作系统。是目前主流的WSN的操作系统,这种系统区别于传统意义上的电脑操作系统,准确的说,它是一个适用于网络嵌入式系统的编程框架,具体应用结构如图1所示。TinyOs由一系列的软件组件和硬件组件构成,而一个完整的系统配置由一个调度器和组件表[2]组成。
随着时间的推移,TinyOs联盟也不断地推出新版本,以满足更高的技术需求。从最初的TinyOs1.x到最新的TinyOs2.x版本,在原有的基础上,改进了对新的平台和系统的支持,并增加了一些新特性,它们是:
1) 改进的内核机制,
2) 支持mica2,micaZ,Telos revB/TMote Sky,IntelMote2,eyes, tinynode平台,
3) 整合了外围设备电源管理,
4) mica和telos平台系列的非易失性存储器支持,
5) 大幅改善了对传感器的支持。
新的TinyOs2.x操作系统带了很多新特性和更多设备和功能的支持,在无线传感器网络的主要方面:任务调度、通信协议、电源管理、平台也有一系列性能上的变化。
2 TinyOs的电源管理
平台的能量是有限的。对所有的外围设备使用统一的电源管理策略是不合适的,因为它们在预热阶段、电源配置和工作延迟上有很大的不同。传感器因为有预热阶段等因素,不能像微控制器那样,迅速计算出功率最低的电源状态。
在TinyOs 1.x 中,应用程序自己负责所有的电源管理。比如像SPI 总线这样的子系统需要由高层抽象来显式地启动和关闭[3]。这种方法需要深层的StdControl.start() 和StdControl.stop() 调用,这可能会引入怪异的行为并且妨碍电源的节省。比如在Telos 平台上关闭射频模块时需要关闭SPI 总线,这会导致Flash 驱动器不能工作。另外,即使SPI 总线不活动,微控制器也会为它保持在高功耗状态。
表1 电源管理对比
TinyOs 1.x TinyOs 2.x
工作方式 应用程序负责 微控制器、外围设备
功耗 高功耗 低功耗
性能 在Telos 平台上flash驱动器不能工作 利用状态转换处理中断
TinyOs 2.x 定义了两类设备用于电源管理:微控制器和外围设备,如图2所示。微控制器通常有几个电源状态,它们具有不同的电源功率、唤醒延迟和外围支持。微控制器在能满足程序需求的前提下,应当一直处于能耗尽量低的电源状态。为了准确地决断处理器该处于哪个状态,需要有大量外围子系统和外围设备的电源状态信息。另外,状态转换是很常见的。每当微控制器处理一个中断时,它从低功耗状态切换到激活状态;当TinyOs 调度器发现任务队列为空时,它回到低功耗状态。TinyOs 2.x 使用三种机制来决定让处理器处于哪种状态:状态和控制寄存器、脏位、电源状态覆盖(override)[3]。外围设备与微控制器不同,它没有多个电源状态,只有两个状态:开启与关闭。外围设备指的是使用仲裁访问机制的硬件设备。这些设备不是虚拟化的,访问它们时必须显式地请求并释放。在TinyOs 中有两种不同的外围设备电源状态管理模型:显式电源管理和隐式电源管理[4]。显式电源管理模型提供单个客户端手工控制已分配物理设备电源状态的方法。隐式模型提供让设备在驱动中控制自己的电源状态的方法。
TinyOs 2.x 目前可以提供两种默认的外设电源管理策略。该策略在TinyOs-2.x/lib/power中由多个组件实现。第一种策略使用立即电源控制模式,即设备在被请求或释放时立即开启或关闭电源。第二种策略是使用延迟电源控制模式,即设备在被请求是立即启动,而在释放时延迟一段时间后再关闭。该延迟的时间是可以配置的,以满足各种不同设备驱动的需求。
每种策略都分别用StdControl,SplitControl,AsyncStdControl 接口实现,如下所示:
1)立即电源管理
_ StdControlPowerManagerC
_ SplitControlPowerManagerC
_ AsyncStdControlPowerManagerC
2)延迟电源管理
_ StdControlDeferredPowerManagerC
_ SplitControlDeferredPowerManagerC
_ AsyncStdControlDeferredPowerManagerC
3 平台
无线传感器网络节点是构成整个无线网络的基础,用于部署到研究区域中收集发送、协作完成指定任务。所有与之相关的协议、算法、机制等都需要在节点上运行才具有现实意义。无线节点一般包括以下几个部分:处理器单元、存储器单元、射频单元、扩展接口单元、传感器以及电源。由于节点处理能力及存储能力有限,TinyOs操作系统引入了轻线程、主动信息、事件驱动和组件化编程四种技术。TinyOs支持多款平台:Iris、Shimmer,mica2,micaZ,Telos revB/TMote Sky,IntelMote2,eyes, tinynode等。Imote2对TinyOs的支持比较完整。
Imote2 是一款先进的无线传感器节点平台。它集成了低功耗PXA271XScale CPU 和兼容 IEEE 802.15.4的射频芯片。Imote2 的正反两面都设计有扩展接口等标准组件:正面提供标准 I/O 接口,用于基本扩展芯片;反面附加高速接口,用于特殊 I/O。其基本构成及结构如图3所示[5]:
由于TinyOs是基于层次设计的系统体系,其移植性与硬件抽象层相关。硬件抽象层对硬件平台合理的描述,可以使操作系统内核基本与具体的硬件无关,以实现不同平台的移植[6]。作为实际应用, TinyOs2.x代码在Imote2的运行,大部分还是流畅的。
TinyOs2.x上典型编程设计过程(以BLINK为例):
1) 检查一下编译环境是否安装完毕,在Cygwin的shell中写入tos-check-env,
2) 检查TinyOs build system是否安装完毕。这需要MAKERULES环境运行良好。在Shell中输入printenv MAKERULES,
3) 用make 命令来编译一个TinyOs应用系统:make [platfrom],
4) 确定安装正确版本的nesC编译器,
5) 在以上基础上,将已经编译好的应用程序灌入到节点上,
6) 将节点从板子上拔下来,打开电源开关,此时三个LED将会以4HZ为频率进行计数闪烁。
TinyOs2.x在Imote2上也有一些问题[7]如:
radio driver,DMA版本的射频驱动(默认)不能够工作,对于SPI版本,多于十位的信息将使RX堆栈溢出;
DVFS,动态电压频率调整问题依然没有解决。
4 结束语
TinyOs的电源管理、平台支持上有了较大变化,使其在无线传感器网络上的应用更趋完善。平台支持方面,与已经接受广泛试用,运行相对稳定的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]于海斌,梁韡,曾鹏.智能无线传感器网络系统 [M]. 北京:科学出版社,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的无线传感器网络操作系统移植性研究与实现 [J].福建电脑,2009,2(2):7-9.
[7] http://docs.tinyos.net/index.php/T2_on_Imote2.
【TinyOs2.x的电源管理策略及程序移植】相关文章:
基于先验预知的动态电源管理技术08-06
移动通信终端电源管理设计原理08-06
谈谈校长的管理策略08-13
我的“午睡管理”策略08-15
知识管理:目标与策略08-05
知识管理的维度与策略08-07
嵌入式系统的动态电源管理架构08-06
通信电源的运行管理与应用研究08-06
班级管理“新策略”之我见08-08