中国·芯片交易在线
首页 | 供应信息 | 求购信息 | 库存查询 | 新闻中心 | 展会资讯 | IC厂商 | 技术资料 | 自由区域
   新闻首页 |  行业动态 | 新品发布 | 政策法规 | 科技成果 | 模拟技术 | 嵌入系统 | 传感控制 | 存储设计  
当前位置:IC72首页>> IC新闻中心>> 嵌入系统 >>电子行业新闻正文

嵌入式系统的低功耗软件方案

时间:2007/5/25 10:10:00  作者:  来源:ic72  浏览人数:1734
 
 

      引言

      低功耗是嵌入式电子产品必须具备的一个关键特性,在硬件技术飞速发展和日益完善的时候,已经很难有功耗方面的突破了。所以现在降低产品功耗主要是依靠软件来处理,必须依靠软件让整个系统在各个时候电流达到最小。不管是操作系统、BIOS 控制程序还是外设驱动程序,这些程序将决定了最终产品的功耗水平,因此在开发时必须加以考虑。本论文将以智能电话为例,介绍一种通过软件降低功耗的方法,可供嵌入式设计工程师们参考。实现省电降低功耗的方法有很多,本文不可能面面俱到,将主要介绍软件程序如何控制物理层进行省电。

      具体实现措施

      系统描述及设计思想目前国内智能电话的数字多媒体解决方案一般通过基于ARM7 等内核的基带嵌入式处理芯片外接多媒体处理芯片来实现。嵌入式处理器是硬件系统的核心,运行功耗占系统功耗的大部分。目前,嵌入式处理芯片一般采用RISC 体系结构,通过简化指令设计、引入流水线技术、指令预取、大量寄存器操作和高速缓存等技术提高运行效率,并采用低电压工作模式以降低运行功耗。嵌入式处理芯片一般为应用开发提供了三种工作模式:运行模式(Run)、空闲模式(Idle)和休眠模式(Standby)。

      运行模式即正常工作模式,CPU全速运行;空闲模式时CPU是静态的,但LCD刷新电路和晶振都工作。在不同运行模式下,处理器工作时功耗数值差别较大;以Cirrus Logic 公司EP7211(ARM7核)嵌入式处理器为例,开发手册中写到,在18MHz 工作频率下,运行时消耗电流是20mA,空闲时消耗电流是6mA,而休眠时消耗电流300A。

      本嵌入式产品系统(智能电话)中的基带嵌入式处理器芯片将采用展讯的SC6600芯片平台,多媒体芯片则采用广达的QCP1880芯片平台,音频编解码芯片采用Wolfson 8750芯片,LCD 采用HIMAX8309。作为手机产品,电池一般在800~1200mA时左右,待机要求80小时以上,这就要求系统在待机状态时候的电流在10mA以下,关机后的电流在mA级以下。

      SC6600 在睡眠 模式下一般有3~5mA 左右电流,QCP1880在睡眠模式下一般会有10mA左右电流,断电后在200A左右,音频部分在空闲模式大概有270A,在待机时SC6600 的3~5mA固有电流没办法省掉,所以QCP1880必须断电。

      低功耗设计的基本思想是:让系统各个部分在需要的时候才处于工作状态,其他时候处于各部分的省电状态。大部分的嵌入式处理器都具有正常工作模式和省电工作模式,最常用的是空闲模式,此时处理器内核指令执行部分关闭,时钟频率降低,空闲模式比处理器执行指令时的功耗要小得多。空闲模式一个主要特点是其进入退出基本上不需要额外开销,通常一个或几个指令周期能完成。外设部分硬件一般也有省电处理设计,软件主要是控制外设在没有工作时处于省电状态,甚至关掉整个外设,在需要时再挂上。

      功能设计在大体上,本系统省电处理主要分为三块: 基带芯片(SC6600),普通外设(能很方便地在使用时打开,不用时关掉的设备,如LCD等),多媒体芯片(QCP18800)。

      ●基带芯片(SC6600)的处理:

      由于很多中断都能把处理器从空闲模式中唤醒,所以采用智能等待这种模式。让处理器平常处于空闲模式,把随机事件和实时要求比较高的都挂在中断上,当事件发生处理器能很快被唤醒,处理这些事件。其他有规律的事件和实时性要求不高的用定时器去进行扫描。

      这种等待机理应用很普遍,现今大多数PDA和智能电话都是由具有空闲模式功能的处理器和操作系统控制,处理器只有在有用户操作或有任务处理时才处于正常工作状态,其他时候都是处于空闲(SLEEP)状态,这样最大程度提高电源效率。例如,在用手机看电子书时,处理器处于空闲状态,当用户翻页或其他操作(按键、触屏等)时,处理器将被唤醒处理相应的操作,处理完又进入空闲状态。

      对于CPU的处理,后台起一个线程监控系统CPU的使用情况,当CPU处于空闲状态时,且系统其他模块也允许CPU 睡眠的时候,CPU立刻进入睡眠模式。

      基带芯片的处理流程图见图1。

