基于μC/OS-Ⅱ的无线传感器网络节点低功耗设计

2014-06-07 06:00赵锦剑杨光永吴海锋周安然
关键词:空闲低功耗功耗

赵锦剑,杨光永,2,吴海锋,周安然

(1.云南民族大学电气信息工程学院,昆明650504;2.华南理工大学机械工程学院,广州510640)

基于μC/OS-Ⅱ的无线传感器网络节点低功耗设计

赵锦剑1,杨光永1,2,吴海锋1,周安然1

(1.云南民族大学电气信息工程学院,昆明650504;2.华南理工大学机械工程学院,广州510640)

针对无线传感器网络节点存在的能源受限问题,从操作系统层面对节点进行了低功耗设计,提出了一种基于μC/OS-Ⅱ的无线传感器网络节点的功耗管理方案,分别从节点微处理器、外围设备以及电池能量3个方面进行了电源管理设计.并在STM32F103ZET6微处理器的节点上进行了试验.结果表明:该方案能够有效降低系统功耗,当系统处于空闲状态时,功耗相比于正常运行时有了明显的降低,且系统运行稳定.

μC/OS-Ⅱ;低功耗设计;无线传感器网络节点;空闲状态;电源管理

无线传感器网络(WSN)是由分布在监测区域内大量的微型传感器节点通过无线电通信形成的一个多跳的自组织网络系统[1].目前大部分的无线传感器网络节点操作系统都将低功耗设计作为节点软件设计的重要部分.例如,专为无线传感器网络开发的微型操作系统TinyOS[2],当其就绪任务队列为空时,系统就会进入睡眠状态,直到当有事件唤醒时,才去处理该事件.美国加州大学开发的SOS[3]操作系统,除了能够在系统空闲时自动将CPU置于低功耗状态,还提供了一个抽象接口可以用来管理外围设备的功耗状态.浙江大学开发的SenSpire OS[4]是一套基于WSN的操作系统,具有灵活的应用程序编程模式,在提高系统工作效率的同时降低系统的功耗.μC/OS-Ⅱ是一种应用在嵌入式设备中的操作系统,在无线传感器网络中得到广泛应用,本文提出了一种基于μC/OS-Ⅱ的无线传感器网络节点功耗管理方案.

1 基于μC/OS-Ⅱ的无线传感器网络节点功耗管理策略

μC/OS-Ⅱ是一个抢占式多任务实时操作系统内核[5],基于该系统的无线传感器网络节点功耗管理可以分为3个方面的内容,如图1所示.

1)微处理器的功耗管理.动态调节CPU内核电压和频率,根据节点运行情况实现系统运行模式的切换[6],比如工作模式、空闲模式和睡眠模式之间的切换;

2)外围设备的功耗管理.通过操作系统的任务调度设计使节点外围设备在性能和能耗上达到平衡,使设备能够及时进入低功耗模式,实现功耗管理;

3)电池管理.进行节点电池电量检测,根据检测到的结果对节点进行相应管理.

2 基于μC/OS-Ⅱ的无线传感器网络节点功耗管理的实现

2.1 微处理器的低功耗设计

在节点的能量消耗中微处理器占据了很大的一部分.本设计中节点采用的微处理器芯片STM32F103ZET6具有正常工作模式以及睡眠、停机和待机3种低功耗模式,且可以通过编程实现各种模式之间的切换.STM32F103ZET6各种工作状态具有不同的工作电压和频率,功耗也就不同.因此为了最大限度地降低系统功耗,需使STM32F103ZET6尽可能处于低功耗模式.

电源管理的主要任务是控制系统适时地在正常工作状态和低功耗状态之间的转换,使节点能量达到最省状态[7].本文主要通过对操作系统μC/OS-Ⅱ进行编程设计,使STM32F103ZET6能够快速地进入睡眠模式,实现微处理器的低功耗设计.

实际上,节点的任务执行时间往往只占CPU运行时间的很少一部分,CPU大多数时间处于空闲状态.μC/OS-Ⅱ在内核启动前会首先自动创建一个空闲任务函数OSTaskIdle( ),该任务具有最低优先级且此优先级上没有其它任务.因此,当没有其它任务运行时,空闲任务就会得到执行.所以可以在空闲任务末尾添加一个函数SleepMode( ),在该函数内编写使STM32F103ZET6进入睡眠模式的指令,当操作系统一旦调用空闲任务OSTask Idle( ),便可使STM32F103ZET6进入睡眠模式,从而节约能耗.为了增加系统设计的灵活性,可以在μC/OS-Ⅱ操作系统的配置文件中加入宏开关configUse_Sleep-Mode,当configUse_SleepMode值为1时空闲任务OSTaskIdle( )会调用SleepMode( )函数使STM32F103ZET6进入睡眠模式.若为0则不调用该函数,CPU将不会进入睡眠模式.改进后的空闲任务的主要代码如下所示:

2.2 外部设备的低功耗设计

