0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在RTOS中处理微控制器的低功耗特性

GReq_mcu168 来源:一起学嵌入式 作者:一起学嵌入式 2022-04-19 15:15 次阅读

前言

目前, 越来越多的嵌入式产品在开发中使用RTOS作为软件平台, 同时,开发中对低功耗的要求也越来越高, 本文会讨论一下如何在 RTOS 中处理微控制器的低功耗特性。

应用中使用的RTOS一般采用基于时间片轮转的抢占式任务调度机制,一般的低功耗设计思路如下:

  • Idle任务运行时,进入低功耗模式;

  • 在适当的条件下,通过中断或者外部事件唤醒MCU

但是, 从第二点可以看出,每次当OS系统定时器产生中断时,也会将MCU从低功耗模式中唤醒,而频繁的进入低功耗模式/从低功耗模式中唤醒会使得MCU无法进入深度睡眠,对低功耗设计而言也是不合理的。

FreeRTOS中给出了一种低功耗设计模式 ——Tickless Idle Mode, 这个方法可以让MCU更长的时间处于低功耗模式。

Tickless Idle Mode 的原理及实现

情景分析

21292994-bf90-11ec-9e50-dac502259ad0.png

上图是任务调度示意图,横轴是时间轴,T1T2T3T4RTOS的时间片基准,有四个任务分别是TaskATaskBTaskCTaskD

  • Task A,周期性任务

  • Task B, 周期性任务

  • Task C,突发性任务

  • Task D,周期性任务

从图中可以看出在四个任务进行调度之间,会有四次空闲期间(此时RTOS会调度Idle任务运行, 软件设计的目标应该是尽可能使MCUIdle任务运行时处于低功耗模式)。

1.Idle1

Idle任务运行期间,会产生一次系统时钟滴答,此时会唤醒MCU,唤醒后MCU又会进入低功耗模式, 这次唤醒是无意义的。期望使MCUIdle1期间一直处于低功耗模式, 因此适当调整系统定时器中断使得T1时不触发系统时钟中断, 中断触发点设置为Task B到来时。

2. Idle2

Task C在系统滴答到达前唤醒MCU(外部事件),MCU可以在Idle2中可以一直处于低功耗模式;

3.Idle3

Idle2情况相同,但Idle3时间很短,如果这个时间很短,那么进入低功耗模式的意义并不大,因此在进入低功耗模式时软件应该添加策略;

4. Idle4

Idle1情况相同。

Tickless Idle Mode 的软件设计原理

Tickless Idle Mode的设计思想在于尽可能地在MCU空闲时使其进入低功耗模式。从上述情景中可以看出软件设计需要解决的问题有:

  • 合理地进入低功耗模式(避免频繁使MCU在低功耗模式和运行模式下进行不必要的切换);RTOS的系统时钟源于硬件的某个周期性定时器(Cortex-M系列内核多数采用SysTick),RTOS的任务调度器可以预期到下一个周期性任务(或者定时器任务) 的触发时间,如上文所述,调整系统时钟定时器中断触发时间,可以避免RTOS进入不必要的时间中断,从而更长的时间停留在低功耗模式中,此时 RTOS 的时钟不再是周期的而是动态的(在原有的时钟基准时将不再产生中断,即Tickless)。

  • MCU被唤醒时,通过某种方式为系统时钟提供补偿。MCU可能被两种情况所唤醒,动态调整过的系统时钟中断或者突发性的外部事件,无论是哪一种情况,都可以通过运行在低功耗模式下的某种定时器来计算出MCU处于低功耗模式下的时间,在MCU唤醒后对系统时间进行软件补偿;

  • 软件实现时,要根据具体的应用情景和MCU低功耗特性来处理问题。尤其是MCU的低功耗特性,不同MCU处于不同的低功耗模式下所能使用的外设(主要是定时器) 是不同的,RTOS的系统时钟可以进行适当的调整。

Tickless Idle Mode 的实现

这里以STM32F407系列的MCU为例, 首先需要明确的是MCU的低功耗模式,F407有 3 种低功耗模式:SleepStop,Standby, 在RTOS平台时,SRAM寄存器的数据不应丢失, 此外需要一个定时器为RTOS提供系统时钟, 这里选择Sleep模式下进行实现。

213a0516-bf90-11ec-9e50-dac502259ad0.png

1. 使能

#defineconfigUSE_TICKLESS_IDLE1

2. 空闲任务(RTOS 空闲时自动调用)


		

215039a8-bf90-11ec-9e50-dac502259ad0.png

3. 低功耗模式处理(根据 MCU 的低功耗模式编写代码, 代码有点长……)


		

216d7e50-bf90-11ec-9e50-dac502259ad0.png

最后

