专利名称:一种嵌入式Linux设备低功耗电源管理设备的制作方法
技术领域:
本发明涉及数字家庭技术领域,具体涉及一种嵌入式Linux设备低功耗电源管理 设备。
背景技术:
Linux系统具有嵌入式操作系统需要的很多特色,如适应于多种CPU和多种硬件 平台、性能稳定、可裁剪性很好、源码开放、开发和使用简单等。目前,基于Linux应用的嵌 入式设备日益增多,Linux正在嵌入式领域发挥着越来越重要的作用。随着各种便携嵌入式设备性能的日益提高,功能日益丰富,其电源紧张的问题也 日益突出,国内新推出的某些具有PDA等多种功能的智能电话在密集使用下只能维持半 天,多数摄像机和数码相机在一次充电后都只有一个小时左右的累积工作时间。Linux作为 一个开放源代码的操作系统,拥有非常丰富的软件资源和平台支持,这使得嵌入式系统开 发的周期大大缩短,越来越多的商用和通用嵌入式系统都采用Linux作为软件平台。随着 嵌入式设备性能提高,其能耗高的问题越来严重,因此需要对Linux系统的电源管理机制 进行深入研究,从而减少现有电源能耗高的问题。
发明内容
基于本发明的问题,本发明实施例提供了一种嵌入式Linux设备低功耗电源管理 设备,能为嵌入式Linux设备提供低功耗运行环境。本发明实施例提供了一种嵌入式Linux设备低功耗电源管理设备,包括Linux内核电源管理接口单元,用于为嵌入式高耗能外设提供电压和频率的快速 调节接口 ;空闲模式处理单元,用于为嵌入式Linux系统提供了空闲模式的进入和退出处理 方法;事件减少处理单元,用于为嵌入式Linux系统提供了如何让嵌入式设备最长时间 工作在空闲模式的处理方法;CPU性能控制单元,用于为嵌入式Linux系统提供了降低CPU工作频率的处理方法。所述Linux内核电源管理接口单元为嵌入式外设建立内核电源管理接口步骤如 下使用内核函数pm_register对设备的每个实例(instance)进行注册;在对硬件进行操作之前调用内核函数pm_aCCeSS ;在系统进入suspend状态,或者从suspend状态恢复的时候系统调用内核函数pm_ callback ;当设备不使用时调用pm_deV_idle函数;当被设备被卸载的时候,使用pnumregister取消设备的注册。
所述空闲模式处理单元为嵌入式Linux系统提供了空闲模式的进入和退出处理 方法步骤如下当Linux检查到所有线程都处于阻塞状态,将CPU置于空闲模式;当检测到 任何中断时候,CPU从空闲模式中被唤醒,然后继续执行后面的代码;如果事件不能直接连接到外部中断,用系统定时器定期唤醒CPU。所述如果事件不能直接连接到外部中断,用系统定时器定期唤醒CPU包括在等待一个事件并且知道只要事件发生后在IOms内能检测到,那么可以启动 IOms定时器,并把CPU置于空闲模式;每次处理定时中断时都要检查事件状态,如果状态没 有变化,就立刻回到空闲模式。所述事件减少处理单元为嵌入式Linux系统提供了如何让嵌入式设备最长时间 工作在空闲模式的处理方法包括在进入空闲模式前关闭时隙中断信号,只有再次出现中断信号时才被唤醒;为调度程序进行可变超时设定;Linux知道每个线程无法确定等待的是外部还是 内部事件,或者计划在某特定时间再次运行;Linux可算出第一个线程预定何时运行,并相 应地在CPU置于空闲模式之前设定定时器工作;可变超时设定不会对调度程序造成很大的 负担,但却能节省电源和处理时间。所述CPU性能控制单元为嵌入式Linux系统提供了降低CPU工作频率的处理方法 包括外设处于不工作状态的时候,降低控制该外设的时钟频率;采用动态降低电压方法;为不完全应用cpu带宽的线程降低CPU时钟频率。所述外设处于不工作状态的时候,降低控制该外设的时钟频率包括当外设板上IXD控制器需要使用一个储存在片外SDRAM中的帧缓存;当LCD控制器工作时,需要指定足够高的内存总线频率来满足显示器刷新速率的
需要;在IXD不工作的情况下降低SDRAM总线频率。通过实施本发明,可以减少嵌入式Linux设备的耗电量,以及减少嵌入式Linux设 备处理器使用寿命。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本 发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可 以根据这些附图获得其他的附图。图1为本发明实施例中的嵌入式Linux设备低功耗电源管理设备结构示意图;图2为本发明实施例中的嵌入式Linux设备低功耗电源管理方法流程图;图3为本发明实施例中的Linux内核电源管理接口建立流程图;图4为本发明实施例中的嵌入式Linux系统提供了空闲模式的进入和退出方法流 程图5为本发明实施例中的为嵌入式Linux系统提供了如何让嵌入式设备最长时间 工作在空闲模式的方法流程图;图6为本发明实施例中的为嵌入式Linux系统提供了降低CPU工作频率的方法流 程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它 实施例,都属于本发明保护的范围。本发明实施例提供一种嵌入式Linux设备低功耗电源管理实现方法及其相应的 设备,能为嵌入式Linux设备提供低功耗运行环境,以下分别进行详细说明。如图1所示,图1示出了本发明实施例中的嵌入式Linux设备低功耗电源管理设 备结构示意图,其主要包括以下单元=Linux内核电源管理接口单元、空闲模式处理单元、 事件减少处理单元、CPU性能控制单元等等。这里的Linux内核电源管理接口单元为嵌入式高耗能外设提供电压和频率的快 速调节接口。所述空闲模式处理单元为嵌入式Linux系统提供了空闲模式的进入和退出方法。所述事件减少处理单元为嵌入式Linux系统提供了如何让嵌入式设备最长时间 工作在空闲模式的方法。所述CPU性能控制单元为嵌入式Linux系统提供了降低CPU工作频率的方法。相应的,图2示出了本发明实施例中基于图1中功能模块所实现的方法流程图,具 体包括步骤1 为嵌入式外设建立内核电源管理接口。步骤2 为嵌入式Linux系统提供空闲模式处理方法。步骤3 为嵌入式Linux系统提供减少事件的方法。步骤4 为嵌入式Linux系统提供控制CPU性能的方法。图3示出了本发明实施例中的Linux内核电源管理接口建立流程图,电源管理策略的基础是调整处理器内核的工作电压和频率。不过,现代的嵌入式 CPU具有非常高的电源效率,以至于CPU并不总是最主要的耗能组件。其他高耗能的组件包 括高性能内存、显示屏和射频接口等,因此,如果电源管理系统只能调节CPU内核的电压和 频率,那么它的用途将有限。一个真正有效的电源管理方案应该可以采用与CPU内核执行 相协调或相独立的方式,支持对一系列电压和频率的快速调节。Linux 支持两种电源管理标准APM (Advanced Power Managememt)禾口 ACPI (Advanced configuration Power Interface)。APM 是传统的高级电源管理方案,目 前仍然使用在许多基于Linux便携式设备中;而ACPI则提供了更为灵活的电脑和设备管 理接口。这两个标准不能同时运行,缺省情况下,Linux运行ACPI。APM可以使机器处于 Suspend (悬挂)或Standby (待机)状态,以及检查电池容量;而ACPI还可以使外设(如 显示器、PCI)单独断电,在节省电能方面有更多的控制。为了让电源管理功能生效,需要在Linux内核打开它,并且在Linux里加载必需的应用软件。Linux内核中电源管理机制负责维持整个系统的电源状态。它可以看成是为驱动 程序、中介软件和应用程序提供服务的元素。通过在驱动程序中实现电源管理接口,可以让驱动程序密切监控系统状态。它们 在外部事件的驱动下,透过设定不同的状态反映设备的工作情况。基于上述要求,本发明实施例中Linux内核电源管理接口建立包括如下步骤 步骤11 使用内核函数pm_regiSter对设备的每个实例(instance)进行注册;步骤12 在对硬件进行操作之前调用内核函数pm_aCCeSS(这样可保证设备已被 唤醒,并处于ready状态);步骤13 在系统进入suspend状态,或者从suspend状态恢复的时候系统调用内 核函数 pm_calIback ;步骤14 当设备不使用时调用pm_deV_idle函数(这个操作是可选的,以增强设 备idle状态的监测能力);步骤15 当被设备被卸载的时候,使用pnumregister取消设备的注册。图4为空闲模式处理单元为嵌入式Linux系统提供了空闲模式的进入和退出方法 流程图。很多嵌入式CPU都具有能降低功耗的电源工作模式,最常用的是空闲模式。此时 CPU内核指令执行部分关闭,而所有外设和中断信号仍处于工作状态,具体包括步骤步骤21 当Linux检查到所有线程都处于阻塞状态(如等待中断、事件或定时时 间),将CPU置于空闲模式。步骤22 当检测到任何中断(如触摸屏事件、按下按键事件等)时候,CPU从空闲 模式中被唤醒,然后继续执行后面的代码。步骤23 如果事件不能直接连接到外部中断,用系统定时器定期唤醒CPU。例如在 等待一个事件并且知道只要事件发生后在IOms内能检测到,那么可以启动IOms定时器,并 把CPU置于空闲模式。每次处理定时中断时都要检查事件状态,如果状态没有变化,就立刻 回到空闲模式。图5为事件减少处理单元为嵌入式Linux系统提供了如何让嵌入式设备最长时间 工作在空闲模式的方法流程图,通常CPU的定时中断间隔为1ms,Linux会频繁使CPU置于 空闲模式,并一直维持到被中断唤醒。在这种情况下,最有可能唤醒CPU中断的是定时器中 断本身。即使所有其他线程被阻塞,在其他中断、内部事件及长时间延迟之前,定时器中断 也会以每秒100次的频率把CPU从空闲模式中唤醒,以运行调度程序。就算调度程序确定所 有线路都被阻塞,并很快将CPU回复到空闲模式,这样频繁操作也会浪费大量电源。因此, 应尽可能长时间地将CPU置于空闲模式,而减少事件是解决这个问题的有效途径。通过分 析代码和系统要求,以决定是否能改变处理中断的方式实现。这里的事件减少处理单元为嵌入式Linux系统提供了如何让嵌入式设备最长时 间工作在空闲模式的方法包括步骤步骤31 在进入空闲模式前关闭时隙中断信号,只有再次出现中断信号时才被唤醒。步骤32 为调度程序进行可变超时设定。Linux知道每个线程无法确定等待的是 外部还是内部事件,或者计划在某特定时间再次运行。Linux可算出第一个线程预定何时运行,并相应地在CPU置于空闲模式之前设定定时器工作。可变超时设定不会对调度程序造 成很大的负担,但却能节省电源和处理时间。图6为CPU性能控制单元为嵌入式Linux系统提供了降低CPU工作频率的方法流 程图,CPU在降低功耗方面的最新进展表明,CPU消耗的能量与驱动CPU的时钟频率以及应 用其内核上的电压平方成正比。CPU允许动态降低时钟速度。降低一半时钟速度,功耗将成 比例下降。但是仅采用这种技术实现节能,还需要一些技巧.因为执行的代码可能要两倍 长的时间才能完成,即使这样也不会省电这里的CPU性能控制单元为嵌入式Linux系统提供了降低CPU工作频率的方法步 骤如下步骤41 外设处于不工作状态的时候,相应降低控制该外设的时钟频率。例如当 外设板上LCD控制器需要使用一个储存在片外SDRAM中的帧缓存。当LCD控制器工作时,需 要指定足够高的内存总线频率来满足显示器刷新速率的需要。在LCD不工作的情况下(例 如当PDA仅作为MP3播放器使用时),降低SDRAM总线频率,可以节省整个系统的功耗。步骤42 采用动态降低电压方法。越来越多的CPU允许降低电压,以适应CPU时 钟速度的下降,这样在降低时钟速度时也能省电。事实上,只要CPU不饱和,频率和电压就 能不断减少,这样还是能完成工作,而消耗的电源总体上却比较低。步骤43 为不完全应用cpu带宽的线程降低CPU时钟频率。并不是所有线程都消 耗同样多CPU带宽,完全应用CPU带宽的线程,会随着CPU时钟速度下降而花更长的时间才 能完成,这些线程使用分配给它们的每一个周期。但是在某些特殊情况下,I/O线程采用分 配给它的所有CPU周期,即便CPU时钟速率下降,也要用同样长的时间才能完成。例如,像 很多PDA使用的PCMCIA卡接口,当数据写人快闪存储卡时,系统瓶颈不是CPU的速度,而是 物理总线接口以及卡的固件为擦掉和重新编程闪存所花的时间,因此当此类线程运行时, 可以适当得降低cpu频率。综上,通过实施本发明,可以减少嵌入式Linux设备的耗电量,以及减少嵌入式 Linux设备处理器使用寿命。以上对本发明实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及 实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想; 同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会 有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
一种嵌入式Linux设备低功耗电源管理设备,其特征在于,包括Linux内核电源管理接口单元,用于为嵌入式高耗能外设提供电压和频率的快速调节接口;空闲模式处理单元,用于为嵌入式Linux系统提供了空闲模式的进入和退出处理方法;事件减少处理单元,用于为嵌入式Linux系统提供了如何让嵌入式设备最长时间工作在空闲模式的处理方法;CPU性能控制单元,用于为嵌入式Linux系统提供了降低CPU工作频率的处理方法。
2.如权利要求1所述的嵌入式Linux设备低功耗电源管理设备,其特征在于,所述 Linux内核电源管理接口单元为嵌入式外设建立内核电源管理接口步骤如下使用内核函数pm_regiSter对设备的每个实例(instance)进行注册; 在对硬件进行操作之前调用内核函数pm_aCCeSS ;在系统进入suspend状态,或者从suspend状态恢复的时候系统调用内核函数pm_ callback ;当设备不使用时调用pm_dev_idle函数; 当被设备被卸载的时候,使用pnumregister取消设备的注册。
3.如权利要求1所述的嵌入式Linux设备低功耗电源管理设备,其特征在于,所述空闲 模式处理单元为嵌入式Linux系统提供了空闲模式的进入和退出处理方法步骤如下当Linux检查到所有线程都处于阻塞状态,将CPU置于空闲模式; 当检测到任何中断时候,CPU从空闲模式中被唤醒,然后继续执行后面的代码; 如果事件不能直接连接到外部中断,用系统定时器定期唤醒CPU。
4.如权利要求3所述的嵌入式Linux设备低功耗电源管理设备,其特征在于,所述如果 事件不能直接连接到外部中断,用系统定时器定期唤醒CPU包括在等待一个事件并且知道只要事件发生后在IOms内能检测到,那么可以启动IOms定 时器,并把CPU置于空闲模式;每次处理定时中断时都要检查事件状态,如果状态没有变 化,就立刻回到空闲模式。
5.如权利要求1所述的嵌入式Linux设备低功耗电源管理设备,其特征在于,所述事件 减少处理单元为嵌入式Linux系统提供了如何让嵌入式设备最长时间工作在空闲模式的 处理方法包括在进入空闲模式前关闭时隙中断信号,只有再次出现中断信号时才被唤醒; 为调度程序进行可变超时设定;Linux知道每个线程无法确定等待的是外部还是内部 事件,或者计划在某特定时间再次运行;Linux可算出第一个线程预定何时运行,并相应地 在CPU置于空闲模式之前设定定时器工作;可变超时设定不会对调度程序造成很大的负 担,但却能节省电源和处理时间。
6.如权利要求1所述的嵌入式Linux设备低功耗电源管理设备,其特征在于,所述CPU 性能控制单元为嵌入式Linux系统提供了降低CPU工作频率的处理方法包括外设处于不工作状态的时候,降低控制该外设的时钟频率; 采用动态降低电压方法;为不完全应用cpu带宽的线程降低CPU时钟频率。
7.如权利要求6所述的嵌入式Linux设备低功耗电源管理设备,其特征在于,所述外设 处于不工作状态的时候,降低控制该外设的时钟频率包括当外设板上LCD控制器需要使用一个储存在片外SDRAM中的帧缓存; 当LCD控制器工作时,需要指定足够高的内存总线频率来满足显示器刷新速率的需要;在LCD不工作的情况下降低SDRAM总线频率。
全文摘要
本发明实施例公开了一种嵌入式Linux设备低功耗电源管理设备,其包括Linux内核电源管理接口单元,用于为嵌入式高耗能外设提供电压和频率的快速调节接口;空闲模式处理单元,用于为嵌入式Linux系统提供了空闲模式的进入和退出处理方法;事件减少处理单元,用于为嵌入式Linux系统提供了如何让嵌入式设备最长时间工作在空闲模式的处理方法;CPU性能控制单元,用于为嵌入式Linux系统提供了降低CPU工作频率的处理方法。通过实施本发明,可以减少嵌入式Linux设备的耗电量,以及减少嵌入式Linux设备处理器使用寿命。
文档编号G06F1/32GK101968678SQ201010249878
公开日2011年2月9日 申请日期2010年8月10日 优先权日2010年8月10日
发明者张洁, 李苗, 殷伟, 王栋, 罗笑南 申请人:东莞环亚高科电子有限公司;广州鼎宇电子科技有限公司;中山大学