TinyOs2.x的电源管理策略及程序移植
实用技术
TinyOs2.x的电源管理策略及程序移植
朱佳慧 郑子龙 韩久迪 黄宏光
(四川大学电气信息学院, 成都 治理发愣功065)
摘要:本文针对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 80