【freeRTOS】操作系统之六-低功耗模式
创始人
2024-01-29 22:46:14
0

六,低功耗模式

本章节为大家讲解 FreeRTOS 本身支持的低功耗模式 tickless 实现方法,tickless 低功耗机制是当前小型 RTOS 所采用的通用低功耗方法,比如 embOS,RTX 和 uCOS-III(类似方法)都有这种机制。tickless 低功耗模式介绍
tickless 低功耗机制是当前小型 RTOS 所采用的通用低功耗方法,比如 embOS,RTX和 uCOS-III (类似方法)都有这种机制。
FreeRTOS 的低功耗也是采用的这种方式,那么 tickless 又是怎样一种模式呢?仅从字母上看 tick 是滴答时钟的意思,less 是 tick 的后缀,表示较少的,这里的含义可以表示为无滴答时钟。 整体看这个字母就是表示滴答时钟节拍停止运行的情况。
反映在 FreeRTOS 上,tickless 又是怎样一种情况呢?我们都知道,当用户任务都被挂起或者阻塞时,最低优先级的空闲任务会得到执行。 那么 STM32 支持的睡眠模式,停机模式就可以放在空闲任务里面实
现。 为了实现低功耗最优设计,我们还不能直接把睡眠或者停机模式直接放在空闲任务就可以了。 进入空闲任务后,首先要计算可以执行低功耗的最大时间,也就是求出下一个要执行的高优先级任务还剩多少时
间。 然后就是把低功耗的唤醒时间设置为这个求出的时间,到时间后系统会从低功耗模式被唤醒,继续执行多任务。这个就是所谓的 tickless 模式。 从上面的讲解中可以看出,实现 tickless 模式最麻烦是低功耗可以执行的时间如何获取。 关于这个问题,FreeRTOS 已经为我们做好了。

FreeRTOS 的低功耗模式介绍
对于 Cortex-M3 和 M4 内核来说,FreeRTOS 已经提供了 tickless 低功耗代码的实现,通过调用指令 WFI 实现睡眠模式,具体代码的实现就在 port.c 文件中,用户只需在 FreeRTOSConfig.h 文件中配置宏定义 configUSE_TICKLESS_IDLE 为 1 即可。 如果配置此参数为 2,那么用户可以自定义 tickless 低功耗模式的实现。 当用户将宏定义 configUSE_TICKLESS_IDLE 配置为 1 且系统运行满足以下两个条件时,系统内核会自动的调用低功耗宏定义函数 portSUPPRESS_TICKS_AND_SLEEP():
-------------------------------
 当前空闲任务正在运行,所有其它的任务处在挂起状态或者阻塞状态。
 根据用户配置 configEXPECTED_IDLE_TIME_BEFORE_SLEEP 的大小,只有当系统可运行于低功耗模式的时钟节拍数大于等于这个参数时,系统才可以进入到低功耗模式。 此参数默认已经在 FreeRTOS.h文件进行定义了,下面是具体的定义内容,当然,用户也可以在 FreeRTOSConfig.h 文件中重新定义:
img

默认定义的大小是 2 个系统时钟节拍,且用户自定义的话,不可以小于 2 个系统时钟节拍。
---------------------------------
函数 portSUPPRESS_TICKS_AND_SLEEP 是 FreeRTOS 实现 tickles 模式的关键,此函数被空闲任务调用,其定义是在 portmacro.h 文件中:

img

