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

    文章

    6740

    浏览量

    147390
  • 嵌入式
    +关注

    关注

    4963

    文章

    18161

    浏览量

    286543
  • RTOS
    +关注

    关注

    20

    文章

    765

    浏览量

    118678

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

文章出处:【微信号: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

    低功耗微控制器单元(MCU)主要有哪些应用?

    低功耗微控制器单元(MCU)采用了哪些关键技术?超低功耗微控制器单元(MCU)具备哪些功能?超低功耗
    发表于 06-17 10:11

    微控制器MCU是什么

    在开发嵌入式系统时,其中一个选择是将计算硬件基于微控制器,而不是微处理器MPU。这两种方法都有其吸引力,但通常它们将在不同的应用中找到。通常,微控制器MCU可用于大小,低功耗和低成本是
    发表于 11-03 06:45

    如何让微控制器进入睡眠状态并看看到底能够节省多少能耗

    我们探讨过在每种Arm Cortex-M处理器上可以找到的低功耗模式的基本原理,以及如何使用WFI和WFE指令让处理器进入睡眠模式。实际上我们真正要了解的是,低功耗模式如
    发表于 11-04 07:39

    什么是微控制器MCU

    在开发嵌入式系统时,其中一个选择是将计算硬件基于微控制器,而不是微处理器MPU。这两种方法都有其吸引力,但通常它们将在不同的应用中找到。通常,微控制器MCU可用于大小,低功耗和低成本是
    发表于 10-29 10:56

    什么是低功耗微控制器

    每个微控制器厂商都声称拥有低功耗设备。几个声称拥有“最低功率”的设备。他们不可能都是对的,不是吗?但是,不同的微控制器在不同的应用场合会表现出不同的功耗
    发表于 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>

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

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

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

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

    RTOS低功耗设计原理及实现

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