本发明涉及功耗模式切换领域,特别是涉及一种低功耗模式切换的方法。
背景技术:
在低功耗设计中,系统会存在多种功耗模式,为了达到低功耗的目的,系统会经常在不同功耗模式之间进行切换,在功耗模式切换的过程中,部分关键信息要求被暂时保存,对此,一种实现方式是添加保持寄存器(retention寄存器),达到保存关键信息的目的。该实现方式的缺陷在于,一是增加了静态功耗,二是增加了面积,三是使后端实现变得比较复杂。
技术实现要素:
本发明要解决的技术问题是提供一种系统功耗模式切换的方法,用来降低了静态功耗和面积,以及降低后端实现的复杂度。
为解决上述技术问题,本发明提出的一种系统功耗模式切换的方法,包括:
从正常模式切换到睡眠模式时,软件按照层的概念,将进入睡眠模式的过程划分为两个层次,从应用程序层进入睡眠模式,从底层驱动程序层进入睡眠模式;
系统功耗模式切换的过程主要被划分为四步:
第一步,进入睡眠模式之前,通过应用层进入睡眠模式程序,软件将应用程序中需要保存的信息存储到非掉电存储区中;
第二步,调用底层进入睡眠模式程序,底层进入睡眠模式程序在进入睡眠模式之前,将芯片需要保存的信息(包含芯片配置信息以及处理器cpu的程序计数器pc值和状态信息)存储到非掉电存储区中,并且把处于非掉电存储区睡眠标记标为有效;
第三步,从睡眠模式唤醒之后,软件从启动程序(bootloader程序)开始执行,首先会先判断睡眠标记,如果睡眠标记有效,就会调用底层睡眠模式恢复程序恢复芯片配置信息以及处理器cpu程序计数器pc值和状态信息;
第四步,由应用层睡眠模式恢复程序恢复应用程序中进入睡眠模式时保存的信息,恢复完成后继续执行应用层程序。
第一步和第二步用于存储应用程序层需要保存的信息,与底层驱动程序层需要保存的芯片信息,处理器cpu的程序计数器pc值和状态信息的非掉电存储区,是一块掉电可保持的ram或者flash存储器。
附图说明
1、图1是系统功耗模式切换过程的流程图;
2、图2是应用层进入睡眠模式程序流程图;
3、图3是底层进入睡眠模式程序流程图;
4、图4是底层睡眠模式恢复程序流程图;
5、图5是应用层睡眠模式恢复流程图。
具体实施方式
下面结合附图与具体实施方式对本发明作进一步详细的说明:
附图1至图5是所述系统功耗模式切换的一实施例的实现流程图,包括:
如图1所述,为系统功耗模式切换过程的流程图,具体步骤如下述:
(1)应用程序要求进入睡眠模式时,首先使用应用层进入睡眠模式程序,如图2中所述,将应用程序需要保存的信息存储到非掉电区;
(2)调用底层进入睡眠模式程序,如图3所述,首先将芯片的配置信息,处理器cpu的程序计数器寄存器pc的值及状态信息存储到非掉电区,然后,将处于非掉电区的睡眠标记标为有效,设置睡眠模式寄存器,进入睡眠模式;
(3)应用层程序要求从睡眠模式唤醒时,即睡眠模式唤醒条件有效之后,例如使用通用输入输出管脚gpio作为唤醒条件有效之后,程序首先从bootloader程序开始执行,首先需要判断在(2)中描述的睡眠标记信号是否有效,若无效,则程序继续执行;若有效,则调用底层睡眠模式恢复程序,如图4所述,恢复芯片配置信息及处理器cpu程序计数器pc的值和状态信息,然后,软件通过应用层睡眠模式恢复程序,如图5所述,恢复应用程序的信息,恢复完成之后继续执行程序。
以上通过具体实施方式和实施例对本发明进行了详细的说明,但这些并非构成对本发明的限制。在不脱离本发明原理的情况下,本领域的技术人员还可做出许多变形和改进,这些也应视为本发明的保护范围。