铁路交通信息系统PDA的低功耗设计
嵌入式系统开发中除了硬件低功耗措施外,也可以从软件方面来设计。嵌入式系统软件低功耗措施一般涉及到处理器工作状态间的切换、应用模块软件算法的选择和系统整体的数据调度三个方面。
(1)处理器工作状态 便携式系统工作过程中,处理器并不是任何时候都一直忙于运行,尤其是PDA来产品。如今的嵌入式处理器(包括EP7211)一般都为应用开发提供了三种工作状态:运行、空闲和休眠。大量的实际使用表明,更多情况下,大部分时间里系统是处在休眠状态的,一旦获得工作信号,会迅速切换到工作状态。当系统在工作状态下一定时间内没有获得下一次需要处理的信号时,则应该自动切空闲或者休眠状态。因为在不同的工作状态,处理器内部工作电路有所变化,功耗大小差别较大。 本PDA系统采用的ARM处理器,在不同工作条件和状态下的功耗哪表2所列。

表2 名 称频率/MHz 消耗电流最大值/mA 条 件 休眠状态 300μA 32kHz时钟晶振工作,I/O口处于禁止 空闲状态 18 6 晶振都在工作,LCD刷新处于激活状态,CPU是静态的 空闲状态 36 12 同上 运行状态 18 20 整个系统处于激活状态,正在执行程序 运行状态 36 40 同上注:直流供电电压2.5V 从表2中明显看出,处理器不同条件和状态下的功耗参数大小的差别。在18MHz频率下,运行功耗(20mA)是空闲功耗(6mA)的近4倍,空闲功耗又是休眠功耗300μA的20倍。我们的目的是在不影响系统正常运行的过程中,尽最大可能使系统处在空闲休眠状态来降低系统功耗;因此,我们应该通过预测系统执行过程的措施来切换处理器的工作状态。分析式(1)可知,我们又不能频繁过快地进行处理器状态切换,中间要留有一定的稳定时间间隔。 XGW软件开发平台采用事件消息驱动机制。消息采用查询方式,能够实时响应外部中断。在消息循环过程中,系统需要查询消息队列:当有消息出队时,处理器在运行状态处理这个消息所对应的事件;如果一这时间间隔(如2s)消息队列一直是空,系统预测在最近相当长的时间内不会有事件产生,软件编程措施把处理器从运行状态切到空闲状态;如果系统在更长的时间内(如20s)没有事件产生,则系统预测用户需要自动软关机,此时处理器进入休眠状态。在休眠状态下,处理器能够响应实时时钟匹配中断、传呼接收中断以及复位按键;一旦系统捕获到这类信号,则迅速转入到正常工作状态。处理器在运行状态和空闲状态间的切换间隔是必需的,如果切换速度过快,并不能达到降低系统功耗的目的。 为了缩短处理器从空闲或者运行状态切换到休眠状态的时间,系统同时提供了用户手动软关机措施,即通过触笔直接点击屏幕某一指定区域来实现。 本PDA系统中,ARM7处理器三种工作状态的转换如图3所示。

图3中各数字含义如表3所列。