节点外设模块主要实现的功能有:数据采集、传输、能量检测以及与上位机通信等.根据节点不同硬件模块的操作以及需要实现的功能,可以对将节点的功能进行任务划分和优先级配置.对节点进行合理的任务划分可以有效简化系统程序设计,提高CPU的利用率,降低系统的功耗.本文中采用静态优先级设置,节点任务的具体划分和优先级分配如表1所示.

μC/OS-Ⅱ是一个抢占式的多任务操作系统,总是运行就绪列表中优先级最高的任务,其核心是任务调度器.在进行任务设计时,可以通过任务调度的方式使各个外部设备满足各自的时间和性能需求.通过在任务调度中考虑节能问题,使系统生存时间可得到明显的延长.μC/OS-Ⅱ具有5种任务状态,分别是运行态、就绪态、挂起态、睡眠态以及中断服务态,可以通过调度实现任务在这5种状态之间的转换.μC/OS-Ⅱ的任务调度是按照优先级抢占式进行的,因此需要考虑任务间的资源共享、同步以及互斥等因素.本文中采用信号量和消息队列用于控制资源共享以及任务间的通信.当任务没有获得信号量或者消息队列为空时,等待接收该信号量或消息队列中消息的任务会被挂起.本文节点的多任务调度框图如图2所示.

表1 节点任务划分及优先级分配

当系统启动后,操作系统μC/OS-Ⅱ和硬件进行初始化,CPU的控制权交给μC/OS-Ⅱ管理,CPU内核循环检测是否有外部中断产生.当串口1接收到来自上位机的数据时会产生中断,系统将会自动进入串口中断服务程序USART1_ISRHandler( )执行串口数据的接收管理.USART1_ISRHandler( )将串口1接收的数据RxData缓存到一个地址为RxDataPtr的数据缓存区USART_RX_BUF[]中,并通过事先创建的消息队列UARTQ将地址RxDataPtr传送给优先级最高的串口通信任务PortCom_Task( ).串口通信任务获得到消息RxDataPtr后对USART_RX_BUF[]中的数据进行处理.如果CPU没有检查到串口中断发生,那么串口通信任务将会被挂起.USART1_ISRHandler( )的主要代码如下:

本设计中节点采用16位CPU定时器Timer 3#溢出中断的方式进行周期性数据采集,采样频率为0.2 Hz.当CPU内核检测到Timer 3#发生定时溢出中断时,μC/OS-Ⅱ调用中断服务程序TIM3_ISRHandler( )进行中断处理,并发送信号量Sem_Acq给数据采集任务DataAcq_Task( ).DataAcq_Task( )接收到信号量Sem_Acq后,唤醒数据采集模块实现对待测数据的ADC采样,并通过之前创建的消息队列AcqDataQ将采集到的数据AcqData作为消息发送给节点数据发送任务DataSen_Task( ).同时Data-Acq_Task( )将会将它自身挂起,并通过调用Acq-ModuleSleep( )函数设置相应的寄存器使数据采集模块及时进入休眠状态,节点需再次等待CPU定时器溢出时,才进行数据采集.数据的ADC采样的主要代码如下:

数据发送任务DataSen_Task( )接收到消息队列AcqDataQ中的消息AcqData后,无线通信模块被唤醒开始工作,向邻节点发送数据接收请求并执行数据发送任务.在执行数据发送任务时首先通过SPI总线将要发送的数据AcqData写入到无线通信模块,然后在应用层调用定义的发送函数RFSendData( )执行数据发送功能.当数据发送完成时,DataSen_ Task( )将发送信号量Sem_Bat给电池管理任务BatteryMan_Task( ),并自身挂起,无线通信模块也进入低功耗状态.数据发送任务主要代码如下:

本设计在μC/OS-Ⅱ内核中设计一个任务挂起列表,当有任务执行完后进入挂起态时,将任务挂入到挂起列表.如果当系统中的所有任务都挂入了挂起列表,则说明系统的中的所有任务都进入了挂起态,那么系统就会处于空闲状态,由前面的微处理器低功耗设计可知系统会随之进入睡眠模式.当有中断发生时,系统将退出睡眠模式,进入运行状态.

通过μC/OS-Ⅱ获取所有应用程序的性能需求,并根据性能需求进行合理的任务调度设计,直接控制底层硬件资源,从而在节点的性能和能耗控制之间进行必要的折衷,使各个外设模块以及微处理器能够及时的进入低功耗状态,达到降低节点功耗的目的.

2.3 电池管理实现

无线传感器网络中,传感器节点和汇聚节点是动态分配的,节点电量的多少直接影响着节点在无线传感器网络拓扑结构中的地位.本文选用DS2786芯片对节点电池电量进行检测,DS2786是一款基于开路电压(OCV)的独立式电量计,能够利用库仑计与电池OCV的模型组合计算相对电量,且其休眠时电流仅为1μA.CPU通过I2C总线接口读取DS2786的电量估算数据,获取电池的状态信息,实现对节点的电池管理.STM32F103ZET6通过I2C读取DS2786测量到电量的伪代码如下:

