CN111158758B - 一种唤醒中央处理器的方法和装置 - Google Patents

一种唤醒中央处理器的方法和装置 Download PDF

Info

Publication number
CN111158758B
CN111158758B CN201811317138.9A CN201811317138A CN111158758B CN 111158758 B CN111158758 B CN 111158758B CN 201811317138 A CN201811317138 A CN 201811317138A CN 111158758 B CN111158758 B CN 111158758B
Authority
CN
China
Prior art keywords
peripheral
event
module group
processing unit
signal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201811317138.9A
Other languages
English (en)
Other versions
CN111158758A (zh
Inventor
邓飞扬
卢知伯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Gree Electric Appliances Inc of Zhuhai
Original Assignee
Gree Electric Appliances Inc of Zhuhai
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Gree Electric Appliances Inc of Zhuhai filed Critical Gree Electric Appliances Inc of Zhuhai
Priority to CN201811317138.9A priority Critical patent/CN111158758B/zh
Publication of CN111158758A publication Critical patent/CN111158758A/zh
Application granted granted Critical
Publication of CN111158758B publication Critical patent/CN111158758B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4418Suspend and resume; Hibernate and awake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Power Sources (AREA)

Abstract

本发明公开了一种唤醒中央处理器的方法和装置,涉及半导体集成电路技术领域,用以解决现有技术中芯片内部任一外设模块有外设事件发生时都会唤醒CPU,造成芯片功耗浪费的问题,本发明方法包括:在中央处理器处于睡眠状态时确定外设模块组,其中所述外设模块组中的外设模块是中央处理器处于睡眠状态过程中发生特定外设事件的外设模块;将所述外设模块组与预先设定的外设模块组进行比较,其中,所述预先设定的外设模块组包括至少一个需要唤醒中央处理器的外设模块;若所述外设模块组与所述预先设定的外设模块组相同,则唤醒中央处理器。由于本发明只有CPU睡眠状态确定的外设模块组与预先设定的外设模块组相同才唤醒CPU,降低了系统功耗。

Description

一种唤醒中央处理器的方法和装置
技术领域
本发明涉及半导体集成电路技术领域,特别涉及一种唤醒中央处理器的方法和装置。
背景技术
为了满足市场上的需求,现在的芯片,不仅对功能、面积和速度有很高的要求,同时对低功耗的要求也越来越高了。
一般芯片内部有很多的模块,每一个模块都有很多的事件,这些事件标志着模块此时的状态,比如TIM(Timer,定时器)有比较匹配事件、ADC(Analog-To-DigitalConverter,数模转换器)有转换完成事件、DMA(Direct Memory Access,直接存储器访问)有传输完成事件等。
在CPU(Central Processing Unit,中央处理器)处于睡眠模式,并且有多个外设模块工作时,任何一个外设模块都可以通过中断或唤醒事件唤醒CPU。但是有些外设工作不需要CPU参与,例如低功耗单片机MSP430F5529的各个模块都可以独立运行,如定时器、A/D(Analog/Digital,模/数)转换、看门狗等都可以在CPU睡眠的状态下独立工作,而有些外设的工作需唤醒CPU,当芯片内部任一外设模块有外设事件发生时都会唤醒CPU,对于那些可以在CPU睡眠的状态下独立工作的外设模块,唤醒后的CPU也不会工作,造成了芯片功耗的浪费。
综上所述,目前芯片内部任一外设模块有外设事件发生时都会唤醒CPU,造成芯片功耗的浪费。
发明内容
本发明提供一种唤醒中央处理器的方法和装置,用以解决现有技术中存在的芯片内部任一外设模块有外设事件发生时都会唤醒CPU,造成芯片功耗的浪费的问题。
第一方面,本发明实施例提供的一种唤醒中央处理器的方法包括:
在中央处理器处于睡眠状态时确定外设模块组,其中所述外设模块组中的外设模块是中央处理器处于睡眠状态过程中发生特定外设事件的外设模块;
将所述外设模块组与预先设定的外设模块组进行比较,其中,所述预先设定的外设模块组包括至少一个需要唤醒中央处理器的外设模块;
若所述外设模块组与所述预先设定的外设模块组相同,则唤醒中央处理器。
上述方法,在中央处理器睡眠状态下时根据需要唤醒CPU的模块预先设定外设模块组,并且针对每一个外设模块预先设定一个特定外设事件,之后在CPU睡眠过程中将发生特定事件的外设模块并置于外设模块组中,将所述外设模块组与所述预先设定的外设模块组进行比较,只有当这两个外设模块相同时才会唤醒CPU,通过预先设定需要唤醒CPU的外设模块以及外设模块发生的外设事件中需要唤醒CPU的特定外设事件,对唤醒CPU的条件进行了限定,即不会在芯片内每一个外设模块发生外设事件后就唤醒CPU,降低了系统的功耗。
在一种可能的实现方式中,不同的所述外设模块对应的特定外设事件不同。
在一种可能的实现方式中,该方法还包括:
若所述外设模块组与所述预先设定的外设模块组不相同,则不唤醒中央处理器。
上述方法,只有在所述外设模块组与所述预先设定的外设模块组相同时才会唤醒CPU,不会在芯片内每一个外设模块发生外设事件后就唤醒CPU,降低了系统的功耗。
在一种可能的实现方式中,若所述外设模块组与所述预先设定的外设模块组相同,则唤醒中央处理器,包括:
若所述外设模块组与所述预先设定的外设模块组相同,则通过唤醒事件唤醒中央处理器。
上述方法,当所述外设模块组与所述预先设定的外设模块组相同时会产生唤醒事件,通过唤醒事件唤醒中央处理器,唤醒事件作为唤醒中央处理器的触发信号,触发中央处理器进入唤醒状态。
在一种可能的实现方式中,所述唤醒中央处理器之后,还包括:
在所述中央处理器重新进入睡眠状态之前,根据所述需要唤醒中央处理器的外设模块重新调整所述预先设定的外设模块组和/或所述外设模块对应的特定外设事件。
上述方法,在每一次唤醒CPU之后并在所述CPU重新进入睡眠状态之前,可以根据需要唤醒CPU的外设模块重新调整预先设定的外设模块组和/或所述外设模块对应的特定外设事件,针对不同的场景则可以调整不同的预先设定不的外设模块组和/或与所述外设模块对应的不同的特定外设事件,灵活度很大,可以满足各种不同的应用场景。
在一种可能的实现方式中,所述在中央处理器睡眠状态下确定外设模块组之前,还包括:
使能所述预先设定的外设模块组中的外设模块。
上述方法,在预先设定好需要唤醒CPU的外设模块之后,使能所述预先设定的外设模块组中的外设模块,这样只需检测需要唤醒CPU的外设模块是否发生特定外设事件即可,降低了系统的复杂度同时减少了芯片的功耗。
第二方面,本发明实施例提供的一种唤醒中央处理器的装置包括:中央处理器和唤醒部件:
所述唤醒部件,用于在中央处理器处于睡眠状态时确定外设模块组,其中所述外设模块组中的外设模块是中央处理器处于睡眠状态过程中发生特定外设事件的外设模块;将所述外设模块组与预先设定的外设模块组进行比较,其中,所述预先设定的外设模块组包括至少一个需要唤醒中央处理器的外设模块;当所述外设模块组与所述预先设定的外设模块组相同时唤醒中央处理器。
在一种可能的实现方式中,所述唤醒部件包括:
多个外设选择器、外设事件缓存寄存器、外设事件预存寄存器、比较器和脉冲发生器;
所述外设选择器的输出端口与所述外设事件缓存寄存器的输入端口连接,且不同的所述外设选择器连接的所述外设事件缓存寄存器的输入端口不同,所述外设选择器用于在所述外设模块对应的特定外设事件发生时向所述外设事件缓存寄存器输出缓存信号;
所述外设事件缓存寄存器的输出端口与所述比较器连接,所述外设事件缓存寄存器用于在与接收到缓存信号的输入端口对应的输出端口输出第一外设事件信号给所述比较器;输出第一外设事件信号给所述比较器;
所述外设事件预存寄存器的输出端口与所述比较器连接,所述外设事件预存寄存器用于在输入端口接收到缓存信号后通过所述输入端口对应的输出端口输出第二外设事件信号给所述比较器,其中输入到所述外设事件预存寄存器的缓存信号是根据用于唤醒中央处理器的外设模块确定的;
所述比较器,用于比较所述外设事件缓存寄存器输出第一外设事件信号的输出端口与所述外设事件预存寄存器输出第二外设事件信号的输出端口是否相同,并将比较结果输出至所述脉冲发生器;
所述脉冲发生器的输出端口连接所述中央处理器,用于在所述比较结果相同时产生用于唤醒中央处理器的脉冲信号。
上述方法,提供了一种唤醒部件的组成方式,其中包括多个外设选择器、外设事件缓存寄存器、外设事件预存寄存器、比较器和脉冲发生器,通过多个外设选择器来设定外设模块对应的特定外设事件,通过外设事件缓存寄存器来确定在中央处理器睡眠状态过程中发生特定外设事件的外设模块组,即外设事件缓存寄存器输出第一外设事件信号的输出端口,通过外设事件预存寄存器来确定预先设定的外设模块组,即外设事件预存寄存器输出第二外设事件信号的输出端口,通过比较器比较外设事件缓存寄存器与外设事件预存寄存器的输出结果,只有当外设事件缓存寄存器输出第一外设事件信号的输出端口与所述外设事件预存寄存器输出第二外设事件信号的输出端口相同时,才会通过脉冲发生器产生唤醒CPU的脉冲信号来唤醒CPU,对唤醒CPU的条件进行了限定,只有在预先设定的外设模块都发生特定外设事件时才会唤醒CPU,降低了系统的功耗。
在一种可能的实现方式中,不同的所述外设模块对应的特定外设事件不同。
在一种可能的实现方式中,若所述外设事件缓存寄存器输出第一外设事件信号的输出端口与所述外设事件预存寄存器输出第二外设事件信号的输出端口不相同,则不生成脉冲信号。
在一种可能的实现方式中,所述唤醒部件还用于:
在所述中央处理器重新进入睡眠模式之前,根据所述需要唤醒中央处理器的外设模块重新调整所述预先设定的外设模块组和/或所述外设模块对应的特定外设事件。
在一种可能的实现方式中,所述唤醒部件还用于:
使能所述预先设定的外设模块组中的外设模块。
第三方面,本发明实施例还提供一种唤醒中央处理器的装置,该装置包括确定模块、比较模块和唤醒模块:
确定模块,用于在中央处理器处于睡眠状态时确定外设模块组,其中所述外设模块组中的外设模块是中央处理器处于睡眠状态过程中发生特定外设事件的外设模块;
比较模块,用于将所述外设模块组与预先设定的外设模块组进行比较,其中,所述预先设定的外设模块组包括至少一个需要唤醒中央处理器的外设模块;
唤醒模块,用于在所述外设模块组与所述预先设定的外设模块组相同时,唤醒中央处理器。
在一种可能的实现方式中,不同的所述外设模块对应的特定外设事件不同。
在一种可能的实现方式中,所述唤醒模块还用于:
若所述外设模块组与所述预先设定的外设模块组不相同,则不唤醒中央处理器。
在一种可能的实现方式中,所述唤醒模块具体用于:
若所述外设模块组与所述预先设定的外设模块组相同,则通过唤醒事件唤醒中央处理器。
在一种可能的实现方式中,所述唤醒模块还用于:
在所述中央处理器重新进入睡眠模式之前,根据所述需要唤醒中央处理器的外设模块重新调整所述预先设定的外设模块组和/或所述外设模块对应的特定外设事件。
在一种可能的实现方式中,所述唤醒模块还用于:
使能所述预先设定的外设模块组中的外设模块。
第四方面,本申请还提供一种计算机存储介质,其上存储有计算机程序,该程序被处理单元执行时实现第一方面所述方法的步骤。
另外,第二方面至第四方面中任一种实现方式所带来的技术效果可参见第一方面中不同实现方式所带来的技术效果,此处不再赘述。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种唤醒中央处理器的方法示意图;
图2为本发明实施例提供的一种唤醒中央处理器的装置示意图;
图3为本发明实施例提供的一种唤醒部件的电路结构示意图;
图4为本发明实施例提供的另一种唤醒中央处理器的装置示意图;
图5为本发明实施例提供的一种唤醒中央处理器的完整方法示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
下面对文中出现的一些词语进行解释:
1、本发明实施例中术语“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
2、本发明实施例中术语“外设”是指与CPU交互的其他低速模块。
3、本发明实施例中术语“外设事件”就是外设模块中产生的信号,该信号一般是一个短脉冲,表示该外设模块发生了某一个事件。
4、本发明实施例中术语“使能”是负责控制信号的输入和输出的一个“允许”信号,进给使能也就是允许进给的信号。
5、本发明实施例中术语“位宽”是指在一个时钟周期内所能传送数据的位数。
本发明实施例描述的应用场景是为了更加清楚的说明本发明实施例的技术方案,并不构成对于本发明实施例提供的技术方案的限定,本领域普通技术人员可知,随着新应用场景的出现,本发明实施例提供的技术方案对于类似的技术问题,同样适用。其中,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
伴随着芯片复杂度越来越高,芯片内部集成的模块也越来越多,同时要实现复杂的功能,不可避免的模块之间的互连通信也会变得更加复杂。为了实现模块之间信号的通信,可以直接将信号连接起来,但这会使得连接关系很复杂,不利于系统的集成和维护,同时对软件人员使用起来也不灵活。
当CPU在睡眠模式,但是多个外设在工作时,有些外设工作不需要CPU参与,而有些外设的工作需要CPU,目前芯片内部任一外设模块有外设事件发生时都会唤醒CPU,造成芯片功耗的浪费,在这种情况下什么时候唤醒CPU将对系统功耗的减小有很大的意义。
因此本发明实施例一种唤醒中央处理器的方法和装置,预先设定好可以唤醒CPU的外设模块组,并在CPU睡眠状态时检测发生特定外设事件的外设模块组,并将发生特定外设事件的外设模块组与预先设定的可以唤醒CPU的外设模块组进行比较,只有比较结果一致时才会唤醒CPU,减少了不必要的功耗浪费。
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
针对上述场景,下面结合说明书附图对本发明实施例做进一步详细描述。
如图1所示,本发明实施例的一种唤醒中央处理器的方法,具体包括以下步骤:
步骤100:在中央处理器处于睡眠状态时确定外设模块组,其中所述外设模块组中的外设模块是中央处理器处于睡眠状态过程中发生特定外设事件的外设模块;
步骤101:将所述外设模块组与预先设定的外设模块组进行比较,其中,所述预先设定的外设模块组包括至少一个需要唤醒中央处理器的外设模块;
步骤102:若所述外设模块组与所述预先设定的外设模块组相同,则唤醒中央处理器。
通过上述方案,在中央处理器睡眠状态下时根据需要唤醒CPU的模块预先设定外设模块组,并且针对每一个外设模块预先设定一个特定外设事件,之后确定在CPU睡眠过程中发生特定事件的外设模块并置于外设模块组中,将所述外设模块组与所述预先设定的外设模块组进行比较,只有当这两个外设模块相同时才会唤醒CPU,通过预先设定需要唤醒CPU的外设模块以及外设模块发生的外设事件中需要唤醒CPU的特定外设事件,对唤醒CPU的条件进行了限定,即不会在芯片内每一个外设模块发生外设事件后就唤醒CPU,降低了系统的功耗。
其中,所述外设模块包括但不限于下列的部分或全部:
MCU(Microcontroller Unit,微控制单元)中的定时器模块、ADC模块、UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)模块、SPI(SerialPeripheral Interface,串行外设接口)模块、DMA模块、RTC(Real-Time Counter,实时时钟)模块、IO(InputOutput,输入输出)模块。
可选的,不同的所述外设模块对应的特定外设事件不同。
例如,定时器模块有定时器上溢事件、定时器下溢事件、周期中断事件和比较中断事件,比如定时器上溢事件,即计数器计满后又变回0重新开始计数时,计数器就会发送一个脉冲信号,表示定时器上溢事件;数模转换器模块有转换完成事件,在ADC转换完成后发送一个脉冲信号表示转换完成事件;DMA有传输完成事件,在DMA传输完成发送一个脉冲信号表示传输完成事件等。
由于不是每一个外设模块发生外设事件时都需要唤醒CPU,所以在本发明实施例中通过预先设定的外设模块组来选择需要唤醒CPU的外设模块,并且通过设定外设模块对应的特定外设事件来选择需要唤醒CPU的外设模块需要发生的唤醒CPU的外设事件。
在系统运行过程中,CPU处于睡眠状态,外设模块开始工作,在CPU睡眠状态过程中确定外设模块组,并将确定的外设模块组与预先设定的外设模块组进行比较。
其中,在CPU睡眠状态过程中确定外设模块组的方式有很多种,下面列举几种:
确定方式一、在CPU睡眠状态过程中实时检测发生特定外设事件的外设模块,并将所述外设模块置于外设模块组。
例如,在CPU睡眠状态过程中先检测到IO模块发生特定外设事件,则将IO模块置于外设模块组中,并将所述外设模块组与预先设定的外设模块组比较不一致,保持外设模块组不变,并且不产生唤醒CPU的唤醒事件,之后检测到TIM模块发生特定外设事件,则将TIM模块也置于外设模块组中,此时确定的外设模块组中的外设模块为:IO模块、TIM模块。
确定方式二、在CPU睡眠状态过程中周期性检测发生特定外设事件的外设模块,并将所述外设模块置于外设模块组。
设定一个确定外设模块组的时间周期,每个周期内确定一次外设模块组,假设设定每隔1分钟检测一次发生特定外设事件的外设模块,例如,在第一分钟内检测到发生特定外设事件的外设模块为IO模块,则此次确定外设模块组中的外设模块为IO模块,在第二分钟内先后检测到发生外设事件的外设模块为TIM模块、ADC模块,则此次确定的外设模块组中的外设模块为TIM模块、ADC模块。
需要说明的是,本发明实施例中所列举的在CPU睡眠状态过程中确定外设模块组的方式只是举例说明,任何一种在CPU睡眠状态过程中确定外设模块组的方式都适用于本发明实施例。
在本发明实施例中,将确定的外设模块组与预先设定的外设模块组进行比较,若所述外设模块组与所述预先设定的外设模块组相同,则唤醒中央处理器。
例如,预先设定的外设模块组是IO、ADC、TIM,在CPU睡眠状态时确定外设模块组,确定的在CPU睡眠过程中发生特定外设事件的外设模块有IO、ADC、TIM,此时预先设定的外设模块组与在CPU睡眠状态时确定外设模块组完全相同,此时通过唤醒事件唤醒CPU。
可选的,若所述外设模块组与所述预先设定的外设模块组相同,则唤醒中央处理器,同时将之前在CPU睡眠状态时确定外设模块组清空。
可选的,在每一次唤醒CPU之后并且在CPU重新进入睡眠模式之前,根据所述需要唤醒中央处理器的外设模块可以重新设定外设模块组,同时也可以重新设置外设模块对应的特定外设事件。
例如,第一次设置的外设模块组为IO、ADC、TIM,当在CPU处于睡眠状态过程中发生特定外设事件的外设模块组为IO、ADC、TIM,此时对比发现预先设定的外设模块组与确定的在CPU处于睡眠状态过程中发生特定外设事件的外设模块组相同,通过唤醒事件唤醒CPU,在CPU被唤醒后并在CPU重新进入睡眠状态之前,重新设置外设模块组为RTC、ADC。
在本发明实施例中,若在CPU睡眠状态下确定的外设模块组与预先设定的外设模块组不相同,则不唤醒CPU,重新确定外设模块组。
例如,预先设定的外设模块组是IO、ADC,在CPU睡眠状态时确定外设模块组,确定的在CPU睡眠状态过程中发生特定外设事件的外设模块有IO、ADC、TIM,此时预先设定的外设模块组与在CPU睡眠状态时确定外设模块组不相同,此时不唤醒CPU,重新确定外设模块组。
可选的,在中央处理器睡眠状态下确定外设模块组之前,对每个外设模块加一个唤醒CPU使能信号,在预先设定好需要唤醒CPU的外设模块即预先设定外设模块组之后,使能预先设定的外设模块组中的外设模块。在需要哪些外设事件唤醒CPU就将对应的外设模块使能,这样其他的外设模块就不会影响到在CPU睡眠状态下确定的外设模块组与预先设定的外设模块组的比较。
例如,某一CPU的外设模块有IO、TIM、RTC、ADC,其中每一个外设模块都有一个对应的使能信号,IO模块对应一个使能信号IO_WK_CPU_EN,TIM模块对应一个使能信号TIM_WK_CPU_EN,RTC模块对应一个使能信号RTC_WK_CPU_EN,ADC模块对应一个使能信号ADC_WK_CPU_EN,需要唤醒CPU的外设模块有IO、TIM,则预先设定的外设模块组中的外设模块为IO、TIM,在预先设定外设模块组之后,通过使能信号IO_WK_CPU_EN使能IO模块,通过使能信号TIM_WK_CPU_EN使能TIM模块。
基于相同的发明构思,本发明实施例中还提供了一种唤醒中央处理器的装置,由于该装置即是本发明实施例中的方法中的装置,并且该装置解决问题的原理与该方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。
如图2所示,本发明实施例提供一种唤醒中央处理器的装置,该装置包括:中央处理器200和唤醒部件201:
所述唤醒部件201,用于在中央处理器200睡眠状态下确定外设模块组,其中所述外设模块组中的外设模块是在CPU睡眠状态过程中发生特定外设事件的外设模块;将所述外设模块组与预先设定的外设模块组进行比较,其中,所述预先设定的外设模块组包括至少一个需要唤醒中央处理器200的外设模块;当所述外设模块组与所述预先设定的外设模块组相同时唤醒中央处理器200。
可选的,所述唤醒部件201包括:
多个外设选择器2010、外设事件缓存寄存器(ECR,Evevt Cache Register)2011、外设事件预存寄存器(EPR,Event Prestore Register)2012、比较器(Comparator)2013和脉冲发生器(Pulse generator)2014,如图3所示,其中,CLK为时钟信号,上升沿或下降沿时锁存数据信号。
可选的,所述外设选择器2010的输出端口与所述外设事件缓存寄存器2011的输入端口连接,且不同的所述外设选择器2010连接的所述外设事件缓存寄存器2011的输入端口不同,所述外设选择器2010用于在所述外设模块对应的特定外设事件发生时向所述外设事件缓存寄存器2011输出缓存信号。
其中,一个外设模块对应一个外设选择器2010,图3所示的外设选择器2011包括:IO模块选择器、TIM模块选择器、ADC模块选择器、RTC模块选择器。IO模块选择器的输出端口连接外设事件缓存模块的输入端口D0;TIM模块选择器的输出端口连接外设事件缓存模块的输入端口D1;ADC模块选择器的输出端口连接外设事件缓存模块的输入端口D2;RTC模块选择器的输出端口连接外设事件缓存模块的输入端口Dn。
在本发明实施例中,外设模块选择器可以是寄存器,通过改变寄存器的位宽以匹配所述外设模块对应的外设事件的数量,并通过外设模块选择器选择信号Source select确定所述外设模块对应的特定外设事件。
例如,当IO模块的外设事件有4个时,分别对应外设事件1、外设事件2、外设事件3、外设事件4,可以设置2比特位宽的寄存器来进行选择,寄存器可以命名为IO_EVT_SEL。其中IO_EVT_SEL的输入端口0对应的输入事件为外设事件1,输入端口1对应的输入事件为外设事件2,输入端口2对应的输入事件为外设事件3,输入端口3对应的输入事件为外设事件。当IO_EVT_SEL的选择信号为0时,IO模块的特定外设事件为外设事件1;当选择信号为1时IO模块的特定外设事件为外设事件2;当选择信号为2时IO模块的特定外设事件为外设事件3;当选择信号为3时IO模块的特定外设事件为外设事件4。如果外设模块的外设事件不是4,而是n个,那么相应的寄存器的位宽m应满足:2m≥n,其中m、n均为非负整数。
可选的,所述外设事件缓存寄存器2011的输出端口与所述比较器2013连接,所述外设事件缓存寄存器2011用于在与接收到缓存信号的输入端口对应的输出端口输出第一外设事件信号给所述比较器;输出第一外设事件信号给所述比较器2013;其中,外设事件缓存寄存器2011有n+1位输入端口及n+1位输出端口,分别为输入端口D0~Dn、输出端口Q0~Qn。
例如,外设事件缓存寄存器2011的输入端口D1接收到缓存信号,说明D1端口对应的IO模块选择器发生了特定外设事件,D1对应的输出端口Q1将输出第一外设事件信号给比较器2013,并且通过比较之后确定不需要唤醒CPU,之后外设事件缓存寄存器2011的输入端口D2接收到缓存信号,说明D2端口对应的IO模块选择器发生了特定外设事件,D2对应的输出端口Q2将输出第一外设事件信号给比较器2013,此时确定的在中央处理器200睡眠状态过程中发生特定外设事件的外设模块组为:TIM模块、ADC模块。
可选的,所述外设事件预存寄存器2012的输出端口与所述比较器2013连接,所述外设事件预存寄存器2012用于在输入端口接收到缓存信号后通过所述输入端口对应的输出端口输出第二外设事件信号给所述比较器2013,其中输入到所述外设事件预存寄存器2012的缓存信号是根据用于唤醒中央处理器200的外设模块确定的;其中,外设事件预存寄存器2012也有n+1位输入端口及n+1位输出端口,分别为输入端口D0~Dn、输出端口Q0~Qn。
例如,预先设定的外设模块组包括的用于唤醒中央处理器200的外设模块为TIM模块与ADC模块,则外设事件预存寄存器2012的输入端口D1与D2会接收到由APB bus(Advanced Peripheral Bus,先进外设总线)输入的缓存信号,与D1、D2分别对应的输出端口Q1、Q2将输出第二外设事件信号至比较器2013。
可选的,所述比较器2013,用于比较所述外设事件缓存寄存器2011输出第一外设事件信号的输出端口与所述外设事件预存寄存器2012输出第二外设事件信号的输出端口是否相同,并将比较结果输出至所述脉冲发生器2014,并且所述脉冲发生器2014的输出端口连接所述中央处理器200,用于在所述比较结果相同时产生用于唤醒中央处理器200的脉冲信号。其中,所述脉冲信号除了可以唤醒中央处理器200还可以清除外设缓存寄存器2011接收到的缓存信号,若需要唤醒CPU的外设事件循环发生,则可以循环的生成唤醒CPU的脉冲信号。
若比较结果相同,则所述脉冲发生器2014产生用于唤醒中央处理器200的脉冲信号,并且所述脉冲信号可以实现;若比较结果不相同,则所述脉冲发生器2014不生成脉冲信号。
例如,外设事件缓存寄存器2011输出第一外设事件信号的输出端口为Q1、Q2、Q3,外设事件预存寄存器2012输出第二外设事件信号的输出端口为Q1、Q2,此时比较结果相同,脉冲发生器2014产生用于唤醒中央处理器200的脉冲信号。假设外设事件预存寄存器2012输出第二外设事件信号的输出端口为Q0、Q2,此时比较结果不相同,脉冲发生器2014不产生脉冲信号。
需要说明的是,本发明实施例中所列举的唤醒部件只是举例说明,任何一种可以用于唤醒CPU的唤醒部件都适用于本发明实施例。
可选的,不同的所述外设模块对应的特定外设事件不同。
例如,TIM模块对应的特定外设事件为定时器上溢事件,DMA模块对应的特定外设事件为传输完成事件,ADC模块对应的特定外设事件为模数转换完成事件。
可选的,所述唤醒部件201还用于:
在所述中央处理器200重新进入睡眠模式之前,根据所述需要唤醒中央处理器的外设模块重新调整所述预先设定的外设模块组和/或所述外设模块对应的特定外设事件。
可选的,所述唤醒部件201还用于:
使能所述预先设定的外设模块组中的外设模块。
基于相同的发明构思,本发明实施例中还提供了一种唤醒中央处理器的装置,由于该装置即是本发明实施例中的方法中的装置,并且该装置解决问题的原理与该方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。
如图4所示,本发明实施例还提供一种唤醒中央处理器的装置,该装置包括:确定模块400、比较模块401和唤醒模块402:
确定模块400,用于在中央处理器处于睡眠状态时确定外设模块组,其中所述外设模块组中的外设模块是中央处理器处于睡眠状态过程中发生特定外设事件的外设模块;
比较模块401,用于将所述外设模块组与预先设定的外设模块组进行比较,其中,所述预先设定的外设模块组包括至少一个需要唤醒中央处理器的外设模块;
唤醒模块402,用于在所述外设模块组与所述预先设定的外设模块组相同时,唤醒中央处理器。
可选的,不同的所述外设模块对应的特定外设事件不同。
可选的,所述唤醒模块402还用于:
若所述外设模块组与所述预先设定的外设模块组不相同,则不唤醒中央处理器。
可选的,所述唤醒模块402具体用于:
若所述外设模块组与所述预先设定的外设模块组相同,则通过唤醒事件唤醒中央处理器。
可选的,所述唤醒模块402还用于:
在所述中央处理器重新进入睡眠模式之前,根据所述需要唤醒中央处理器的外设模块重新调整所述预先设定的外设模块组和/或所述外设模块对应的特定外设事件。
可选的,所述唤醒模块402还用于:
使能所述预先设定的外设模块组中的外设模块。
如图5所示,本发明实施例提供的一种唤醒中央处理器的完整方法包括:
步骤500、配置外设选择器以选择外设模块对应的需要唤醒CPU的外设事件,并配置外设事件预存寄存器以选择需要外设事件发生的外设模块;
步骤501、在系统运行过程中检测外设事件缓存寄存器的值;
步骤502、通过比较器判断外设事件缓存寄存器的值与外设事件预存寄存器的值是否相同,如果是,则执行步骤503,否则,返回步骤501;
步骤503、由脉冲发生器生成一个脉冲信号唤醒CPU同时将外设事件缓存寄存器的值清零。
本发明实施例还提供一种计算机可读非易失性存储介质,包括程序代码,当所述程序代码在计算终端上运行时,所述程序代码用于使所述计算终端执行上述本发明实施例唤醒中央处理器的方法的步骤。
以上参照示出根据本申请实施例的方法、装置(系统)和/或计算机程序产品的框图和/或流程图描述本申请。应理解,可以通过计算机程序指令来实现框图和/或流程图示图的一个块以及框图和/或流程图示图的块的组合。可以将这些计算机程序指令提供给通用计算机、专用计算机的处理器和/或其它可编程数据处理装置,以产生机器,使得经由计算机处理器和/或其它可编程数据处理装置执行的指令创建用于实现框图和/或流程图块中所指定的功能/动作的方法。
相应地,还可以用硬件和/或软件(包括固件、驻留软件、微码等)来实施本申请。更进一步地,本申请可以采取计算机可使用或计算机可读存储介质上的计算机程序产品的形式,其具有在介质中实现的计算机可使用或计算机可读程序代码,以由指令执行系统来使用或结合指令执行系统而使用。在本申请上下文中,计算机可使用或计算机可读介质可以是任意介质,其可以包含、存储、通信、传输、或传送程序,以由指令执行系统、装置或设备使用,或结合指令执行系统、装置或设备使用。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (7)

