技巧和窍门– Sleep 上 Exit

低功耗系统的一种软件体系结构是始终保持系统处于睡眠模式,并且仅唤醒以运行单个中断服务程序(ISR),然后立即返回睡眠状态。如果开发人员试图从电池中榨出最后的mAh,则存在一个严重且经常被忽视的缺陷。仅运行中断会浪费很多时间和时钟周期。

执行中断的顺序是一个多步骤过程。首先,将寄存器值和其他当前状态信息压入堆栈,以便稍后恢复。接下来,CPU引导至ISR,执行ISR代码,然后最后弹出堆栈,并将寄存器恢复为其原始状态。整个过程可以通过图1中的流程图进行总结。

 标准差 图1–标准ISR操作

这样的问题是,即使使用现代,快速的处理器,将所有寄存器都推入堆栈,然后再进行恢复仍然存在效率低下的问题。这可能会花费非常少的时间,甚至可能是十亿分之一秒,但是在数百万或数十亿次执行的过程中,这可能相当于在低功耗模式下可能要花费的大量时间。结果是浪费了电池电量!

大多数ARM微控制器都有一个非常酷的功能,称为“退出时休眠”。此功能的作用不是让处理器每次都进入和退出ISR并浪费堆栈的开销,而启用此功能会使ISR完成后,MCU立即进入睡眠状态。这样,MCU仍配置为运行ISR,因此当再次触发ISR时,系统将唤醒并立即以最小的开销执行ISR。结果如图2所示。

 苏爱  Figure 2 –ISR开销,退出时休眠

但是,在没有其他低功耗设计技术的应用中,此功能的真正节省是显而易见的’不使用或没有地方’在设计周期中t时间以优化能量。如果将其内置到软件体系结构中,并且是首批优化之一,则可以节省几毫安的电流。但是,如果在大多数优化已完成时最后实现此功能,则很可能将节省很少的资金。

 

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

该网站使用Akismet减少垃圾邮件。 了解如何处理您的评论数据.