IC72新闻中心

      图1 基带芯片的处理流程

IC72新闻中心
   图2 LCD 及背光处理流程图

      ● 普通外设的省电处理:

      除LCD 和背光外,其他外设在CPU进入睡眠模式之前被关掉。LCD和背光用做用户的操作界面需要的是友好性,所以让用户可以设置。在用户设定的时间用完后自动熄灭。其他外设如音频模块,在没有声音时就关闭,需要播放声音时再打开。音频模块本来有睡眠模式,但其电流没达到要求,所以断开了其电源让它进入断电模式,这里有个缺点是,以前初始化和后来设置好的参数就会丢失,需要在打开初始化时重新设置(浪费些资源记录它的状态)。LCD及背光处理流程图见图2。

      ● 关于多媒体芯片(QCP1880):

      (1) VDD( Power for Operation ModeModule);(2)IOVDD (Power for All IO Module);(3) VDD_ON( Power for ByPass Mode Module)。

      说明:1 . 切断VDD 和保持P DEN 为低,QCP1880 耗电将低于200A。2. QCP1880进入IDLE(空闲)状态,耗电在10mA 左右。3.QCP1880进入最省电状态后,其GPIO口不能保持。如果进入这种状态后, 要让GPIO口保持高,则外部要通过上拉电阻接到IOVDD,如果要GPIO口保持高低,则外部要通过下拉电阻接到地。4.切断VDD和保持PDEN为低后,QCP1880 里的程序将会丢失,重新装载的时间比较久(500ms 左右)。

      在应用方面芯片主要功能是:MP3/MIDI/AAC/AMR/MP4 回放;AMR、MP4 录制;拍照和图片回放;USB/UDISK;GP IO 接口;CODEC(声卡驱动);SD 卡文件系统。

      该芯片在待机时,电流为10mA,切断主电源电流能下降到A级。工作时,电流较大,且根据功能的不同而不同。多媒体芯片能够自动到待机状态。不能达到要求,必须要让其进入断电状态。又因为涉及模块比较多,所以不能简单的直接关闭QCP1880。针对于本嵌入式系统不能随意切断QCP 电源的原因,所以采用了查询的方法。即在CPU进入睡眠模式之前会查询QCP1880的状态,当LCD和背光都是熄灭的状态下,会切断QCP1880 的主电源。(因为LCD部分电流较大,且频繁下载QCP的效率低下,所以在LCD和背光都亮时不会切断QCP 的主电源)。

      在唤醒后同样有3 类,其中唤醒CPU和普通外设的流程比较简单,所以略过。唤醒QCP 存在一个下载的过程(切断电源时,QCP内部的代码已经丢失),如下载完全功能的版本需要的时间比较长,在一些对时间要求严格的地方有些问题(如按键时指示灯的响应,指示灯是用QCP1880控制的)。这里采用的是先下载一个比较小的版本,完成那些需要快速响应的操作,然后再下载完全功能的版本,当然这跟省电的关系不大,只是省电引起的一个小问题。值得注意的是此处需要QCP 在切换版本时GPIO能保持不变。唤醒后,系统一般会先调用QCP GPIO 的功能,每个QCP 的API都有调用QCP_LOCK();所以在这里进行装载工作。在处理上,系统也分了3类来处理这些外设,其中基带芯片部分和一般外设一类,LCD处理一类,QCP 芯片部分处理一类。基带芯片部分的处理和LCD 的处理完全独立,LCD会影响QCP 芯片的处理。QCP的处理流程图见图4。

      部分接口函数详细代码设计由于通过控制各个模块的时钟频率以及电源开关可以达到省电效果,比如说SD存储器的开关,不用SD存储器的时候就可以关掉,或是不需要高速存取的时候,就可以把SD存储器的频率降低,以求省电。下面以LCD模块的代码为例来说明LCD 省电的详细思路。

      其他模块的代码设计思想与其一致,这里不再赘述。

      #define POWER_SAVING_TIME(60*1000) // 间隔时间

      #define LCD_CONTROLLER_POWER0x22400000 //LCD控制寄存器的地址

      extern unsigned intSystem_Time; // 全局变量存储系统时间

      unsigned int

      Last_Keystroke_Time; //最后的触发事件的时间

      void Sys_SetAlarm(unsigned int T); //设置当前任务时间

      void User_Press_A_Key(void) // 当有外部事件触发将调用此函数

      { if ( * ( u n s i g n e d i n t*)(LCD_CONTROLLER_POWER) == 0) {

      * ( u n s i g n e d i n t*)(LCD_CONTROLLER_POWER) = 1;

      }

      }

      Void User_Input_Task(void) // 当有触发事件到来执行该函数

      {

      static unsigned intprevious_key_time;

      p r e v i o u s _ k e y _ t i m e =Last_Keystroke_Time;while(1) {

      Sys_SetAlarm(POWER_SAVING_TIME);

      if( p re vio us _ k e y_ t ime = =Last_Keystroke_Time) {/*一分钟内没有任何外部事件触发,将关闭LCD */

      * ( u n s i g n e d i n t*)(LCD_CONTROLLER_POWER) = 0;

      }

      elsep r e v i o u s _ k e y _ t i m e =Last_Keystroke_Time;

      }

      }

      IC72新闻中心
      图3 QCP1880 的电源由三组电源组成

      IC72新闻中心
      图4 QCP 的处理流程

      IC72新闻中心
      图5 整个多媒体芯片系统的转化流程示意图

      省电性能测试总结

      嵌入式系统目前在多个行业得到广泛应用,低功耗是其性能指标之一。基于功耗实现设计硬件平台后,低功耗实现主要从软件方面来解决。本文基于嵌入式系统特征及其功能实现,采用程序优化技术来降低功耗。经过测试,整合多媒体芯片的无线终端平均功耗下降了50%。其中在正常待机时,电流为400mA左右,而在睡眠时降到了200mA左右;如果应用深度睡眠(关闭SC6600、QCP1880 和所有设备,维持一个32kHz 的时钟)电流甚至可以降到10~20mA,完全满足长时间待机。实验表明,利用本软件构架,可以对无线终端实行之有效的省电管理。现已用于诸多无线移动多媒体终端项目(智能电话等),效果理想。由于限于篇幅,不再赘述。

 