1.一种唤醒中央处理器的方法,其特征在于,应用于用于唤醒中央处理器的唤醒部件,则该方法包括:
在中央处理器处于睡眠状态时确定外设模块组,其中所述外设模块组中的外设模块是中央处理器处于睡眠状态过程中发生特定外设事件的外设模块,不同的所述外设模块对应的特定外设事件不同,每个外设模块对应有至少一个外设事件,所述特定外设事件是针对相应的外设模块预先设定的需要唤醒CPU的外设事件;
将所述外设模块组与预先设定的外设模块组进行比较,其中,所述预先设定的外设模块组包括至少一个需要唤醒中央处理器的外设模块;
若所述外设模块组与所述预先设定的外设模块组相同,则通过唤醒事件唤醒中央处理器;
若所述外设模块组与所述预先设定的外设模块组不相同,则不唤醒中央处理器;
其中,所述唤醒部件包括多个外设选择器、外设事件缓存寄存器和外设事件预存寄存器;所述外设选择器的输出端口与所述外设事件缓存寄存器的输入端口连接,且不同的所述外设选择器连接的所述外设事件缓存寄存器的输入端口不同;若所述外设事件缓存寄存器输出第一外设事件信号的输出端口与所述外设事件预存寄存器输出第二外设事件信号的输出端口不相同,则不生成脉冲信号;所述脉冲信号用于唤醒中央处理器;所述第一外设事件信号是所述外设事件缓存寄存器在接收到缓存信号后,通过与接收到缓存信号的输入端口对应的输出端口输出的;所述第二外设事件信号是所述外设事件预存寄存器在接收到缓存信号后,通过与接收到缓存信号的输入端口对应的输出端口输出的;
其中,输入到所述外设事件缓存寄存器的缓存信号是所述外设选择器在所述外设模块对应的特定外设事件发生时输出的;输入到所述外设事件预存寄存器的缓存信号是根据用于唤醒中央处理器的外设模块确定的。
2.如权利要求1所述的方法,其特征在于,所述唤醒中央处理器之后,还包括:
在所述中央处理器重新进入睡眠状态之前,根据所述需要唤醒中央处理器的外设模块重新调整所述预先设定的外设模块组和/或所述外设模块对应的特定外设事件。
3.如权利要求1所述的方法,其特征在于,所述在中央处理器睡眠状态下确定外设模块组之前,还包括:
使能所述预先设定的外设模块组中的外设模块。
4.一种唤醒中央处理器的装置,其特征在于,该装置包括:中央处理器和唤醒部件:
所述唤醒部件,用于在中央处理器处于睡眠状态时确定外设模块组,其中所述外设模块组中的外设模块是中央处理器处于睡眠状态过程中发生特定外设事件的外设模块,不同的所述外设模块对应的特定外设事件不同;将所述外设模块组与预先设定的外设模块组进行比较,其中,所述预先设定的外设模块组包括至少一个需要唤醒中央处理器的外设模块;当所述外设模块组与所述预先设定的外设模块组相同时通过唤醒事件唤醒中央处理器,每个外设模块对应有至少一个外设事件,所述特定外设事件是针对相应的外设模块预先设定的需要唤醒CPU的外设事件;若所述外设模块组与所述预先设定的外设模块组不相同,则不唤醒中央处理器;
其中,所述唤醒部件包括多个外设选择器、外设事件缓存寄存器和外设事件预存寄存器;所述外设选择器的输出端口与所述外设事件缓存寄存器的输入端口连接,且不同的所述外设选择器连接的所述外设事件缓存寄存器的输入端口不同;若所述外设事件缓存寄存器输出第一外设事件信号的输出端口与所述外设事件预存寄存器输出第二外设事件信号的输出端口不相同,则不生成脉冲信号;所述脉冲信号用于唤醒中央处理器;所述第一外设事件信号是所述外设事件缓存寄存器在接收到缓存信号后,通过与接收到缓存信号的输入端口对应的输出端口输出的;所述第二外设事件信号是所述外设事件预存寄存器在接收到缓存信号后,通过与接收到缓存信号的输入端口对应的输出端口输出的;
其中,输入到所述外设事件缓存寄存器的缓存信号是所述外设选择器在所述外设模块对应的特定外设事件发生时输出的;输入到所述外设事件预存寄存器的缓存信号是根据用于唤醒中央处理器的外设模块确定的。
5.如权利要求4所述的装置,其特征在于,所述唤醒部件还包括:比较器和脉冲发生器;所述外设事件缓存寄存器的输出端口与所述比较器连接,所述外设事件缓存寄存器用于在与接收到缓存信号的输入端口对应的输出端口输出第一外设事件信号给所述比较器;
所述外设事件预存寄存器的输出端口与所述比较器连接,所述外设事件预存寄存器用于在输入端口接收到缓存信号后通过所述输入端口对应的输出端口输出第二外设事件信号给所述比较器;
所述比较器,用于比较所述外设事件缓存寄存器输出第一外设事件信号的输出端口与所述外设事件预存寄存器输出第二外设事件信号的输出端口是否相同,并将比较结果输出至所述脉冲发生器;
所述脉冲发生器的输出端口连接所述中央处理器,用于在所述比较结果相同时产生用于唤醒中央处理器的脉冲信号。
6.如权利要求4所述的装置,其特征在于,所述唤醒部件还用于:
在所述中央处理器重新进入睡眠模式之前,根据所述需要唤醒中央处理器的外设模块重新调整所述预先设定的外设模块组和/或所述外设模块对应的特定外设事件。
7.如权利要求4所述的装置,其特征在于,所述唤醒部件还用于:
使能所述预先设定的外设模块组中的外设模块。
CN201811317138.9A 2018-11-07 2018-11-07 一种唤醒中央处理器的方法和装置 Active CN111158758B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811317138.9A CN111158758B (zh) 2018-11-07 2018-11-07 一种唤醒中央处理器的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811317138.9A CN111158758B (zh) 2018-11-07 2018-11-07 一种唤醒中央处理器的方法和装置

