《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 采用Linux系统的非便携式产品节能研究
采用Linux系统的非便携式产品节能研究
2014年微型机与应用第19期
王少卿
深圳市泛海三江电子有限公司,广东 深圳 518054
摘要: 针对采用Linux操作系统的处于长期供电状态下的产品的节能情况做了一定的分析,分析了Linux和Android操作系统的节能方案,提出不同功能和使用环境的产品要分别做对应的节能处理的思想,最后以数字对讲产品为例,阐述了具体实现过程。
关键词: Linux 休眠 节能 S5PV210
Abstract:
Key words :

  摘 要: 针对采用Linux操作系统的处于长期供电状态下的产品的节能情况做了一定的分析,分析了Linux和Android操作系统的节能方案,提出不同功能和使用环境的产品要分别做对应的节能处理的思想,最后以数字对讲产品为例,阐述了具体实现过程。

  关键词: Linux;休眠;节能;S5PV210

0 引言

  采用Linux系统的非便携式产品指的是产品不存在电池供电,具有长期稳定电源供电并采用Linux操作系统平台的一类产品。例如数字楼宇对讲产品、智能网络产品、智能家居产品等。

  与之相对的是便携式产品。目前在便携式产品领域,如智能手机产品、平板电脑产品等,普遍采用谷歌Android或者苹果ios操作系统,这些操作系统针对电池供电的系统做了精心的优化,尽可能地保持产品处于低功耗的工作模式,保证电池最大限度的续航时间。但是在本文提及的非便携式产品领域,由于不存在电池供电的苛刻环境,加之Linux操作系统是一个通用的操作系统,没有针对某类产品做出特别的优化措施,导致开发者和使用者都没有将节能问题作为一个重要问题进行思考。在全球环境不断恶化、节能减排呼声日益高涨的背景下,越来越需要开发更加节能环保的产品。本文基于这个目的,按照Linux系统节能的设计方法,结合产品的具体功能和使用环境,做了一些有益的探索和研究。

1 硬件能耗分布情况

  这里提取一般嵌入式产品的几大部分进行分析。对于一般嵌入式产品而言,主要是由处理器芯片及其外围电路加上本产品所需的功能芯片及其外围电路组成。随着集成电路技术的日新月异,现在的处理器芯片内部集成了多种功能电路,构成了一个庞大的耗能系统。

001.jpg

  图1为一个简单功能的产品硬件示意图,箭头指示了功耗流向,椭圆形部分是各部件功耗的大致说明。由图可见,对于一个嵌入式产品而言,解决产品功耗问题,也就是要解决CPU功耗和外设功耗问题,需要从CPU和各外设的电源、频率管理部分入手。目前处理器芯片和一些外设芯片都具备有低功耗模式,硬件对节能的支持是完善的,需要软件进行合理处理,达到降低功耗的目的。下面首先分析一下操作系统是如何解决这个问题的。

2 Linux操作系统和Android操作系统节能设计方案

  2.1 Linux操作系统节能方案设计

  Linux操作系统设计了两种标准来解决节能问题,一种是Advanced Power Management(APM),另外一种是Advanced Configuration and Power Interface (ACPI)。这两种方案都是针对X86架构上存储在Bios芯片中的Linux电源管理机制而设计的。由于嵌入式系统不存在Bios芯片,目前的解决方法是模拟ACPI状态的方式实现电源管理,目前ACPI按程度不同有4种睡眠状态[1],如表1所示。

005.jpg

  由于嵌入式系统的特殊性,目前Linux操作系统针对嵌入式处理器睡眠状态主要是模拟Suspend to RAM(mem)状态,即ACPI睡眠状态S3。

  Linux操作系统针对嵌入式处理器睡眠状态具体的操作实现过程是同Linux内核框架、驱动模型(LDM)密切相关的,正常的睡眠实现过程如图2所示。