【相关文章】
·用UML建模开发嵌入式软件
·基于DSP的蓄电池充放电装置研究
·嵌入式Linux系统的动态电源管理技术
·EDA技术在微机接口技术实验教学中的应用
·嵌入式移动数据库的应用研究
·嵌入式系统的低功耗软件方案
·嵌入式系统的软硬件协同设计
·一种基于UML的嵌入式实时应用软件开发环境
·嵌入式实时系统中的优先级反转问题
·嵌入式操作系统的新动向
·分布式对象中间件技术
·嵌入式MPEG—4解码系统的设计与实现
·连续脉冲信号延迟线的实现
·基于Quick Capture技术的摄像头驱动方案
·基于模块化设计的嵌入式软件测试方法
 
 
IC新闻搜索
 
热点新闻
基于红外超声光电编码器的室内移动小车定位系
基于闪烁存储器的TMS320VC5409DSP并行引导装载方法
非移动市场需求飙升,ARM预计2010年出货量超50亿片
一种快速响应的电容式湿度传感器感湿薄膜设计
利用特殊应用模拟开关改进便携式设计
无线传感器网络跨层通信协议的设计
基于ARM9内核Processor对外部NAND FLASH的控制实现
基于GSM技术的汽车防盗系统的设计
热电阻在烟叶初烤炕房温度控制中的应用
高速数据转换系统对时钟和数据传输的性能要求
友情连接
 关于我们  IC论坛  意见反馈  设置首页  广告服务  用户帮助  联系我们
copyright:(1998-2005) IC72 中国·芯片交易在线
(北京)联系电话:(010)82614113、82614123 传真:(010)82614123 客户服务:service@IC72.com 库存上载:IC72@IC72.com
在线MSN咨询:ic72sale8@hotmail.com 通信地址:北京市西城区西直门内大街2号大厦15层 邮政编码:100013
(深圳)联系方式: 在线MSN咨询:ic72sale6@hotmail.com 在线QQ咨询:191232636 通信地址:深圳市福田区振华路
注 册 号: 1101081318959(1-1)

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9