Publications (2)

Publication Number Publication Date
CN111158758A CN111158758A (zh) 2020-05-15
CN111158758B true CN111158758B (zh) 2024-03-15

Family

ID=70555084

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811317138.9A Active CN111158758B (zh) 2018-11-07 2018-11-07 一种唤醒中央处理器的方法和装置

Country Status (1)

Country Link
CN (1) CN111158758B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111427443B (zh) * 2020-06-10 2020-11-06 上海泰矽微电子有限公司 一种mcu实现外设自主动态联动降功耗的方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN200997136Y (zh) * 2006-11-10 2007-12-26 上海海尔集成电路有限公司 内置比较器的微控制器结构
CN104597790A (zh) * 2014-12-26 2015-05-06 北京兆易创新科技股份有限公司 一种串口控制器及基于其的微控制器系统的唤醒方法
CN105515792A (zh) * 2015-12-10 2016-04-20 Abb技术有限公司 楼宇对讲设备的网络唤醒方法和楼宇对讲设备

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN200997136Y (zh) * 2006-11-10 2007-12-26 上海海尔集成电路有限公司 内置比较器的微控制器结构
CN104597790A (zh) * 2014-12-26 2015-05-06 北京兆易创新科技股份有限公司 一种串口控制器及基于其的微控制器系统的唤醒方法
CN105515792A (zh) * 2015-12-10 2016-04-20 Abb技术有限公司 楼宇对讲设备的网络唤醒方法和楼宇对讲设备