002.jpg

  图中虚线框内是对所有注册到dpm_list的设备进行休眠,按照LDM的设备类型,这些设备包括class、type、bus等[2],但凡有一个注册的设备休眠失败,则整个休眠中断,系统恢复到休眠前的状态。

  2.2 Android操作系统节能方案设计

  Android操作系统是基于Linux操作系统,针对手机、便携式产品做了特别优化的一款操作系统。此类产品在节能方面要求极高,同时需要灵活的节能方法来完成产品需要的不同功能,这里简单分析一下该系统的节能过程。

  Android操作系统的节能解决方案框架还是依赖Linux操作系统的。但是标准Linux操作系统的节能解决方案解决不了手机所必须的两项功能:

  (1)手机要支持在LCD屏幕关闭的状态下,后台应用程序依然保持工作(因为LCD屏幕是耗电大户)。例如播放歌曲的线程在屏幕关闭的情况下可以正常运行。

  (2)应用程序须具备阻止系统进入休眠状态的能力。譬如手机正在长时间的播放视频,这个时候系统进入休眠状态显然是不可以的。

  为了满足这两类产品功能的需要,Android操作系统在标准Linux操作系统上引入了Early Suspend/Late resume机制和Wake Lock机制[3]。

  Early Suspend/Late resume机制解决了诸如耗电大户LCD、触摸屏等组件提前关闭而不影响应用程序正常工作的问题。其实现机制是在Linux正常的休眠状态基础上增加了一个early suspend状态,这个状态可以休眠需要提前休眠的设备组件,达到一定的节能效果。

  Wake Lock机制实质上是一个锁机制。系统在进入休眠状态前会检测这个锁,如果应用程序事先申请了一个wake lock,则系统就认为此次休眠条件不成立,拒绝此次休眠要求。Android系统设计了两种类型的wake lock,一种是WAKE_LOCK_SUSPEND(阻止系统进入休眠状态),一种是WAKE_LOCK_IDLE(阻止系统进入空隙状态)。同时还可以设定应用程序拥有wake lock的时间机制,时间到就会自动释放该锁。这使得Wake Lock机制可以灵活应对各种复杂的场合。

  图3为Android系统的休眠流程。

003.jpg

3 非便携式产品功耗问题的不足及应对方案

  作为基于PC设备发展起来的操作系统,Linux操作系统目前已经成功应用在ARM、MIPS等多种架构处理器平台下,衍生出种类繁多的产品形态。由于各种产品形态功能、要求各不相同,Linux操作系统无法提供一种“大而全”的解决方案。这就需要产品开发者根据自己开发的产品的特殊要求和功能,在标准Linux系统平台上,通过类似于前文所述Android系统的节能解决方案,提出自己的解决方案。

  本文以作者开发的一款非便携式产品——数字楼宇对讲设备为例进行阐述。该数字楼宇对讲设备以韩国三星公司生产的S5PV210(ARM Cortex-A8内核)作为主处理器芯片,搭配Linux2.6.35.7操作系统。该类产品按安装位置和产品形态不同,可以分为室内机、梯口机、围墙机和管理机等。功能上以室内机为例,室内机安装于用户室内,可以响应梯口机、管理机的以太网呼叫,实现开锁功能;也可以呼叫其他室内机、管理机;本机还可以实现多种类似平板电脑的功能供用户休闲娱乐使用。

  室内机作为一种典型的长期供电设备,在实际使用环境中大部分时间都是空闲的,如果不采取一种良好的节能措施,势必造成能源的浪费。如果采用标准Linux的节能方案,则会带来以下问题:S5PV210不支持WOL(Wake On Lan)功能,即休眠后无法通过网络唤醒设备。

  为了解决这个问题,需要对Linux标准节能方案进行改造。为了支持网络唤醒功能,需要在系统休眠状态下保持网络芯片正常工作,保持应用程序对网络响应的线程不休眠,这样才能响应其他设备通过网络进行的呼叫。如要保持线程的正常工作,则CPU也必须处在工作状态。以以上需求为基本出发点,修改Linux标准节能方案,如图4所示。

004.jpg

4 结论

  通过对Linux的标准节能流程进行改造,那些非便携式产品也可以在具体的使用场合实现节能的目标。由于基于Linux系统的产品种类繁多,各自都有不同的功能和节能目标,因此需要工程师深入了解Linux标准节能流程,同时还要对节能目标有清晰的认识,才能达到预期的节能效果。

参考文献

  [1] Hewlett-Packard Corporation, Intel Corporation,Microsoft Corporation, et al. Advanced configuration and power interface specification,Revision 5.0a[EB/OL].(2013-11) [2014-07-01]. http://acpi.info/spec.htm.

  [2] Corbet J, Rubini A,Greg K H. Linux设备驱动程序(第三版)[M].魏永明 , 耿岳 , 钟书毅, 译.北京:中国电力出版社,2006.

  [3] Google Corporation. Android power manager, Android 4.4 r1 [EB/OL].(2014-07)[2014-07]. http://developer.android.com/ intl/zh-cn/reference/android/os/PowerManager.html#.


此内容为AET网站原创,未经授权禁止转载。