表3 序 号状态转换条件 1、3 系统20s内一直不能捕捉到消息或者人为点击屏幕某一指定区域 2 实时时钟匹配中断、传呼中断、按键唤醒 4 运行状态下系统2s内一直不能捕捉到消息 5 产生中断信号、捕捉到消息事件。
(2)软件算法的选择 在应用程序编程实现过程中,求解同一个问题,可以有许多不同的算法。评价一个算法好坏的常用参数是算法时间复杂度、算法空间复杂度和算法的易理解编码和调试性。算法时间复杂度定义为算法的时间耗费,即算法所求解问题规模(求解问题的输入量)n的函数。时间复杂度一般用O(n)来表示,当n达到一定规模时,时间复杂度越小,执行效率越高,招待时间越短,系统功耗越低。算法空间复杂度定义为该算法所耗费的存储空间,它也是问题规模n的函数。 我们总是希望选用一个所占存储空间小、运行时间短、其它性能也好的算法。然而实际上很难做到十全十美,原因是上述要求有时相互抵触, 如节约算法执行时间需要以牺牲一定的存储空间为代价,反之亦然。因此,我们只能根据具体情况有所侧重。在本PDA系统中具体硬件配置时,CPU工作频率不高,存储空间运行不大;但应用程序数据量大,而且某些应用程序如辞典互译、时刻表检索时数据运算量也大。 如要在本PDA系统中实现英汉辞典互译,首先会想到采用顺序检索法。这种算法对用户输入词汇排列顺序没有要求,编程实现和理解起来都比较简单,其算法时间复杂度为O(n)=n。当n值较小时,这是可以允许的;但是当系统词汇量近10 000个时,算法检索效率不高,表现为当词语位置偏后时系统检索延迟过大。为了提高检索效率,满足一定的系统反应实时性要求,我们采用了有序表二分搜索算法,其算法时间复杂度O(n)=log2n。假设n=16 384=2 14已经超出系统的数据规模(10 000词左右)。二分检索所需要的最坏检索次数是14次;但是对于顺序检索而言,在最坏查找的情况下,检索次数是16 384次,故效率提高了16 284/14=1170倍。这个数目是相当可观的,而且,即使系统数据规模进一步扩大,二分检索表现出来的所增加的检索次数也是很小的。辞典互译实现二分检索所要做的附加工作,就是将原来无序的辞典数据文件转换成有序的辞典数据文件。不过,这个转换工作可以在PC机上完成从而减轻本嵌入式系统的负荷。辞典数据排序和检索过程中英汉辞典依据ASCII码进行,汉英辞典根据汉字的区位码进行。本PDA系统的民航时刻表、铁路时刻表等应用模块,也都涉及到了算法选择问题。
(3)数据调度 在许多应用程序中,存储器访问是功耗的主要部分。有资料表明,内存传输是迄今为止CPU完成的操作中代价最高的:一次内存传输消耗的能量是一次加法运算的33倍多。优化能量消耗的最大收益之一,来源于合理组织内存中的数据和指令:一般措施是尽量做到数据的寄存器访问和缓存访问。 随着存储技术理论的发展和工艺水平的提高,现在存储器体系结构一般都是三级,而且支持虚拟存储技术,如图4所示。

处理器进行数据访问时,离CPU越近的地方,数据存取速度越快,功耗越低。本PDA系统中,由于Flash存储器(作为数据存储器件)写操作的特殊性(以扇区大小为单位、执行时间长、执行功耗大),要求尽量少地进行。基于这种策略,本PDA系统在数据安排方面采取了以下一些优化措施: ①LCD帧缓存的安排。EP7211内置38 400字节大小的RAM空间,LCD分辨率是320%26;#215;240,每像素4级灰度用2比特位表示,故显存大小为320%26;#215;240%26;#215;2/8=19 200字节,被安排在内置RAM空间的前19 200字节。这样安排,加快了显示速度,减少了处理器访问片外SRAM空间。 ②个人传呼信息、公共传呼信息接收频度大,不需要永久存储;传呼接收过程需要开臂两块缓冲区,这些空间都被安排在内部RAM后19 200字节,其目的是减少了CPu对片外SRAM的访问。 ③部分系统信息资源,如字库信息,在系统启动后直接从Flash存储区拷贝到固定位置的SRAM区,这样字符输出时直接从内存读取数据,而不需要访问Flash。 ④为减少Flash写操作执行次数,在电话簿、记事本、日程以及系统设定等编辑修改后,首先改动的信息是在内存中直接保存,等到用户是退出当前整个应用模块时,才进行一个性Flash写操作。 ⑤在进行复杂数据查找过程中,为减少数据访问量,可以通过建立若干级索引表方式加快数据检索速度。如在辞典文件的词汇排序过程中,同时建立了每个单词位置的数据索引,而且作为索引文件定改Flash。在查找过程中,索引项的存在能够减少检索次数,从而快速确定单词起始位置以及整个单词项目长度,供显示输出。不过在增加索引时,也会增加一定的空间复杂度。 另外,系统还可以通过代码压缩减少总线上的传输量;编译器优化,消除冗余代码;消除编程中的递归过程调用、减少函数调用的开销;有效使用寄存器等措施来降低系统功耗。
4 低功耗设计综合阐述
以上分别从硬件和软件两方面阐述了嵌入式系统开发中低功耗设计的一些原则及在本产品中的某些具体体现。本PDA产品除了提代外接电源供电电路,同时还提供内置可充镍氢双电池供电系统。设单节电池容量是500mA,则系统待机时间是1000小时/8=125小时,基本上可以满足实际应用的需要。
评论