功耗相关总结

文章目录

  • 功耗相关的使用场景
  • MCU中低功耗的应用
  • RTOS中低功耗应用

功耗相关的使用场景

目前越来越多的嵌入式设备采用电池进行供电,而不是跟台式电脑一样,可以一直连接着电源。在电池供电的场景下,对功耗的要求很高,工程师们尽量希望自己的设备充完一次点后可以使用更久。

本文从两个角度去看待如何实现低功耗。一种方法是MCU厂商提供的低功耗模式,在工程端,我们一般按照MCU厂商提供的方法使得MCU进入低功耗模式。另外一种方法是RTOS中的低功耗实现方法,因为RTOS是采用轮转调度的,可以在此基础上做相关处理,可以使设备使用的功耗更低。

MCU中低功耗的应用

以Cortex-M3内核为例,

通过查找CM3内核指南,可以看到这种内核提供了两种低功耗策略,如下图所示:
在这里插入图片描述

其实也很好理解,

  • 睡眠模式(Sleep Mode):
    在睡眠模式下,CPU停止执行指令,但所有的时钟信号(包括系统时钟和外设时钟)仍然保持活动状态。这意味着外设(如定时器、通信接口等)仍然可以工作,并且可以通过外设事件(如定时器溢出、串口数据到达等)来唤醒CPU。

  • 深度睡眠模式(Deep Sleep Mode):
    深度睡眠模式比睡眠模式更进一步降低功耗。在这个模式下,除了CPU停止执行指令外,大部分或全部的系统时钟和外设时钟也会被禁用。这意味着大多数外设也会停止工作。只有少数特定的唤醒源(如外部中断或者某些具有独立时钟的外设)才能唤醒处理器。

写一个表格对比一下:

特性睡眠模式深度睡眠模式
CPU停止执行指令停止执行指令
系统时钟保持活动大多数情况下禁用
外设时钟保持活动大多数情况下禁用
外设功能保持工作大多数情况下停止
唤醒事件外设事件限定的唤醒源
功耗更低

这是ARM内核层面提供的低功耗模式,但是在实际上厂商还可以客制化,这里举个例子,以STM32F1系列为例:
从STM32F1的参考手册可以见到:
在这里插入图片描述

