1 嵌入式系统的功耗
嵌入式系统的平均功耗和电池容量共同决定待机时间,平均功耗越小、电池容量越大则待机时间越长。而嵌入式系统的功耗可以分为静态功耗和动态功耗,静态功耗是由CMOS电路的漏电流形成,现在的技术已经使漏电流减少到尽可能小,因此静态功耗一般占总功耗的比例很小;动态功耗是由CMOS电路的分布电容充放电形成,该功耗占总功耗的比例很大,因此也是主要的研究对象。动态功耗的大小可由式PD=CL×VDD2×f表示,CL是CMOS电路的分布电容,与芯片尺寸和工艺有关;VDD是电源电压;f是系统的工作频率,降低工作频率有助于降低系统功耗,但会使系统工作速度下降。
由上述分析可知,降低嵌入式系统的功耗主要有两种途径。第一种是动态频率调节(DFS),它可以改变不同电压域上的时钟频率。虽然这种方法可以消除空闲等待的时间,但是却不能减少能量的消耗。比如将一个任务以通常情况的一半频率来运行,意味着完成这个任务要通常的两倍时间。DFS有用的地方在于,它可以降低峰值功耗。第二种方式是动态地电压和频率调节(DVFS)。DVFS是建立在DFS基础之上的,它既要降低频率,又要降低电压。由于电压对动态功耗二次方的关系,DVFS确实能将能量的消耗节省下来。为此ARM公司的Faisal M.Goriawalla先生提出IEM(智能能量管理)方案,该方案采用步进策略、前瞻策略或平均数策略等算法调节系统的频率和电压,对于最终产品来说,则可以节省15%~20%的能量消耗(来源于ARM公司OEM合作伙伴的数据)。
2 实时操作系统μCOS-Ⅱ和凌阳处理器μ′nSPTM简介
μCOS-Ⅱ是一个简单、高效的嵌入式实时操作系统内核,具有可抢占的实时多任务调度系统功能。μCOS-Ⅱ提供很多系统服务,例如邮箱、消息队列、信号量、块大小固定的内存的申请与释放、时间相关函数等。μCOS-Ⅱ2.5版本支持64个任务,每个任务一个特定的优先级。优先级越高,数字越小。系统占用了8个任务,保留优先级为0,1,2,3,OS LOWEST_PRIO-3,OS_LOWEST_PRIO_2,OS_LOWEST_PRIO_1,OS_LOWEST_PRIO_0。
凌阳16位处理器μ′nSPTM被广泛应用在家用电器控制器、仪器仪表、工业控制、娱乐和语音控制等场合。在功耗控制方面,μ′nSPTM采用CMOS制造工艺,同时增加了软件激发的弱振方式、空闲方式和掉电方式,极大地降低了其功耗。可以通过对P SystemClock的设置进行选择CPU的时钟可以在O.32~49.152 MHz范围内可编程调节。当系统处于备用状态下(时钟处于停止状态),耗电仅为2μA@3.6 V。μ′nSPTM处理器满足μCOS-Ⅱ实时操作系统移植的条件。
凌阳16位处理器μ′nSPTM的时钟有多种选择。系统采用32 768 Hz的实时时钟,实时时钟经过PLL倍频电路以后,产生系统时钟频率FOSC,FOSC再经过分频得到CPU时钟频率。其工作原理如图1所示。
由图1可知:μ′nSPTM的时钟有多种选择,从O.32~49.152 MHz范围内可编程调节,另外还可以关闭32 768 Hz实时时钟进入睡眠状态。在3.6 V电源电压下,处理器的工作电流见表1。
3 μCOS-Ⅱ实现低功耗的原理
μCOS-Ⅱ总是运行进入就绪状态的优先级最高的任务。一旦优先级高的任务进入就绪态,就可以将CPU从低优先级任务中抢过来。在μCOS-Ⅱ初始化时,会建立一个优先级最低的任务——空闲任务,在没有任务进入就绪态的时候,空闲任务就会开始运行。空闲任务会调用一个函数——OSTaskIdleHook()。这是留给用户使用的内核扩展接口。空闲任务实际上并没有什么事情可做,只是一个等待中断的无限循环。因此用户可以利用OSTaskIdleHook(),降低或者关闭系统时钟,使CPU进入低功耗模式。在实际的测试中,可修改文件OS_CPU_A.ASM,添加控制实时时钟的例程,然后在应用程序或函数OSTaskIdleHook()中调用,这样更便于程序阅读。