例如,当CPU读取到汇聚节点的电量信息ElecQuantity后,电池管理任务BatteryMan_Task( )会根据电池运行状态进行相应的管理,具体实现过程如图3所示.

3 系统功耗测试

本文以基于STM32F103ZET6微处理器的无线传感器网络节点为例进行实验,节点采集的数据为FM频段的信号强度.编译环境采用IAR workbench for ARM 6.40,在STM32F103ZET6上移植入μC/OS-Ⅱ操作系统,对节点进行功耗管理.数据采集模块选用RDA5820接收FM频段信号;射频模块采用通信频率为2.4 GHz的CC2530模块,工作电压为2~3.6 V,将射频输出功率设置为1 dBm.

分别测试μC/OS-Ⅱ系统改进前后在各模式下的电流、电压及功耗情况.测试结果如表2所示.

表2 改进前后系统在各模式下的电流电压值

通过表2中实验数据可以看出,改进后节点处于空闲状态时系统的功耗有了明显的降低.原因是改进后,当节点处于空闲状态时系统就会通过调用SleepMode( )函数使CPU进入睡眠模式,降低了系统功耗.

4 结语

本文主要从操作系统层面分别从节点的微处理器和外围设备以及电池能量检测3个方面进行了电源管理设计.首先对操作系统μC/OS-Ⅱ进行了改进使其具有低功耗的特点;其次,对操作系统μC/OS-Ⅱ进行任务调度设计,有效管理节点各个模块的工作模式,从而降低节点的功耗;最后通过检测节点电池能量,判断节点能否继续稳定工作.实验结果表明,该方案能够有效地减少节点功耗,从而延长无线传感器网络的使用寿命,具有一定的实际应用价值.

[1]POTTIE G J,KAISERW J.Embedding the internet:wireless integrated network sensors[J].Communications of the ACM,2003,43(5):51-58.

[2]潘浩,董齐芬,张贵军.无线传感器网络操作系统Tiny-OS[M].北京:清华大学出版社,2011:13-20.

[3]HAN CC,KUMAR R,SHEA R,etal.A dynamic operating system for sensor nodes[C]//Proceedings of the 3rd international conference on Mobile systems,applications,and services.USA:Washington,ACM,2005:163-176.

[4]DONGW,CHEN C,LIU X,et al.SenSpire OS:A predictable,flexible,and efficient operating system for wireless sensor networks[J].IEEE Transactions on Computers,2011,60(12):1788-1801.

[5]KIRPAL R B,NAGRARE T H.Efficient energy management system through RTOS[J].International Journal of Research in Computer and Communication Technology,2014,3(1):28-32.

[6]邱祎,桑楠.无线传感器网络基于μC/OS-Ⅱ的低功耗改进[J].单片机与嵌入式系统应用,2007(4):5-7.

[7]HARKUTD G,ALIM S,LOHIYA P.Real-time scheduling algorithms for wireless sensor network[J].Circuits and systems:An International Journal,2014,1(1):11-18.

(责任编辑 庄红林)

A low-power design of the wireless sensor network node base on μC/OS-Ⅱ

ZHAO Jin-jian1,YANG Guang-yong1,2,WU Hai-feng1,ZHOU An-ran1
(1.School of Electronics and Information Engineering,Yunnan Minzu University,Kunming 650504,China;2.College of Mechanical Engineering,South China University of Technology,Guangzhou 510640,China)

For solving the problem of limited energy of the wireless sensor network node at the level of the operating system,a power management solution of node based on μC/OS-Ⅱ was proposed.Thisdesign contained three aspects which were the microprocessor and peripheral devices,and battery power.The solution was obtained from the experimental verification on the node whose CPU was STM32F103ZET6.The results have shown that the solution can reduce the power consumption of the systemeffectively.When the system is idle,the power consumption of the node has been significantly reduced compared with the normal operation,and the system is stable.

μC/OS-Ⅱ;low-powerdesign;wireless sensor network node;idle state;power management

TP316.2

A

1672-8513(2014)06-0391-05

2014-05-09.

国家自然科学基金(61262091);云南省高校无线传感器网络重点实验室开放基金(ZK2011002);云南民族大学研究生创新项目(2013YCX01).

赵锦剑(1986-),男,硕士研究生.主要研究方向:无线传感器网络和嵌入式系统.

杨光永(1970-),男,博士研究生,副教授,硕士生导师.主要研究方向:微系统、智能控制与数字系统设计.

猜你喜欢
空闲低功耗功耗
基于任务映射的暗硅芯片功耗预算方法
一种高速低功耗比较器设计
“鸟”字谜
一种宽带低功耗四合一接收机设计
西湾村采风
彪悍的“宠”生,不需要解释
低功耗便携智能翻译手套系统
低功耗技术在驾驶行为管理模块中的应用
揭开GPU功耗的面纱
数字电路功耗的分析及优化