FreeRTOS 在线电子手册低功耗的说明 http://www.freertos.org/low-power-tickless-rtos.html。FreeRTOS 的低功耗模式配置
关于 FreeRTOS 低功耗方面的配置主要涉及到以下几个问题。

  1. 滴答定时器频率与系统主频的关系

    对于Cortex-M3 和 M4 内核的微控制器来说,实时操作系统一般都是采用滴答定时器做系统时钟,FreeRTOS 也不例外。 SysTick 滴答定时器是一个 24bit 的递减计数器,有两种时钟源可选择,一个是系统主频,另一个是系统主频的八分频,默认的 port.c 移植文件中是用的系统主频。 这里我们就根据这两种时钟源来说一说配置上的不同。
    SysTick 滴答定时器时钟源选择系统主频
    如果滴答定时器选择系统主频的话,那么需要配置 configSYSTICK_CLOCK_HZ 等于
    configCPU_CLOCK_HZ,这种关系已经在 port.c 文件中进行默认配置了:img

    其中系统主频 configCPU_CLOCK_HZ 是在 FreeRTOSConfig.h 文件中进行定义的。
    SysTick 滴答定时器时钟源选择系统主频的八分频 这种情况的话,需要用户在 FreeRTOSConfig.h 文件中专门配置 configSYSTICK_CLOCK_HZ 为实际的频率,即系统主频的八分频大小。

  2. 系统时钟节拍不使用滴答定时器
    这种情况我们这里不做讨论,用户看 FreeRTOS 官网此处的说明即可:
    http://www.freertos.org/low-power-ARM-cortex-rtos.html

  3. 如何使用微控制器其它低功耗模式
    前面我们说了,对 Cortex-M3 和 M4 内核来说,FreeRTOS 自带的低功耗模式是通过指令 WFI 让系统进入睡眠模式,如果想让系统进入停机模式,又该怎么修改呢?FreeRTOS 为我们提供了两个函数:
    configPRE_SLEEP_PROCESSING( xExpectedIdleTime )
    configPOST_SLEEP_PROCESSING( xExpectedIdleTime )
    这两个函数的定义是在 FreeRTOS.h 文件中定义的,什么都没有执行:
    img

    如果需要实际执行代码需要用户在 FreeRTOSConfig.h 文件中重新进行宏定义,将其映射到一个实际的函数中。 另外,这两个函数是在 port.C 文件中被函数 vPortSuppressTicksAndSleep 调用,具体位置如下:
    img

    img

    这两个函数位于指令 wfi 的前面和后面,用户想实现其它低功耗方式的关键就在这两个函数里面:
     configPRE_SLEEP_PROCESSING( xExpectedIdleTime )
    执行低功耗模式前,用户可以在这个函数里面关闭外设时钟来进一步降低系统功耗。 设置其它低功耗方式也是在这个函数里面,用户只需设置参数 xExpectedIdleTime=0 即可屏蔽掉默认的 wfi 指令执行方式,因为退出这个函数后会通过 if 语句检测此参数是否大于 0,即上面的代码所示。 因此,如果 用 户 想 实 现 其 它 低 功 耗 模 式 还 是 比 较 方 便 的 , 配 置 好 其 它 低 功 耗 模 式 后 , 设 置 参 数
    xExpectedIdleTime = 0 即可,但切不可将此参数随意设置为 0 以外的其它数值。
     configPOST_SLEEP_PROCESSING ( xExpectedIdleTime )
    退出低功耗模式后,此函数会得到调用,之前在 configPRE_SLEEP_PROCESSING 里面关闭的外设时 钟,可以在此函数里面重新打开,让系统恢复到正常运行状态。

  4. FreeRTOS 实现 tickless 模式的框架
    对 Cortex-M3 和 M4 内核的微控制器来说,FreeRTOS 已经提供了 tickless 低功耗模式的代码,对于没有支持的微控制器,用户可以在 FreeRTOSConfig.h 文件中配置 portSUPPRESS_TICKS_AND_SLEEP宏定义,来映射实际执行函数。如果用户不想使用 FreeRTOS 提供的的 tickless 也可以自定义,方法也是在 FreeRTOSConfig.h 文件
    中配置 portSUPPRESS_TICKS_AND_SLEEP 宏定义,来映射实际执行函数。
    下面是 FreeRTOS 实现低功耗 tickless 模式的代码框架,方便用户对 tickles 模式有一个认识,同时也方便 FreeRTOS 没有支持的微控制器,用户可以参考实现。 当然,不局限于这种方法,用户有更好的方法,也可以的。 其中函数 vTaskStepTick 和 eTaskConfirmSleepModeStatus 是 FreeRTOS 提供的,其余的函数是需要用户实现的。

传送门:
【freeRTOS】操作系统之一-任务调度
【freeRTOS】操作系统之二-队列
【freeRTOS】操作系统之三-信号量
【freeRTOS】操作系统之四-事件标志组
【freeRTOS】操作系统之五.-内存管理
【freeRTOS】操作系统之六-低功耗模式
【freeRTOS】操作系统之七-freeRtos移植

相关内容

热门资讯

上海小本自主创业持久项目 上海... 虽然今年的疫情人很多人受到了影响,有人看到了市场经济受影响,有人看到了商机。创业大军每年都有很多,虽...
马云说私人定制是最长久的 而它... 手机微信制作平台照片书照片书就是把您手机里的照片,比如,宝宝的照片,爱人的、家人的、朋友的照片,婚纱...
强烈推荐:2019年适合白手起... 世界上大多数胜利的事例,都是从小做起的,创业也不是一开端就有大资本做后台,小本创业是迈向创业疆场的第...
适合小本创业的项目 穷人告别打... 人不能以挣钱为目的,但是又有谁不是在为挣钱而做着不同的努力呢。上班族整天辛苦的加班,但是工资报酬并不...
五种适合小本创业的项目 五种适... 说起创业,我们应该从小本生意做起,我们看看有哪些最新适合小本创业的项目,让我们一起来看一看,希望每个...
适合小本创业的五个好项目 最适... 二胎政策开放很久了,儿童行业是具有潜力的市场,现在的家长都很疼爱自己的孩子,很注重孩子的早期教育培训...
小本投资创业项目有哪些 *新小... 餐饮粥火锅加盟重庆串串中式快餐品牌小型餐饮加盟小吃加盟铁锅焖面加盟中式快餐店十大咖啡品牌品牌快餐老火...
小本创业投资项目2011年 小... 刚开始投资的时候可以试试小本投资,投资金额的大小决定了很多创业项目风险性,投资潜力,今天先为大家分享...
2011年在河北省小本创业投资... 从目前的创业项目看来,女性创业的项目:服装,小吃餐饮,化妆品等,偏门项目。1、想开服装店,如果是初次...
99年版100元值多少钱 99... 杨静国际项目融资经理,既有项目法人融资“往年高交会的主题‘坚持新开展理念、推进高质量开展’,以及以后...