方案二:系统在空闲状态下不关闭实时时钟,而是进入最低的工作频率,此时处理器处于低功耗工作状态,操作系统仍然可以进行任务调度。当有用户任务时,由用户任务先把实时时钟频率升高,然后再运行用户代码。其工作时序见图3。其中每次进入用户任务之前,先将实时时钟频率升高,用户任务运行结束进入空闲状态时,再将实时时钟频率降低。
测试和方案对比:
首先在处理器μ′nSPTM处理器上移植μCOS-Ⅱ实时操作系统。运行正常后测试用的用户任务是以1 Hz的频率点亮LED指示灯。表2是测试数据(外电源电压4.82 V,稳压后处理器电压3.3 V)。
测试结论:
虽然以整机电流进行测试不能完全反映处理器的工作情况,但从以上数据可以知道,采用两种方案确实可以降低系统功耗,而且方案一的效果更好,但需要占用一个定时器,在测试中发现当任务增加后功耗很快达到方案二水平,且有时不能正常唤醒;方案二很稳定,而且不需要定时器,用户可以根据任务的运算量设定不同的时钟频率,如需要大的运算任务,可在进入用户任务之前将时钟频率设置为较高值,反之设置为较低值。以上采用的方法只是动态地改变系统的频率,没有动态地改变电压水平,因此在降低嵌入式系统功耗方面依然有进一步的潜力。但动态改变电压水平需要更多硬件支持,在目前广泛使用的中低端处理器中,通过扩展实时操作系统内核动态地改变系统的频率对降低嵌入式系统功耗是大有裨益的。
4 结 语
在嵌入式系统设计中,由于普遍存在CPU高速运行功能和有限任务处理要求的巨大差异,会形成系统在时间与空间上巨大的无效操作。如果能够根据系统的工作状态自动地进行功耗管理,使系统工作于系统状态相适应的功耗模式,故能极大地降低系统功耗,延长电池待机时间。这些工作对嵌入式开发有重大的意义。