其有三种模式,为啥三种呢,因为他扩展了CM3内核的深度睡眠模式,外加一个SRAM作为后备存储区,该区电力供应在进入深度睡眠模式的时候,可以选择被切断与保留,如果保留了,则可以当前的处理器状态备份到这个SRAM。(备份原理参考:https://blog.csdn.net/weixin_47702410/article/details/119751040)

总结一下,STM32F1的这三种模式与Cortex-M3内核的两种模式的关联如下:

  • 睡眠模式直接对应于Cortex-M3的睡眠模式。
  • 停止模式和待机模式可以看作是在Cortex-M3的深度睡眠模式的基础上,由STM32F1系列微控制器特有的扩展,它们提供了更深层次的功耗管理。

STM32F1的具体的休眠含义可以查找STM32F1的参考手册,如下:
在这里插入图片描述

RTOS中低功耗应用

RTOS在一般的应用中,处理器大量的时间都在处理空闲任务,此时可以考虑让处理器在空闲任务的时候进入低功耗模式。当需要处理应用层代码的时候就将处理器从低功耗模式唤醒。

因此关键在于如何确定CPU此时是空闲的,我们在空闲的时候开启低功耗而需要处理任务的时候,退出低功耗便可。

以FreeRTOS为例,一般会在空闲任务都会进入到钩子函数,则可钩子函数中执行低功耗相关处理。而FreeRTOS的系统时钟是由滴答定时器中断来提供的。

为此,FreeRTOS特地提供了一个解决方法–Tickless模式,当处理器进入空闲任务以后就关闭系统节拍中断(滴答定时器中断),只有当其他中断发生或者其他任务需要处理的时候处理器才会被低功耗模式中唤醒。

关于这方面的具体实现,可以在源码中查看如下宏的实现:

#define configUSE_TICKLESS_IDLE 1 //启用低功耗tickless模式

参考:https://blog.csdn.net/qq_26226375/article/details/125043059

总体来说,RTOS实现低功耗可运用如下的原理(滴答定时器作了处理,不然会一直唤醒内核),红色部分是任务处理时长,灰色部分是低功耗休眠时长,绿色部分是进入低功耗的处理时长:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/13596.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

炫酷gdb

在VS里面调试很方便对吧?(F5直接调试,F10逐过程调试--不进函数,F11逐语句调试--进函数,F9创建断点),那在Linux中怎么调试呢? 我们需要用到一个工具:gdb 我们知道VS中程…

从业务角度来看,DevOps 是什么?

如果您在我们的应用程序名称中看到“DevOps”,这意味着我们必须正确解释该术语,我们会这样做,但角度会有所不同。让我们从业务角度看看 DevOps 是什么。 通用名称 首先你应该知道,DevOps 没有明确的定义。是的。 大多数情况下&a…

安卓实现5个底部导航栏切换fragment

步骤,写 5 个 fragment 自定义的类5个布局文件: package com.xmkjsoft.xhgh.fragment;import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup;import androidx.annotation.NonNul…

win11安装docker运行Open-Webui 界面化展示 ollama大模型

1.OpenWeb UI运行需要docker 环境下载docker Get Started | Docker 2.需要命令提示符docker -v 查询是否安装成功; 查询docker详情docker version 3.github拉取open-webUi镜像Package open-webui GitHub 复制命令运行在命令提示符; 等待下载完成 4.到…

Web安全:企业如何抵御常见的网络攻击?

近年来随着人类社会向数字世界的加速发展,勒索软件攻击事件在全球范围内呈现快速上升的态势,几乎所有国家的政府、金融、教育、医疗、制造、交通、能源等行业均受到影响,可以说有互联网的地方就可能发生勒索软件攻击事件。 Web安全是一个大课…

【全开源】简单商城系统(PC/UniAPP)

轻松构建您的在线商店 在当今数字化时代,拥有一个在线商店对于许多商家来说已成为必不可少的营销手段。为了满足这一需求,我们推出了“简单商城系统源码”,让您轻松构建并管理您的在线商店。 一、简单易用,快速上手 “简单商城…

C++第三方库【JSON】— jsoncpp

目录 认识JSON jsoncpp库 安装&使用 认识jsoncpp Json::Value jsoncpp序列化 jsoncpp反序列化 认识JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据,常用于在客户端和服…

《QT实用小工具·六十五》基于QPropertyAnimation实现的移动动画和控件覆盖

1、概述 源码放在文章末尾 该项目基于QPropertyAnimation实现了控件平移动画和控件之间的相互覆盖效果,项目demo演示如下所示: 项目解析: new QPropertyAnimation(ui.SingleOcclusion, “pos”); //创建动画对象,第一个参数传…

《Python编程从入门到实践》day37

# 昨日知识点回顾 制定规范、创建虚拟环境并激活,正在虚拟环境创建项目、数据库和应用程序 # 今日知识点学习 18.2.4 定义模型Entry # models.py from django.db import models# Create your models here. class Topic(models.Model):"""用户学习的…

时光初创知识付费模板 3.6.4 安装包 附教程

源码地址: https://wwv.lanzouh.com/b080wj8eh

码蹄集部分题目(2024OJ赛15期;前缀和+栈+堆+队列)

1🐋🐋🐋门票(钻石;前缀和) 时间限制:1秒 占用内存:128M 🐟题目描述 🐟输入输出格式 🐟样例 🐚样例 🐚备注 &#x1f4…

docker和containerd的区别

docker和containerd的区别 1、容器运行时 1.1 容器运行时概念 容器运行时(Container Runtime)是一种负责在操作系统层面创建和管理容器的软件工具或组件。它是容器化技术的核心组件之一,用于在容器内部运行应用程序,并提供隔离…

ORACLE 资源管理参数与等待事件resmgr:cpu quantum

RESOURCE_MANAGER_PLAN 先来看下参数的含义 官网链接:RESOURCE_MANAGER_PLAN (oracle.com) 意思翻译过来这个参数用于资源计划。后边的看完也不是很明白具体的作用 于是参考了以下文章 Oracle 参数 RESOURCE_MANAGER_PLAN 官方解释,作用,…

Steam致富:玩免费游戏Banana获得可交易道具

最近,Steam平台上一款普普通通的免费游戏《Banana》引起了轰动,接近2万人同时在线,好评率高达94%,究竟是什么让这款游戏如此受欢迎呢?原来,玩家们都在争相获取稀有的香蕉。 《Banana》属于点击放…

C++初阶学习第十弹——探索STL奥秘(五)——深入讲解vector的迭代器失效问题

vector(上):C初阶学习第八弹——探索STL奥秘(三)——深入刨析vector的使用-CSDN博客 vector(中):C初阶学习第九弹——探索STL奥秘(四)——vector的深层挖掘和…

反序列化漏洞(JBoss、apache log4、apache Shiro、JWT)Weblogic未授权访问、代码执行、任意上传

1.1什么是反序列化 就是把一个对象变成可以传输的字符串,目的就是为了方便传输。假设,我们写了一个class,这个class里面存有一些变量。当这个class被实例化了之后,在使用过程中里面的一些变量值发生了改变。以后在某些时候还会用到…

CentOS-9配置静态IP地址

查看配置命令nmcli CentOS 9 使用 nmcli 命令行工具进行网络配置。以下是配置静态 IP 地址的步骤和示例代码:相对以前centos7之类的,9版本的默认的网络是NetworkManager,网络配置也有较大改变 nmcli con show用vim进行编辑配文件 cd /etc/…

JavaScript基础(九)

冒泡排序 用例子比较好理解: var arry[7,2,6,3,4,1,8]; //拿出第一位数7和后面依次比较,遇到大的8就换位,8再与后面依次比较,没有能和8换位的数,再从下一位2依次与下面的数比较。 console.log(排列之前:arry); for (…

开源大模型与闭源大模型:技术哲学的较量

目录 前言一、 开源大模型的优势1. 社区支持与合作1.1 全球协作网络1.2 快速迭代与创新1.3 共享最佳实践 2. 透明性与可信赖性2.1 审计与验证2.2 减少偏见与错误2.3 安全性提升 3. 低成本与易访问性3.1 降低研发成本3.2 易于定制化3.3 教育资源丰富 4. 促进标准化5. 推动技术进…

自养号测评是什么?亚马逊产品评价的全新策略

1、什么是亚马逊测评: 亚马逊测评,简而言之,是基于亚马逊购物平台的一种特定活动。他的核心在于模拟国外消费者的购物行为,并在完成购买后,对所获得的产品进行真实、中肯的评价。这种测评不仅为消费者提供了购物参考&…