CN111679730B - 基于FreeRTOS的处理器状态控制方法和装置 - Google Patents
基于FreeRTOS的处理器状态控制方法和装置 Download PDFInfo
- Publication number
- CN111679730B CN111679730B CN202010484526.7A CN202010484526A CN111679730B CN 111679730 B CN111679730 B CN 111679730B CN 202010484526 A CN202010484526 A CN 202010484526A CN 111679730 B CN111679730 B CN 111679730B
- Authority
- CN
- China
- Prior art keywords
- task
- processor
- time length
- stop mode
- state
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 63
- 238000012545 processing Methods 0.000 claims description 10
- 238000004891 communication Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000002618 waking effect Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3287—Power saving characterised by the action undertaken by switching off individual functional units in the computer system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/329—Power saving characterised by the action undertaken by task scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4418—Suspend and resume; Hibernate and awake
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Power Sources (AREA)
- Telephone Function (AREA)
Abstract
本申请提供一种基于FreeRTOS的处理器状态控制方法和装置,该方法包括:创建第一任务;通过第一任务,确定多个第二任务中每个第二任务的运行状态以及处理器能够维持停止模式的目标时长,第一任务的优先级低于每个第二任务的优先级;若根据目标时长和每个第二任务的运行状态,确定每个第二任务满足进入停止模式的条件时,控制处理器在目标时长内处于停止模式。通过该方法能够实现基于FreeRTOS的处理器的状态控制,使得基于FreeRTOS的处理器能够在每个第二任务满足进入停止模式的情况下进入停止模式,进而降低产品功耗。
Description
技术领域
本申请实施例涉及数据处理技术领域,尤其涉及一种基于FreeRTOS的处理器状态控制方法和装置。
背景技术
日常生活中,手环、手机等便携且移动性较强的产品被广泛使用,此类产品内部多采用嵌入式系统。因为此类产品都是使用电池供电,所以产品续航能力有限。
现有技术中,在基于嵌入式实时操作系统FreeRTOS的STM32处理器的嵌入式系统的设计中,为了降低产品功耗,多采用FreeRTOS提供的睡眠(Sleep)模式低功耗功能,通过使STM32处理器进入睡眠模式,来降低产品功耗。
然而,STM32处理器在睡眠模式下,只有STM32处理器的内核停止了工作,外设仍然在运行,产品功耗较高,并不能满足超低功耗要求。
发明内容
本申请提供一种基于FreeRTOS的处理器状态控制方法和装置,能够使基于FreeRTOS的处理器进入停止模式。
第一方面,本申请提供了一种基于FreeRTOS的处理器状态控制方法,包括:创建第一任务;通过第一任务,确定多个第二任务中每个第二任务的运行状态以及处理器能够维持停止模式的目标时长,第一任务的优先级低于每个第二任务的优先级;若根据目标时长和每个第二任务的运行状态,确定每个第二任务满足进入停止模式的条件时,控制处理器在目标时长内处于停止模式。
通过该方法创建的第一任务,由于优先级低于每个第二任务,从而不干扰每个第二任务的执行。通过创建优先级低于每个第二任务的优先级的第一任务,并通过第一任务确定多个第二任务中每个第二任务的运行状态以及基于FreeRTOS的处理器能够维持停止模式的目标时长;若根据目标时长和每个第二任务的运行状态,确定每个第二任务满足进入停止模式的条件时,则控制基于FreeRTOS的处理器在目标时长内处于停止模式。能够实现基于FreeRTOS的处理器的状态控制,使得基于FreeRTOS的处理器能够在每个第二任务满足进入停止模式的情况下进入停止模式,进而降低产品功耗。
可选的,通过第一任务,确定处理器能够维持停止模式的目标时长,包括:若确定出每个第二任务的运行状态均处于空闲状态,则通过第一任务,分别获取每个第二任务能够维持停止模式的时长;将每个第二任务能够维持停止模式的时长中最短的时长,确定为目标时长。
通过该方法能够确定出第二任务中任一任务能够维持停止模式的时长。
可选的,根据目标时长和每个第二任务的运行状态,确定每个第二任务满足进入停止模式的条件,包括:根据每个第二任务的运行状态,判断每个第二任务是否均处于空闲状态;若每个第二任务均处于空闲状态,则判断目标时长是否大于预设时长;若目标时长大于预设时长,则确定每个第二任务满足进入停止模式的条件。
通过该方法能够确定出第二任务中所有任务同时维持停止模式的时长。能够防止因时长设置不合理,例如设置的太短,导致处理器进入停止模式后,又立即退出停止模式,没有到达降低功耗的效果,进而影响产品性能。
可选的,控制处理器在目标时长内处于停止模式,包括:通过第一任务,向每个第二任务发送通知消息,该通知消息用于通知每个第二任务进入停止状态;若确定每个第二任务均进入停止状态,则控制处理器在目标时长内处于停止模式。
通过该方法能够使每个第二任务均进入停止状态,进而能够使处理器在目标时长内进入停止模式,降低系统功耗。
可选的,第一任务的功耗小于预设值。
通过创建低功耗的第一任务不会过多的增加产品功耗,进而不会消耗过多电量,能够保证产品的待机时长。
可选的,通过第一任务,确定多个第二任务中每个第二任务的运行状态,包括:通过第一任务,实时扫描每个第二任务,得到每个第二任务的运行状态。
通过该方法能够缩短获取第二任务的运行状态的时间,提升处理器的运行效率,同时能够减少获取每个第二任务的运行状态之间的时延,保证获取的每个第二任务的运行状态的准确性。
可选的,每个第二任务的运行状态包括:空闲状态、繁忙状态和停止状态。
第二方面,本申请提供一种基于FreeRTOS的处理器状态控制装置,包括:创建模块,用于创建第一任务;处理模块,用于通过第一任务,确定多个第二任务中每个第二任务的运行状态以及处理器能够维持停止模式的目标时长,第一任务的优先级低于每个第二任务的优先级;控制模块,用于若根据目标时长和每个第二任务的运行状态,确定每个第二任务满足进入停止模式的条件时,控制处理器在目标时长内处于停止模式。
可选的,处理模块具体用于,若确定出每个第二任务的运行状态处于空闲状态,则通过第一任务,分别获取每个第二任务能够维持停止模式的时长;将每个第二任务能够维持停止模式的时长中最短的时长,确定为目标时长。
可选的,控制模块具体用于,根据每个第二任务的运行状态,判断每个第二任务是否均处于空闲状态;若每个第二任务均处于空闲状态,则判断目标时长是否大于预设时长;若目标时长大于预设时长,则确定每个第二任务满足进入停止模式的条件。
可选的,控制模块具体用于,通过第一任务,向每个第二任务发送通知消息,通知消息用于通知每个第二任务进入停止状态;若确定每个第二任务均进入停止状态,则控制处理器在目标时长内处于停止模式。
可选的,第一任务的功耗小于预设值。
可选的,处理模块具体用于,通过第一任务,实时扫描每个第二任务,得到每个第二任务的运行状态。
可选的,每个第二任务的运行状态包括:空闲状态、繁忙状态和停止状态。
第三方面,本申请提供一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行如第一方面或第一方面的可选方式的方法。
第四方面,本申请提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,计算机执行指令被处理器执行时用于实现如第一方面或第一方面的可选方式的任一项的基于FreeRTOS的处理器状态控制方法。
本申请提供的基于FreeRTOS的处理器状态控制方法和装置,通过创建优先级低于每个第二任务的优先级的第一任务,并通过第一任务确定多个第二任务中每个第二任务的运行状态以及基于FreeRTOS的处理器能够维持停止模式的目标时长;若根据目标时长和每个第二任务的运行状态,确定每个第二任务满足进入停止模式的条件时,则控制基于FreeRTOS的处理器在目标时长内处于停止模式。能够实现基于FreeRTOS的处理器的状态控制,使得基于FreeRTOS的处理器能够在每个第二任务满足进入停止模式的情况下进入停止模式,进而降低产品功耗。
附图说明
图1为本申请提供的一种基于FreeRTOS的处理器状态控制方法的流程图;
图2为本申请提供的另一种基于FreeRTOS的处理器状态控制方法的流程图;
图3为本申请提供的又一种基于FreeRTOS的处理器状态控制方法的流程图;
图4为本申请提供的一种基于FreeRTOS的处理器状态控制装置的结构示意图;
图5为本申请实施例提供的一种电子设备的结构示意图。
通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
STM32处理器的低功耗工作模式有三种:睡眠模式、停止(Stop)模式和待机(Standby)模式。在基于嵌入式实时操作系统FreeRTOS的STM32处理器的嵌入式系统的设计中,为了降低产品功耗,多采用FreeRTOS提供的睡眠模式低功耗功能,通过使STM32处理器进入睡眠模式,并采用Systick定时器唤醒进入睡眠模式的STM32处理器,然而,STM32处理器在睡眠模式下,只有STM32处理器的内核停止了工作,外设仍然在运行,产品功耗较高。
FreeRTOS具有多任务管理机制。多任务是指把一个大应用“分而治之”,把大的应用细划分成更多的小应用,每个小应用就相当于一个任务,任务之间是独立互不干扰,处理自身的逻辑。FreeRTOS每个任务还有自身的优先级,高优先级的任务会打断低优先级任务的运行而取得CPU的使用权。
本申请的主旨思想是:通过创建一个任务,然后通过该任务实时的遍历各个任务的运行状态,判断每个任务当前能够维持停止模式的时长,若发现最小时长大于进入设定的最小维持停止模式时长时,该任务确定每个第二任务满足进入停止模式的条件时,控制STM32处理器进入停止模式;并通过RTC定时器周期性的唤醒STM32处理器,并判断STM32处理器进入停止模式的时长是否结束,若STM32处理器进入停止模式的时长没有结束,则再次控制STM32处理器进入停止模式,若STM32处理器进入停止模式的时长结束,则控制STM32处理器退出停止模式。
下面将结合附图,对本申请的实施例进行描述。这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
图1为本申请提供的一种基于FreeRTOS的处理器状态控制方法的流程图,该方法的执行主体可以是基于FreeRTOS的处理器,例如基于FreeRTOS的STM32处理器。该基于FreeRTOS的处理器可以应用于手环、手机等便携式和移动性较强的产品。如图1所示,该方法包括如下步骤:
S101、创建第一任务。
S102、通过第一任务,确定多个第二任务中每个第二任务的运行状态以及处理器能够维持停止模式的目标时长。
其中,第一任务的优先级低于每个第二任务的优先级。通过该方法,第一任务不干扰每个第二任务的执行。低优先级的第一任务不会打断比其优先级高的任一正在执行的第二任务,能够保证每个第二任务的正常执行,保证产品功能的正常实现;每个第二任务因为具有较高优先级,当需要执行第二任务时,即使第一任务正在执行,第二任务也可以将该第一任务打断,以使处理器执行第二任务,进而能够保证产品功能的正常实现。
第二任务可以是用于实现产品功能的任务,例如以车载移动终端为例,车载移动终端的主要模块有:全球定位系统(Global Positioning System,简称GPS)定位模块、网络通信模块、传感器模块等。每一个模块都有对应的独立任务在运行与管理,例如GPS定位模块则有GPS定位任务,其用于采集定位数据;网络通信模块有网络通信任务,其用于当有数据需发送给车载移动终端时,网络通信任务会立即进入繁忙状态,将当前设备的数据,例如定位信息、电池电量等,及时发送给车载移动终端。
例如,假设第二任务为网络通信任务,由于第一任务的优先级低于第二任务,当处理器上的FreeRTOS操作系统正在执行第一任务时,如果有数据需要发送给车载移动终端,网络通信任务会立即打断第一任务的运行,处理器开始执行网络通信任务,进而及时将当前设备的数据,例如定位信息,电池信息等发送给车载移动终端。当处理器上的FreeRTOS操作系统正在执行网络通信任务时,第一任务无法被执行。
S103、若根据目标时长和每个第二任务的运行状态,确定每个第二任务满足进入停止模式的条件时,控制处理器在目标时长内处于停止模式。
本申请通过创建的第一任务确定多个第二任务中每个第二任务的运行状态以及基于FreeRTOS的处理器能够维持停止模式的目标时长;若根据目标时长和每个第二任务的运行状态,确定每个第二任务满足进入停止模式的条件时,则控制基于FreeRTOS的处理器在目标时长内处于停止模式。能够实现基于FreeRTOS的处理器的低功耗控制,使得基于FreeRTOS的处理器能够在每个第二任务满足进入停止模式的情况下进入停止模式,进而降低产品功耗。
图2为本申请提供的另一种基于FreeRTOS的处理器状态控制方法的流程图,该方法的执行主体可以是基于FreeRTOS的处理器,例如基于FreeRTOS的STM32处理器。该基于FreeRTOS的处理器可以应用于手环、手机等便携式和移动性较强的产品。图2所示实施例在图1所示实施例的基础上,对S103若根据目标时长和每个第二任务的运行状态,确定每个第二任务满足进入停止模式的条件时,控制处理器在目标时长内处于停止模式进行详细说明。如图2所示,该方法包括如下步骤:
S201、创建第一任务。
在一种可能的实现方式中,第一任务的功耗小于预设阈值。
因为,第一任务的处理逻辑比较简单,功能单一,所以处理器在运行第一任务时,占用的资源较少、处理速度快,功耗低。进而创建低功耗的第一任务不会过多的增加产品功耗,进而不会消耗过多电量,能够保证产品的待机时长。
其中,预设值可以根据实际情况或者经验进行设置,对于预设值的具体取值,本申请实施例在此不做限制。当然,该预设值可以是一种判断标准,例如当第一任务运行功耗低于该预设值时,用户就确定该第一任务为低功耗任务,而不需要将预设值输入到处理器或者设备中予以存储。
S202、通过第一任务,确定多个第二任务中每个第二任务的运行状态以及处理器能够维持停止模式的目标时长。
其中,第一任务的优先级低于每个第二任务的优先级。通过该方法,第一任务不干扰每个第二任务的执行。具体说明参见步骤102。
示例性的,通过第一任务,确定多个第二任务中每个第二任务的运行状态的一种可能的实现方式是:通过第一任务,实时扫描每个第二任务,得到每个第二任务的运行状态。具体地,可以是通过第一任务,在预设时间内,周期性的扫描每个第二任务,获取每个第二任务相应状态值,以得到每个第二任务的运行状态,该状态值用于表示第二任务的运行状态。
通过该方法能够缩短获取第二任务的运行状态的时间,提升处理器的运行效率,同时能够减少获取每个第二任务的运行状态之间的时延,保证获取的每个第二任务的运行状态的准确性。
可选的,每个第二任务的运行状态包括:空闲状态、繁忙状态和停止状态,其中,任一时刻,任一第二任务的运行状态可以是空闲状态、繁忙状态和停止状态中的一种。
任一第二任务处于繁忙状态表示该任务正在执行相应操作,例如GPS定位任务正在执行GPS定位数据的采集,则该任务处于繁忙状态。任一第二任务处于空闲状态表示该任务没有执行任何操作。任一第二任务处于停止状态表示该任务接收到第一任务发送的通知消息,并完成了进入停止模式前的操作,例如GPS定位任务关闭GPS定位模块的电源等。
进一步地,通过第一任务,确定处理器能够维持停止模式的目标时长的一种可能的实现方式是:若确定出每个第二任务的运行状态处于空闲状态,则通过第一任务,分别获取每个第二任务能够维持停止模式的时长;将每个第二任务能够维持停止模式的时长中最短的时长,确定为目标时长。若确定出任一第二任务的运行状态处于繁忙状态,则结束通过第一任务,确定处理器能够维持停止模式的目标时长的过程。通过该方法能够确定出第二任务中任一任务能够维持停止模式的时长。
具体的,通过第一任务,分别获取每个第二任务能够维持停止模式的时长可以是通过第一任务获取每个第二任务的当前运行状态,若为空闲状态,则接着获取第二任务能够维持停止模式的时长。
例如,假设第二任务包括三个任务,分别为GPS定位任务、网络通信任务和传感器任务。其中GPS定位任务能够维持停止模式的时间是1ms、网络通信任务能够维持停止模式的时间是0.1ms、传感器任务能够维持停止模式的时间为2ms,则将0.1ms确定为目标时长。
S203、根据目标时长和每个第二任务的运行状态,确定每个第二任务是否满足进入停止模式的条件,若每个第二任务满足进入停止模式的条件,则执行S204;若任一第二任务不满足进入停止模式的条件,则执行S202。
根据目标时长和每个第二任务的运行状态,确定每个第二任务满足进入停止模式的条件的一种可能的实现方式是:根据每个第二任务的运行状态,判断每个第二任务是否均处于空闲状态;若每个第二任务均处于空闲状态,则判断目标时长是否大于预设时长;若任一第二任务均处于繁忙状态,则结束确定每个第二任务满足进入停止模式的条件;若目标时长大于预设时长,则确定每个第二任务满足进入停止模式的条件;若目标时长小于或等于预设时长,则确定每个第二任务不满足进入停止模式的条件。
其中,预设时长为预设的处理器能够维持停止模式的最小时长。
通过该方法能够确定出第二任务中所有任务同时维持停止模式的时长。能够防止因时长设置不合理,例如设置的太短,导致处理器进入停止模式后,又立即退出停止模式,没有到达降低功耗的效果,进而影响产品性能。
S204、控制处理器在目标时长内处于停止模式。
控制处理器在目标时长内处于停止模式的一种可能的实现方式是:通过第一任务,向每个第二任务发送通知消息,通知消息用于通知每个第二任务进入停止状态;若确定每个第二任务均进入停止状态,则控制处理器在目标时长内处于停止模式。
通过该方法能够使每个第二任务均进入停止状态,进而能够使处理器在目标时长内进入停止模式,降低系统功耗。
本申请通过创建优先级低于每个第二任务的优先级的第一任务,并通过第一任务确定多个第二任务中每个第二任务的运行状态以及基于FreeRTOS的处理器能够维持停止模式的目标时长;若根据目标时长和每个第二任务的运行状态,确定每个第二任务满足进入停止模式的条件时,则控制基于FreeRTOS的处理器在目标时长内处于停止模式。能够实现基于FreeRTOS的处理器的低功耗控制,使得基于FreeRTOS的处理器能够在每个第二任务满足进入停止模式的情况下进入停止模式,进而降低产品功耗。
图3为本申请提供的又一种基于FreeRTOS的处理器状态控制方法的流程图,该方法的执行主体可以是基于FreeRTOS的处理器,例如基于FreeRTOS的STM32处理器。该基于FreeRTOS的处理器可以应用于手环、手机等便携式和移动性较强的产品。如图3所示,该方法包括如下步骤:
S301、创建第一任务。
可选的,第一任务的功耗低于预设值。
S302、通过第一任务,实时扫描每个第二任务,得到每个第二任务的运行状态。
可选的,每个第二任务的运行状态包括:空闲状态、繁忙状态和停止状态,其中,任一时刻,任一第二任务的运行状态可以是空闲状态、繁忙状态和停止状态中的一种。
S303、通过第一任务,分别获取每个第二任务能够维持停止模式的时长。
S304、将每个第二任务能够维持停止模式的时长中最短的时长,确定为目标时长。
S305、判断是否每个第二任务均处于空闲状态,若每个第二任务均处于空闲状态,则执行S306;若任一第二任务处于繁忙状态,则执行S302。
S306、判断目标时长是否大于预设时长,若目标时长大于预设时长,则将该目标时长设置为RTC定时器的计时时长,并执行S307;若目标时长小于或等于预设时长,则执行S302。
S307、通过第一任务向每个第二任务发送通知消息,该通知消息用于控制每个第二任务进入停止状态。
具体的,任一第二任务接收到该通知消息后,则执行进入停止模式前的相应事务,并在相应事务后执行完后进入停止状态。
例如,第二任务为GPS定位任务时,GPS定位任务接收到第一任务发送的通知消息后,将停止GPS信号采集,并在停止GPS信号采集后关闭电源进入停止状态。
S308、通过第一任务,获取每个第二任务的运行状态,判断是否所有第二任务都进入停止状态,若所有第二任务都进入停止状态,则执行S309;若任一第二任务没有进入停止状态,则执行S314。
可选的,可再次通过第一任务,获取每个第二任务的运行状态,以判断是否所有第二任务都进入停止状态。因为在通过第一任务,获取每个第二任务的运行状态,判断是否所有第二任务都进入停止状态需要一定时间,在这段时间内可能发生外部时间触发,导致任一第二任务不能进入停止状态。例如,传感器检测到设备非法移动,导致传感器任务不能进入停止状态。通过多次检测,以保证在处理器进入停止模式前没有第二任务处于繁忙状态。
S309、执行处理器进入停止模式前的事务。
例如,处理器进入停止模式前的事务可以包括处理器关闭外设、通用异步收发传输器接口(Universal Asynchronous Receiver/Transmitter,简称UART)、串行外设接口(Serial Peripheral Interface,简称SPI)、两线时串行总线接口(Inter-IntegratedCircuit,简称I2C)等等。
S310、启动实时时钟(Real_Time Clock,RTC)定时器,其中,RTC定时器的计时时长为目标时长。
S311、通过RTC定时器以预设周期时长,周期性的唤醒处理器,其中预设周期时长小于目标时长。
S312、当处理器被唤醒时,判断处理器是否是被RTC定时器唤醒,若处理器是被RTC定时器唤醒时,执行S313;若处理器不是被RTC定时器唤醒时,执行S314。
S313、判断RTC定期器的计时时长是否结束,若RTC定时器计时时长结束,则执行S314;若RTC定时器计时时长未结束,则执行S312。
结合S312和S313进行举例说明:
假设将预设周期时长设置为1s,即RTC定时器每隔1s唤醒一次处理器。如果处理器在非RTC定时器唤醒时刻被唤醒,即唤醒处理器的不是RTC定时器,则说明处理器有事务要处理,不能继续维持停止模式,需及时退出停止模式。例如,处理器被传感器唤醒时,处理器需要执行传感器任务,因而不能继续维持停止模式,需退出停止模式,以执行传感器任务。
若处理器是被RTC定时器周期性唤醒,则继续判断RTC定时器的计时时长是否结束,即判断处理器维持停止模式的时长是否结束,如果RTC定时器的计时时长已结束,则控制处理器退出停止模式,若RTC定时器的计时时长未结束,则控制处理器继续维持停止模式。
S314、通过第一任务向每个第二任务发送退出停止模式消息,以唤醒每个第二任务,其中,退出停止模式消息用于通知每个第二任务执行退出停止模式前的相应事务。
例如,第二任务为GPS定位采集任务时,GPS定位采集任务接收到第一任务发送的退出停止模式消息后,将开启GPS信号采集,并在开启GPS信号采集后退出挂起状态。
可以理解的是,每个第二任务在进入停止模式前执行的事务和退出停止模式前执行的事务是相应的,例如GPS定位采集任务在进入停止模式前执行关闭GPS信号采集,在退出停止模式前相应的执行开启GPS采集。
S315、执行处理器退出停止模式前的事务。
例如,处理器开启外设、UART、SPI、I2C等等。
可以理解的是,处理器在进入停止模式前执行的事务和退出停止模式前执行的事务是相应的,例如处理器在进入停止模式前执行关闭UART,在退出停止模式前相应的执行开启UART。
本申请通过创建的第一任务获取每个第二任务能够维持停止模式的时长,将每个第二任务能够维持停止模式的时长中最短的时长,确定为目标时长,并判断目标时长是否大于预设时长,若目标时长大于预设时长,则将该目标时长设置为RTC定时器的第一计时时长;通过创建的第一任务实时扫描每个第二任务,得到每个第二任务的运行状态、判断是否每个第二任务均处于空闲状态,若每个第二任务均处于空闲状态,则通过第一任务向每个第二任务发送通知消息,该通知消息用于通知每个第二任务执行进入停止模式前的相应事务,并在相应事务后执行完后进入停止状态。再次通过第一任务获取每个第二任务的运行状态,判断是否所有第二任务都进入停止状态,若所有第二任务都进入停止状态,则启动RTC定时器,并通过RTC定时器以预设的第二计时时长,周期性的唤醒处理器,其中预设的第二计时时长小于定时器的第一计时时长。并当处理器被唤醒时,判断处理器是否是被RTC定时器唤醒,若处理器被RTC定时器唤醒,则判断RTC定期器的第一计时时长是否结束,若RTC定时器第一计时时长结束,则通过第一任务向每个第二任务发送退出停止模式消息,以唤醒每个第二任务,其中,退出停止模式消息用于通知每个第二任务执行退出停止模式前的相应事务。执行处理器退出停止模式前的事务,以控制处理器退出停止模式;若处理器不是被RTC定时器唤醒,则直接通过第一任务向每个第二任务发送退出停止模式消息,以唤醒每个第二任务,其中,退出停止模式消息用于通知每个第二任务执行退出停止模式前的相应事务。执行处理器停止模式前的事务,以控制处理器退出停止模式。使基于FreeRTOS的处理器能够进入停止模式,能够使基于FreeRTOS的STM32运行在功耗更低的状态下,进而降低产品的功耗。
图4为本申请提供的一种基于FreeRTOS的处理器状态控制装置的结构示意图,如图4所示,该装置包括:
创建模块41、用于创建第一任务。
处理模块42、用于通过第一任务,确定多个第二任务中每个第二任务的运行状态以及处理器能够维持停止模式的目标时长,第一任务的优先级低于每个第二任务的优先级。
控制模块43、用于若根据目标时长和每个第二任务的运行状态,确定每个第二任务满足进入停止模式的条件时,控制处理器在目标时长内处于停止模式。
可选的,处理模块42,具体用于若确定出每个第二任务的运行状态处于空闲状态,则通过第一任务,分别获取每个第二任务能够维持停止模式的时长;将每个第二任务能够维持停止模式的时长中最短的时长,确定为目标时长。
可选的,控制模块43,具体用于根据每个第二任务的运行状态,判断每个第二任务是否均处于空闲状态;若每个第二任务均处于空闲状态,则判断目标时长是否大于预设时长;若目标时长大于预设时长,则确定每个第二任务满足进入停止模式的条件。
可选的,控制模块43,具体用于通过第一任务,向每个第二任务发送通知消息,该通知消息用于通知每个第二任务进入停止状态;若确定每个第二任务均进入停止状态,则控制处理器在目标时长内处于停止模式。
可选的,处理模块42,具体用于通过第一任务,实时扫描每个第二任务,得到每个第二任务的运行状态。
可选的,每个第二任务的运行状态包括:空闲状态、繁忙状态和停止状态,其中,任一时刻,任一第二任务的运行状态可以是空闲状态、繁忙状态和停止状态中的一种。
该基于FreeRTOS的处理器状态控制装置可以执行上述的基于FreeRTOS的处理器状态控制方法,其内容和效果可参考方法实施例部分,对此不再赘述。
图5为本申请实施例提供的一种电子设备的结构示意图,如图5所示,本实施例的电子设备包括:处理器51、存储器52;处理器51与存储器52通信连接。存储器52用于存储计算机程序。处理器51用于调用存储器52中存储的计算机程序,以实现上述方法实施例中的方法。
可选地,该电子设备还包括:收发器53,用于与其他设备实现通信。
该基于FreeRTOS的处理器状态控制设备可以执行上述的基于FreeRTOS的处理器状态控制方法,其内容和效果可参考方法实施例部分,对此不再赘述。
本申请还提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,计算机执行指令被处理器执行时用于实现上述基于FreeRTOS的处理器状态控制方法。
该计算机可读存储介质所存储的计算机执行指令被处理器执行时能实现上述基于FreeRTOS的处理器状态控制方法,其内容和效果可参考方法实施例部分,对此不再赘述。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求书指出。应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求书来限制。
Claims (9)
1.一种基于FreeRTOS的处理器状态控制方法,其特征在于,包括:
创建第一任务;
通过所述第一任务,确定多个第二任务中每个第二任务的运行状态以及处理器能够维持停止模式的目标时长,所述第一任务的优先级低于每个所述第二任务的优先级;
若根据所述目标时长和每个所述第二任务的运行状态,确定每个所述第二任务满足进入停止模式的条件时,控制所述处理器在所述目标时长内处于停止模式;
所述根据所述目标时长和每个所述第二任务的运行状态,确定每个所述第二任务满足进入停止模式的条件,包括:
根据每个所述第二任务的运行状态,判断每个所述第二任务是否均处于空闲状态;
若每个所述第二任务均处于空闲状态,则判断所述目标时长是否大于预设时长,所述预设时长为预设的所述处理器能够维持停止模式的最小时长;
若所述目标时长大于所述预设时长,则确定每个所述第二任务满足进入停止模式的条件。
2.根据权利要求1所述的方法,其特征在于,通过所述第一任务,确定处理器能够维持停止模式的目标时长,包括:
若确定出每个所述第二任务的运行状态处于空闲状态,则通过所述第一任务,分别获取每个所述第二任务能够维持停止模式的时长;
将每个第二任务能够维持停止模式的时长中最短的时长,确定为所述目标时长。
3.根据权利要求1或2所述的方法,其特征在于,所述控制所述处理器在所述目标时长内处于停止模式,包括:
通过所述第一任务,向每个所述第二任务发送通知消息,所述通知消息用于通知每个所述第二任务进入停止状态;
若确定每个所述第二任务均进入停止状态,则控制所述处理器在所述目标时长内处于停止模式。
4.根据权利要求1或2所述的方法,其特征在于,所述第一任务的功耗小于预设值。
5.根据权利要求1或2所述的方法,其特征在于,所述通过所述第一任务,确定多个第二任务中每个第二任务的运行状态,包括:
通过所述第一任务,实时扫描每个所述第二任务,得到每个所述第二任务的运行状态。
6.根据权利要求1或2所述的方法,其特征在于,每个所述第二任务的运行状态包括:空闲状态、繁忙状态和停止状态。
7.一种基于FreeRTOS的处理器低功耗控制装置,其特征在于,包括:
创建模块,用于创建第一任务;
处理模块,用于通过所述第一任务,确定多个第二任务中每个第二任务的运行状态以及处理器能够维持停止模式的目标时长,所述第一任务的优先级低于每个所述第二任务的优先级;
控制模块,用于若根据所述目标时长和每个所述第二任务的运行状态,确定所述每个第二任务满足进入停止模式的条件时,控制所述处理器在所述目标时长内处于停止模式;
所述控制模块,具体用于根据每个所述第二任务的运行状态,判断每个所述第二任务是否均处于空闲状态;
若每个所述第二任务均处于空闲状态,则判断所述目标时长是否大于预设时长,所述预设时长为预设的所述处理器能够维持停止模式的最小时长;
若所述目标时长大于所述预设时长,则确定每个所述第二任务满足进入停止模式的条件。
8.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与至少一个所述处理器通信连接的存储器;其中,
所述存储器存储有可被至少一个所述处理器执行的指令,所述指令被至少一个所述处理器执行,以使至少一个所述处理器能够执行权利要求1至6中任一项所述的方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1至6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010484526.7A CN111679730B (zh) | 2020-06-01 | 2020-06-01 | 基于FreeRTOS的处理器状态控制方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010484526.7A CN111679730B (zh) | 2020-06-01 | 2020-06-01 | 基于FreeRTOS的处理器状态控制方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111679730A CN111679730A (zh) | 2020-09-18 |
CN111679730B true CN111679730B (zh) | 2022-06-07 |
Family
ID=72453428
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010484526.7A Active CN111679730B (zh) | 2020-06-01 | 2020-06-01 | 基于FreeRTOS的处理器状态控制方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111679730B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115993996B (zh) * | 2023-03-22 | 2023-06-09 | 南京芯驰半导体科技有限公司 | 一种基于rtos实现休眠模式的方法和系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104111850A (zh) * | 2014-07-17 | 2014-10-22 | 上海庆科信息技术有限公司 | 一种降低微控制单元mcu功耗的方法及系统 |
CN104679218A (zh) * | 2015-02-13 | 2015-06-03 | 小米科技有限责任公司 | 控制功耗的方法和装置 |
CN105807892A (zh) * | 2016-03-10 | 2016-07-27 | 浙江大学 | 一种嵌入式实时操作系统的低功耗模式切换方法 |
CN107728466A (zh) * | 2017-09-28 | 2018-02-23 | 华侨大学 | 一种适用于数控系统固定优先级可靠性感知能耗优化方法 |
CN109976501A (zh) * | 2017-12-28 | 2019-07-05 | 中移物联网有限公司 | 一种低功耗控制方法、装置、系统及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6090261B2 (ja) * | 2014-08-20 | 2017-03-08 | コニカミノルタ株式会社 | 画像形成装置、起動制御方法および起動制御プログラム |
CN110989820A (zh) * | 2019-11-29 | 2020-04-10 | 上海庆科信息技术有限公司 | 处理器功耗的控制方法、装置、处理器及电子装置 |
-
2020
- 2020-06-01 CN CN202010484526.7A patent/CN111679730B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104111850A (zh) * | 2014-07-17 | 2014-10-22 | 上海庆科信息技术有限公司 | 一种降低微控制单元mcu功耗的方法及系统 |
CN104679218A (zh) * | 2015-02-13 | 2015-06-03 | 小米科技有限责任公司 | 控制功耗的方法和装置 |
CN105807892A (zh) * | 2016-03-10 | 2016-07-27 | 浙江大学 | 一种嵌入式实时操作系统的低功耗模式切换方法 |
CN107728466A (zh) * | 2017-09-28 | 2018-02-23 | 华侨大学 | 一种适用于数控系统固定优先级可靠性感知能耗优化方法 |
CN109976501A (zh) * | 2017-12-28 | 2019-07-05 | 中移物联网有限公司 | 一种低功耗控制方法、装置、系统及存储介质 |
Non-Patent Citations (2)
Title |
---|
freeRTOS 低功耗模式 和 空闲任务;为民除害;《https://www.cnblogs.com/WMCH/articles/7891399.html》;20171124;1-7 * |
FreeRTOS高级篇11---空闲任务分析;朱工的专栏;《https://blog.csdn.net/zhzht19861011/article/details/52061032/》;20160729;1-11 * |
Also Published As
Publication number | Publication date |
---|---|
CN111679730A (zh) | 2020-09-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106358273B (zh) | 一种低功耗通信装置 | |
CN105373207B (zh) | 一种无线通信终端的待机方法 | |
US20100169683A1 (en) | Platform and processor power management | |
CN112530056B (zh) | 降低智能门锁功耗的方法、智能门锁和存储介质 | |
JP5773288B2 (ja) | ハイスピードインターチップhsicインタフェースに基づくウェイクアップ方法、ホットスワップ方法、およびデバイス | |
CN207937961U (zh) | 远程信息处理器的休眠唤醒系统 | |
CN105353864A (zh) | 电子设备静态功耗管理方法和系统 | |
US7062303B2 (en) | Synchronizing power conservation modes | |
KR20150112660A (ko) | 시스템 온 칩, 이의 작동 방법, 및 이를 포함하는 장치 | |
CN101360290A (zh) | 实现终端定时开机的方法及终端 | |
CN111679730B (zh) | 基于FreeRTOS的处理器状态控制方法和装置 | |
CN106598193B (zh) | 一种功耗控制方法及装置 | |
CN105101371B (zh) | 一种手机省电管理方法 | |
US20150261290A1 (en) | Systems and Methods for Messaging-based Fine Granularity System-on-a-Chip Power Gating | |
CN111857841A (zh) | 一种主控芯片的唤醒方法、存储介质及智能终端 | |
JP2000506649A (ja) | 電源制御装置を用いる、電力を管理するための方法および装置 | |
CN108804150B (zh) | 终端待机过程处理方法及终端 | |
CN110928586A (zh) | App后台保活方法及装置 | |
CN116627516A (zh) | 车载系统的快速启动方法、装置、电子设备和存储介质 | |
CN116647812A (zh) | 无源物联网通信装置、方法、设备及存储介质 | |
CN112114651B (zh) | 处理器簇的节电方法及装置、芯片、设备、存储介质 | |
CN113939001B (zh) | 一种mcu和ble芯片间超低功耗通信方法 | |
CN116302402A (zh) | 嵌入式系统任务处理方法及装置 | |
CN113253644B (zh) | 设备工作模式的切换方法、微控制装置及船舶定位系统 | |
CN114265678A (zh) | 基于ThreadX的提升车载终端系统稳定性的方法 |
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 |