嵌入式系统的低功耗软件设计
低功耗是嵌入式电子产品必须具备的一个关键特性,在硬件技术飞速发展和日益完善的时候,已经很难有功耗方面的突破了。所以现在降低产品功耗主要是依靠软件来处理,必须依靠软件让整个系统在各个时候电流达到最小。不管是操作系统、BIOS控制程序还是外设驱动程序,这些程序将决定了最终产品的功耗水平,因此在开发时必须加以考虑。本论文将以智能电话为例,介绍一种通过软件降低功耗的方法,可供嵌入式设计工程师们参考。实现省电降低功耗的方法有很多,本文不可能面面俱到,将主要介绍软件程序如何控制物理层进行省电。
具体实现措施
系统描述及设计思想
目前国内智能电话的数字多媒体解决方案一般通过基于ARM7等内核的基带嵌入式处理芯片外接多媒体处理芯片来实现。嵌入式处理器是硬件系统的核心,运行功耗占系统功耗的大部分。目前,嵌入式处理芯片一般采用RISC体系结构,通过简化指令设计、引入流水线技术、指令预取、大量寄存器操作和高速缓存等技术提高运行效率,并采用低电压工作模式以降低运行功耗。嵌入式处理芯片一般为应用开发提供了三种工作模式:运行模式(Run)、空闲模式(Idle)和休眠模式 (STandby)。运行模式即正常工作模式,CPU全速运行;空闲模式时CPU是静态的,但LCD刷新电路和晶振都工作。在不同运行模式下,处理器工作时功耗数值差别较大;以Cirrus Logic公司EP7211(ARM7核)嵌入式处理器为例,开发手册中写到,在18MHz工作频率下,运行时消耗电流是20mA,空闲时消耗电流是 6mA,而休眠时消耗电流300mA。
本嵌入式产品系统(智能电话)中的基带嵌入式处理器芯片将采用展讯的SC6600芯片平台,多媒体芯片则采用广达的QCP1880芯片平台,音频编解码芯片采用WolfsON 8750芯片,LCD采用HIMAX8309。作为手机产品,电池一般在800~1200mA时左右,待机要求80小时以上,这就要求系统在待机状态时候的电流在10mA以下,关机后的电流在mA级以下。SC6600在睡眠模式下一般有3~5mA左右电流,QCP1880在睡眠模式下一般会有10mA左右电流,断电后在200mA左右,音频部分在空闲模式大概有270mA,在待机时SC6600的3~5mA固有电流没办法省掉,所以QCP1880必须断电。
低功耗设计的基本思想是:让系统各个部分在需要的时候才处于工作状态,其他时候处于各部分的省电状态。大部分的嵌入式处理器都具有正常工作模式和省电工作模式,最常用的是空闲模式,此时处理器内核指令执行部分关闭,时钟频率降低,空闲模式比处理器执行指令时的功耗要小得多。空闲模式一个主要特点是其进入退出基本上不需要额外开销,通常一个或几个指令周期能完成。外设部分硬件一般也有省电处理设计,软件主要是控制外设在没有工作时处于省电状态,甚至关掉整个外设,在需要时再挂上。
功能设计
在大体上,本系统省电处理主要分为三块:基带芯片(SC6600),普通外设(能很方便地在使用时打开,不用时关掉的设备,如LCD等),多媒体芯片(QCP18800)。
*基带芯片(SC6600)的处理:
由于很多中断都能把处理器从空闲模式中唤醒,所以采用智能等待这种模式。让处理器平常处于空闲模式,把随机事件和实时要求比较高的都挂在中断上,当事件发生处理器能很快被唤醒,处理这些事件。其他有规律的事件和实时性要求不高的用定时器去进行扫描。这种等待机理应用很普遍,现今大多数PDA和智能电话都是由具有空闲模式功能的处理器和操作系统控制,处理器只有在有用户操作或有任务处理时才处于正常工作状态,其他时候都是处于空闲(SLEEP)状态,这样最大程度提高电源效率。例如,在用手机看电子书时,处理器处于空闲状态,当用户翻页或其他操作(按键、触屏等)时,处理器将被唤醒处理相应的操作,处理完又进入空闲状态。
对于CPU的处理,后台起一个线程监控系统CPU的使用情况,当CPU处于空闲状态时,且系统其他模块也允许CPU 睡眠的时候,CPU立刻进入睡眠模式。
基带芯片的处理流程图见图1。
![](http://m.amcfsurvey.com/editerupload/fetch/20140120/218859_1_0.jpg)
图1 基带芯片的处理流程
*普通外设的省电处理:
除LCD 和背光外,其他外设在CPU进入睡眠模式之前被关掉。LCD和背光用做用户的操作界面需要的是友好性,所以让用户可以设置。在用户设定的时间用完后自动熄灭。其他外设如音频模块,在没有声音时就关闭,需要播放声音时再打开。音频模块本来有睡眠模式,但其电流没达到要求,所以断开了其电源让它进入断电模式,这里有个缺点是,以前初始化和后来设置好的参数就会丢失,需要在打开初始化时重新设置(浪费些资源记录它的状态)。LCD及背光处理流程图见图2。
图2 LCD及背光处理流程图
评论