微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 嵌入式系统电源管理软件比较

嵌入式系统电源管理软件比较

时间:02-16 来源: 点击:

e四种电源状态。Standby指"带电挂起",通过将CPU置于halt状态,将设备置于D1状态来达到节能的目的(ACPI规范中按能耗从高到低分D0~D3)。节能效果不明显,但是响应延迟最校Suspend就是挂起到RAM。在该状态下,所有设备被置于D3状态,整个系统,除主存处于节电的自刷新模式(self-refresh)外,全部关闭电源。响应延迟比Standby大。Hibernate 是通过将系统状态保存到非易挥发性存储中(通常是磁盘),关闭整个系统的电源。延迟时间最长,但比一次完整启动来得短。通常情况下嵌入式设备都没有支持这种方式。

  通过sysfs文件系统接口触发系统级电源状态转化。转换管理是通过注册好的驱动来进行。例如,prepare函数确认系统能够进入所请求的状态,并且进行相应的准备工作。例如通过禁止抢占和"冷冻"所有进程来准备进入所请求的电源状态。Save函数枚举所有注册有电源管理能力的设备,保存系统和处理器的低层状态。接着PM核心禁止了中断,关闭外部设备电源,调用Sleep函数根据挂起级别进入睡眠状态。在嵌入式设备挂起过程中可以通过写入某些特殊的非易失性处理器寄存器来记录挂起的原因和挂起时的代码执行地址。系统上电后引导程序先执行,从特殊寄存器中判断系统是否从深度睡眠(Hibernation)中恢复。如果是,则负责从非易挥发性存储介质中恢复所有的硬件上下文。如果不是,系统负责从sleep()函数处返回。给所有设备上电,恢复中断。Restore函数被用来恢复系统的低层调用,恢复设备上下文。Cleanup函数从sleep状态恢复必须进行的清尾工作,例如抢占重新被允许,系统恢复正常执行。当一次完整的转换完成后,CPU执行权还给之前执行的进程。

  ·动态电源管理

  (1)动态电源管理原理

  如图5所示,系统无任务时进入空闲,可被中断唤醒,处理完后重新进入空闲或者回到任务态。如果系统被挂起到RAM中,进入深度睡眠。可以关闭除了中断控制器和唤醒源之外的所有设备,实现最大限度地省电。根据运行时不同的任务负载,系统应该有对应的不同电源级别。如图示中的任务、任务-、任务+等代表电源需求的状态。在完成任务的同时,进行最大化的节能。


图5 操作状态间的转换

  (2)动态电源管理设计

  在Linux架构下实现动态电源管理,需要(1)用户层的管理策略;(2)内核模块需要为应用层提供的接口;(3)硬件无关的通用电源管理逻辑控制框架;(4)管理特定硬件的平台相关电源控制层。

  用户层策略通过sysfs文件系统接口(或proc文件系统接口)以及系统调用接口(APIs)来进行电源管理。内核硬件无关层提供电源管理逻辑控制,针对任务负载情况选择反映当前任务电源状态的电源操作点(相关可控的硬件参数)。内核硬件相关层主要对应系统的各种总线和设备时钟电源参数管理,并管理多种设备的参数约束。

  ·设备驱动电源管理

  在某些设备闲置时可以被主动关闭,从而节电。在2.6内核中需要实现总线以及设备的电源管理支持,在驱动中需要实现设备驱动的suspend/resume函数。

  关闭一个设备,其驱动的suspend方法需要两个不同的调用,一个用来保存状,另外一个用来关闭设备电源。相反,resume方法需要一个调用用来给设备供电,另一个调用来恢复设备的状态。在关闭一个总线设备时必须关闭所有的下一级子设备。相反地,重新使能总线设备时,必须先使能根设备,然后再使能子设备。

  ·用户层电源管理策略

  嵌入式系统如何做到有效的平台级能耗管理需要在内核提供的机制上实现一个智能化的管理软件,监控系统电源状态,处理相应电源事件,执行针对特定应用制定的管理策略。现有的Linux ACPI和APM的后台驻留进程,可以供嵌入式系统实现参考。商业的嵌入式linux 公司MontaVista 在其Moblinux 4.0以后的版本也提供一个用户态的电源管理策略和界面。

  嵌入式操作系统电源管理实现比较

  嵌入式操作系统的电源管理功能实现结构中,主要可以分为核心层、接口层、应用策略管理层。核心层需要提供一个体系结构无关的电源管理框架,感知系统负载,进行系统电源状态管理。核心层还需要一个体系结构相关层,提供硬件相关的电源状态管理,例如进行电压/频率调节及相应的约束管理。核心层还需要提供一个用户编程接口,用户层通过编程来利用系统提供的电源管理机制。并且根据不同的应用需求编制智能化的管理策略。

在电源管理功能上大致可以分为(1)系统级电源管理,(2)动态电源管理,(3)设备电源管理等三类。操作系统检查任务负载情况,如果没有需要运行的任务,则一般进入空闲等节能状态,等待唤醒。可以在空闲一段时间后进入深度睡眠,挂起到RAM中或者硬盘

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top