STM32家族中拥有不同的系列,特别是专为低功耗应用设计的 L 系列,为其设计RTOS低功耗特性实现时可以有更多的实现方式(例,某种模式下内核停止运行, 此时可以使用外部定时器或者RTC来代替Systick作为系统定时器)。

原文标题:实时系统低功耗原理及实现,非常实用的方案

文章出处:【微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    7672

    浏览量

    152307
  • 嵌入式
    +关注

    关注

    5096

    文章

    19216

    浏览量

    308521
  • RTOS
    +关注

    关注

    22

    文章

    821

    浏览量

    119963

原文标题:实时系统低功耗原理及实现,非常实用的方案

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    相关推荐

    RTOS低功耗设计原理及实现_TicklessMode(FreeRTOS的实现)

    目前, 越来越多的嵌入式产品在开发中使用 RTOS 作为软件平台, 同时,开发低功耗的要求也越来越高, 这篇文档会讨论一下如何在 RTOS
    发表于 11-10 09:54

    FreeRTOS源码详解与应用开发全部资料技术分享

    何在 RTOS 处理微控制器低功耗特性。应用中
    发表于 10-25 18:49

    基于微控制器的选择解读超低功耗意义

    划归超低功耗类涉及到复杂的特性组合,包括架构、SoC设计、工艺技术、智能外设和深度睡眠模式。本文将考察ADI公司的两款微控制器,以帮助大家了解如何在此背景下解读超
    发表于 07-22 08:29

    选择低功耗微控制器开发,避免资源受限规则

    介绍如何为物联网选择低功耗微控制器,以及如何寻找与板载外设有关的信息。 它还将展示如何使用电源监控工具,并提供最佳功耗和性能的提示和技巧。选择低功耗
    发表于 12-27 09:38

    微控制器功耗管理模式:降低功耗的方式

    处理技术的微控制器在休眠模式下消耗的电流可低于 50 nA。为了适用于各种低功耗设计,微控制器必须能在广泛的电源范围下运作。例如,在使用碱性电池时,通常指定 1.8 V 的工作电压,因
    发表于 02-06 07:00

    何在微控制器上使用RTOS

    你好,我正在学习如何在微控制器上使用RTOS,所以我决定在Freertos演示尝试一个看起来简单的PIC18F例子。该项目是在MPLAB
    发表于 03-05 09:48

    低功耗模式下微控制器时钟配置应用

    微控制器低功耗应用,对时钟的设置是很重要的一个方面。不同类型的微控制器低功耗模式下对时钟的配置也各有不同。飞思卡尔公司推出的增强型8
    发表于 04-22 17:03 18次下载

    优化面向超低功耗设计的微控制器功效

    优化面向超低功耗设计的微控制器功效 不论是消费、工业还是医疗应用,功耗优化一般都是通过缩短有效处理时间以及延长处理器睡眠模式时间来实现的。
    发表于 01-06 11:40 1004次阅读

    什么是低功耗微控制器

    每个微控制器厂商都声称拥有低功耗设备。几个声称拥有“最低功率”的设备。他们不可能都是对的,不是吗?但是,不同的微控制器在不同的应用场合会表现出不同的功耗
    发表于 07-24 14:33 10次下载

    基于LPC1100微控制器低功耗特性

    基于LPC1100微控制器低功耗特性
    发表于 09-26 09:24 9次下载
    基于LPC1100<b class='flag-5'>微控制器</b>的<b class='flag-5'>低功耗</b><b class='flag-5'>特性</b>

    低功耗微控制器MSP430的应用

    低功耗微控制器MSP430的应用
    发表于 10-12 09:57 5次下载
    <b class='flag-5'>低功耗</b><b class='flag-5'>微控制器</b>MSP430的应用

    介绍SAM4L微控制器低功耗特性是什么?

    Atmel小贴士 SAM4L微控制器低功耗特性
    的头像 发表于 07-06 04:16 3828次阅读

    RTOS低功耗设计原理的讲解和实现概述

    目前,越来越多的嵌入式产品在开发中使用RTOS作为软件平台,同时,开发低功耗的要求也越来越高,这篇文档会讨论一下如何在RTOS
    发表于 04-15 17:00 22次下载
    <b class='flag-5'>RTOS</b><b class='flag-5'>低功耗</b>设计原理的讲解和实现概述

    ADuCM4050超低功耗微控制器

    ADuCM4050超低功耗微控制器
    发表于 05-13 13:36 4次下载
    ADuCM4050超<b class='flag-5'>低功耗</b><b class='flag-5'>微控制器</b>

    RL78微控制器时实现低功耗的应用示例

    本白皮书介绍了在使用 RL78 微控制器时实现低功耗的应用示例。本文简要概述了微控制器低功耗特性,并附有一些典型应用示例,这些示例将特别关
    的头像 发表于 07-23 17:36 1373次阅读
    RL78<b class='flag-5'>微控制器</b>时实现<b class='flag-5'>低功耗</b>的应用示例