位置:51电子网 » 技术资料 » 电源技术

通过软件降低便携式产品的功耗

发布时间:2008/5/27 0:00:00 访问次数:525

        

    

    

    降低功耗是每个便携式产品开发人员的设计目标之一,但功耗不仅仅与硬件设计有关,控制软件也会对产品的功耗产生很大影响。不管是操作系统、bios控制程序还是外设驱动程序,这些软件编写的方式决定了最终产品的功耗水平,因此在开发时必须加以考虑。本文介绍四种通过软件降低功耗的方法,可供中国的设计工程师们参考。

    作为嵌入式软件工程师,我们需要在质量与效率之间寻求平衡。为此,我们要优化软件性能,使之能在速度较慢而价格低廉的处理器上运行;我们要调整软件大小,这样就能使用更小且更便宜的存储器。现在随着为手持式和无线装置编写的软件越来越多,我们还需要优化产品的功耗,以延长小型低成本电源的寿命。

    有个好消息是,无论你在开发操作系统、外设驱动程序还是应用程序,现在已有多种软件设计技术可以帮助降低功耗,下面我们重点讨论其中的四种方法。

    智能等待

    很多最新的嵌入式处理器都具有能降低功耗的电源工作模式,最常用的是空闲模式,此时处理器内核指令执行部分关闭,而所有外设和中断信号仍有电并起作用。空闲模式比处理器执行指令时的功耗要小得多。

    空闲模式一个主要特点是其进入退出基本上不需要额外开销,通常一个毫秒可以反复很多次。任何时候只要操作系统检查到所有线程都处于阻塞状态如等待中断、事件或定时时间,它都可以把处理器置于空闲模式以省电。由于任何中断都能把处理器从空闲模式中唤醒,所以采用这种模式可使软件智能等待系统事件,不过为最大程度提高电源效率,该工具要求我们认真地设计软件。

    我们都编写过这样的代码,如记录状态寄存器内容并等待设定标记出现,也许是检查串口的fifo状态标记,看是否收到数据;也许是监测一个双端口存储器看系统中是否有另外处理器写入一个变量,使我们能控制共享资源。尽管从表面上看这样的代码没有什么问题,但在每个时钟周期里不断记录寄存器状态将无法有效延长手持装置的电池寿命。

    更好的解决办法是使用一个外部中断来表明状态何时改变。在单线程软件环境里,你可以调用处理器空闲模式降低功耗直到发生实际事件,出现中断时,处理器自动唤醒然后继续执行后面的代码。

    空闲模式甚至能用于事件不能直接连接到外部中断的场合,在这种情况下,用一个系统定时器定期唤醒处理器是个很好的方法。例如你在等待一个事件并且知道只要事件发生后在一毫秒内能检测到都能迅速做出处理,那么可以启动1ms定时器并把处理器置于空闲模式,每次中断时检查事件状态,如果状态没有变化,就立刻回到空闲模式。

    这种等待机理应用很普遍,现今大多数pda和智能电话都是由具有空闲模式功能的处理器和操作系统控制。事实上,很多这些设备每秒会多次进出空闲模式,只要有触摸、按键或时间到就会被唤醒。

    减少事件

    另一种可以考虑的技术是减少事件。智能等待是使处理器尽可能高频率地进入空闲模式,减少事件则是尽可能长时间地将处理器置于空闲模式,它通过分析代码和系统要求来决定你是否能改变处理中断的方式实现。

    例如一个通过时隙安排线程的多任务操作系统,一般设定的定时中断通常在只有1ms的时隙间隔发生。假定你的代码很好利用了智能等待技术,操作系统会频繁使处理器置于空闲模式,并一直维持直到被中断唤醒。当然,在这种情形下,最有可能唤醒处理器的中断是定时器中断本身。即使所有其它线程被阻塞,在其它中断、内部事件及长时间延迟之前,定时器中断也会以每秒1,000次的频率把处理器从空闲模式中唤醒,以运行调度安排程序。

    但就算调度安排程序确定所有线路都被阻塞,并很快将处理器回复到空闲模式,这样频繁操作也会浪费大量电源。在这样的情况下,进入空闲模式时应关闭时隙中断信号,只有再次出现中断信号时才被唤醒。

    当然把时隙中断完全关闭通常不太合适。尽管多数阻塞的线程可以直接或间接等待外部中断,有些在特定时间还是服从于操作系统。例如一个驱动器会在等待外设时睡眠500ms,这时空闲模式下如果完全关闭系统定时器,可能意味着线路不能按时恢复工作。

    操作系统最好能为调度安排程序进行可变超时设定。操作系统知道每个线程是否无法确定等待的是外部还是内部事件,或者计划在某特定时间再次运行,操作系统可算出第一个线程预定何时运行,并相应地在处理器置于空闲模式之前设定

        

    

    

    降低功耗是每个便携式产品开发人员的设计目标之一,但功耗不仅仅与硬件设计有关,控制软件也会对产品的功耗产生很大影响。不管是操作系统、bios控制程序还是外设驱动程序,这些软件编写的方式决定了最终产品的功耗水平,因此在开发时必须加以考虑。本文介绍四种通过软件降低功耗的方法,可供中国的设计工程师们参考。

    作为嵌入式软件工程师,我们需要在质量与效率之间寻求平衡。为此,我们要优化软件性能,使之能在速度较慢而价格低廉的处理器上运行;我们要调整软件大小,这样就能使用更小且更便宜的存储器。现在随着为手持式和无线装置编写的软件越来越多,我们还需要优化产品的功耗,以延长小型低成本电源的寿命。

    有个好消息是,无论你在开发操作系统、外设驱动程序还是应用程序,现在已有多种软件设计技术可以帮助降低功耗,下面我们重点讨论其中的四种方法。

    智能等待

    很多最新的嵌入式处理器都具有能降低功耗的电源工作模式,最常用的是空闲模式,此时处理器内核指令执行部分关闭,而所有外设和中断信号仍有电并起作用。空闲模式比处理器执行指令时的功耗要小得多。

    空闲模式一个主要特点是其进入退出基本上不需要额外开销,通常一个毫秒可以反复很多次。任何时候只要操作系统检查到所有线程都处于阻塞状态如等待中断、事件或定时时间,它都可以把处理器置于空闲模式以省电。由于任何中断都能把处理器从空闲模式中唤醒,所以采用这种模式可使软件智能等待系统事件,不过为最大程度提高电源效率,该工具要求我们认真地设计软件。

    我们都编写过这样的代码,如记录状态寄存器内容并等待设定标记出现,也许是检查串口的fifo状态标记,看是否收到数据;也许是监测一个双端口存储器看系统中是否有另外处理器写入一个变量,使我们能控制共享资源。尽管从表面上看这样的代码没有什么问题,但在每个时钟周期里不断记录寄存器状态将无法有效延长手持装置的电池寿命。

    更好的解决办法是使用一个外部中断来表明状态何时改变。在单线程软件环境里,你可以调用处理器空闲模式降低功耗直到发生实际事件,出现中断时,处理器自动唤醒然后继续执行后面的代码。

    空闲模式甚至能用于事件不能直接连接到外部中断的场合,在这种情况下,用一个系统定时器定期唤醒处理器是个很好的方法。例如你在等待一个事件并且知道只要事件发生后在一毫秒内能检测到都能迅速做出处理,那么可以启动1ms定时器并把处理器置于空闲模式,每次中断时检查事件状态,如果状态没有变化,就立刻回到空闲模式。

    这种等待机理应用很普遍,现今大多数pda和智能电话都是由具有空闲模式功能的处理器和操作系统控制。事实上,很多这些设备每秒会多次进出空闲模式,只要有触摸、按键或时间到就会被唤醒。

    减少事件

    另一种可以考虑的技术是减少事件。智能等待是使处理器尽可能高频率地进入空闲模式,减少事件则是尽可能长时间地将处理器置于空闲模式,它通过分析代码和系统要求来决定你是否能改变处理中断的方式实现。

    例如一个通过时隙安排线程的多任务操作系统,一般设定的定时中断通常在只有1ms的时隙间隔发生。假定你的代码很好利用了智能等待技术,操作系统会频繁使处理器置于空闲模式,并一直维持直到被中断唤醒。当然,在这种情形下,最有可能唤醒处理器的中断是定时器中断本身。即使所有其它线程被阻塞,在其它中断、内部事件及长时间延迟之前,定时器中断也会以每秒1,000次的频率把处理器从空闲模式中唤醒,以运行调度安排程序。

    但就算调度安排程序确定所有线路都被阻塞,并很快将处理器回复到空闲模式,这样频繁操作也会浪费大量电源。在这样的情况下,进入空闲模式时应关闭时隙中断信号,只有再次出现中断信号时才被唤醒。

    当然把时隙中断完全关闭通常不太合适。尽管多数阻塞的线程可以直接或间接等待外部中断,有些在特定时间还是服从于操作系统。例如一个驱动器会在等待外设时睡眠500ms,这时空闲模式下如果完全关闭系统定时器,可能意味着线路不能按时恢复工作。

    操作系统最好能为调度安排程序进行可变超时设定。操作系统知道每个线程是否无法确定等待的是外部还是内部事件,或者计划在某特定时间再次运行,操作系统可算出第一个线程预定何时运行,并相应地在处理器置于空闲模式之前设定

相关IC型号

热门点击

 

推荐技术资料

Seeed Studio
    Seeed Studio绐我们的印象总是和绘画脱离不了... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!