Also Published As

Publication number Publication date
CN111158758A (zh) 2020-05-15

Similar Documents

Publication Publication Date Title
US7529956B2 (en) Granular reduction in power consumption
EP0451661B1 (en) Low power consumption microprocessor
US6026498A (en) Clock signal generator circuit using a logical result of an output of a computer and a source clock to generate plurality of clock signals
US20080215908A1 (en) Sleep Watchdog Circuit For Asynchronous Digital Circuits
CN109799870B (zh) 一种时钟控制电路及控制方法
US20130227181A1 (en) Integrated Circuit, System, and Method Including a Shared Synchronization Bus
CN103324546A (zh) 一种延时喂狗的方法及装置
WO2022161244A1 (zh) 多主机仲裁方法、装置和可读存储介质
CN111158758B (zh) 一种唤醒中央处理器的方法和装置
CN106063304B (zh) 用于基于消息的细粒度片上系统功率门控的系统和方法
US10521382B2 (en) Method of scheduling system-on-chip including real-time shared interface
JP2531918B2 (ja) 分散プログラマブル優先順位ア―ビトレ―ション方法およびシステム
US9747246B2 (en) Electronic device for communicating between a microcontroller unit (MCU) and a host processor and related methods
CN115639897B (zh) 一种实时电压控制模块
CN113064709A (zh) 一种适用于mcu芯片的任务调度方法及系统
GB2263795A (en) Interrupt priority using timer circuit.
US9733690B2 (en) Communication device which decreases power comsumption by powering off unused functions when device is inactive
US8645742B2 (en) Semiconductor device operating according to an operation clock and having a serial communication interface performing external communications according to a unit transfer time based on the operation clock
JP2004185378A (ja) クロック同期式シリアル通信装置および半導体集積回路装置
US10146367B2 (en) Synchronization method and touch signal processing system using the same
CN113515063B (zh) 多核心处理器电路
US9024699B2 (en) Numerically-controlled oscillator
CN108227893B (zh) 串口控制器、微控制系统及微控制系统中的唤醒方法
KR102568225B1 (ko) 반도체 장치, 반도체 시스템 및 반도체 장치의 동작 방법
JPS62259157A (ja) 割込み方式

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant