功耗相关总结
文章目录
- 功耗相关的使用场景
- 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实现低功耗可运用如下的原理(滴答定时器作了处理,不然会一直唤醒内核),红色部分是任务处理时长,灰色部分是低功耗休眠时长,绿色部分是进入低功耗的处理时长:
相关文章:

功耗相关总结
文章目录 功耗相关的使用场景MCU中低功耗的应用RTOS中低功耗应用 功耗相关的使用场景 目前越来越多的嵌入式设备采用电池进行供电,而不是跟台式电脑一样,可以一直连接着电源。在电池供电的场景下,对功耗的要求很高,工程师们尽量希…...

17款奔驰GLS450升级头等舱行政独立四座马鞍是什么样体验
五座版本:迈巴赫GLS480的五座版本通常指的是具有五个座位的配置,包括两个前排座椅和三个后排座椅。这种配置适合搭载更多乘客,后排座椅通常为三人座设计,乘坐人数较多。 四座版本:迈巴赫GLS480的四座版本通常指的是具…...

浏览器的下载行为基本原理
浏览器解析 在使用浏览器访问某些资源时,有些资源是直接下载有些资源是直接打开。例如前端的html,xml,css,图片等资源都是直接打开,而txt,excel等文件是直接下载。那么如何控制访问一个资源时是下载文件还…...

浅谈微服务的自动化部署
一、常用部署工具 jenkins,docker生态是比较常用的工具,本文也主要是聊这几个。其他如Kubernetes (K8s),Ansible,GitLab CI/CD等工具本文只是暂时提一下,不展开讨论。 二、比较jenkins和docker生态 1、jenkins 优点 jenkins功…...

【C语言】8.C语言操作符详解(1)
文章目录 1.操作符的分类2.⼆进制和进制转换3.原码、反码、补码4.移位操作符4.1 左移操作符4.2 右移操作符 5.位操作符:&、|、^、~5.1 &:按位与5.2 |:按位或5.3 ^:按位异或5.4 ~:按位取反5.5 例题例题1例题2例…...

Buzz库网络爬虫实例:快速爬取百度搜索实时热点
前言 随着互联网的发展,信息获取已经成为了人们日常生活和工作中的重要一环。而在信息获取的过程中,网络爬虫作为一种自动化的数据采集工具,为我们提供了极大的便利。本文将介绍如何利用PHP编写一个简单而高效的网络爬虫,实现快速…...

SQL注入:pikachu靶场中的SQL注入通关
目录 1、数字型注入(post) 2、字符型注入(get) 3、搜索型注入 4、XX型注入 5、"insert/update"注入 Insert: update: 6、"delete"注入 7、"http header"注入 8、盲…...

springsecurity入门登录授权
①我们需要自定义登陆接口,也就是在controller目录新建LoginController类,在controller方法里面去调用service接口,在service接口实现AuthenticationManager去进行用户的认证,注意,我们定义的controller方法要让Spring…...

医学科技查新中对查新点的撰写方法!附案例讲解!
我国的科技查新工作最早是从医学领域开始的,始于1985年中国科学院医学情报所,后来逐步发展到工、农等其 他各个领域。医学科技查新包括立项查新和成果查新两个部分,其中医学立项查新,它是指在医学科研项目申报开题之前,…...

2024最新流媒体在线音乐系统网站源码| 音乐社区 | 多语言 | 开心版
2024最新流媒体在线音乐系统网站源码| 音乐社区 | 多语言 | 开心版 https://download.csdn.net/download/huayula/89347742...

回溯算法05(leetcode491/46/47)
参考资料: https://programmercarl.com/0491.%E9%80%92%E5%A2%9E%E5%AD%90%E5%BA%8F%E5%88%97.html 491. 非递减子序列 题目描述: 给你一个整数数组 nums ,找出并返回所有该数组中不同的递增子序列,递增子序列中 至少有两个元素…...

Transformer,革命性的深度学习架构
Transformer 是一种革命性的深度学习架构,专门设计用于处理序列数据,特别是在自然语言处理(NLP)任务中表现卓越。它由 Vaswani 等人在 2017 年发表的论文《Attention is All You Need》中首次提出,打破了当时基于循环神经网络(RNN)和卷积神经网络(CNN)的序列建模常规,…...

实验五:实现循环双链表各种基本运算的算法
实验五:实现循环双链表各种基本运算的算法 一、实验目的与要求 目的:领会循环双链表存储结构和掌握循环双链表中各种基本运算算法设计。 内容:编写一个程序cdinklist.cpp,实现循环双链表的各种基本运算和整体建表算法(假设循环双链表的元素类型ElemType为char),并…...

ElasticSearch IK分词器的安装、词典扩展与停用
🏷️个人主页:牵着猫散步的鼠鼠 🏷️系列专栏:云原生与服务部署-专栏 🏷️个人学习笔记,若有缺误,欢迎评论区指正 目录 编辑 1. 前言 2. IK分词器安装 3. IK分词器词典扩展与停用 4. 总…...

代码随想录训练营总结
为期两个月的代码随想录训练营今天结束了,我想我的收获是非常大的。进到训练营的大群里,令我有种安心的感觉,原来世界各地有这么多与我一起努力的伙伴。更令人安心的是知识星球对于学习进度的规划,细化到每一天每道题,…...

深度学习-转置卷积
转置卷积 转置卷积(Transposed Convolution),也被称为反卷积(Deconvolution),是深度学习中的一种操作,特别是在卷积神经网络(CNN)中。它可以将一个低维度的特征图&#x…...

Unity性能优化工具介绍
文章目录 一.Stats组件1.Audio音频的数据组件:2.图形数据 二.Profiler 性能分析器 一.Stats组件 Unity自带Statistics(统计数据),Game视窗中点击Stats打开 1.Audio音频的数据组件: 1):Level 声音强度 单位是分贝(dB) 表示音频听声音的大小,是闪烁波动的. 2):SDPload 数据信…...

Math之向上向下取整
有时我们会遇到向上和向下取整的操作,这时我们可以使用Math类来进行操作。 1、向上取整 Math.ceil() 方法返回大于或等于指定表达式的最小整数(即向上取整)。如果参数是一个整数,那么结果就是这个整数本身。 示例: …...

MPP架构
MPP架构,即Massively Parallel Processing(大规模并行处理)架构,是一种用于处理大规模数据的并行计算架构。它通过将数据和计算能力分布在多个处理节点上,利用并行处理技术来加速数据处理和分析的速度。 在MPP架构中&…...

These relative modules were not found:* ../../../constant in
这个错误信息表明,你的项目在尝试加载一个相对路径模块 ../../../constant 时遇到了问题。具体来说,它在 ./node_modules/cache-loader/dist/cj 这个路径下找不到这个模块。 这里有几个可能的原因和相应的解决方案: 路径错误:首…...

2024最新彩虹聚合DNS管理系统源码v1.3 全开源
2024最新彩虹聚合DNS管理系统源码v1.3 全开源 聚合DNS管理系统可以实现在一个网站内管理多个平台的域名解析,目前已支持的域名平台有:阿里云、腾讯云、华为云、西部数码、DNSLA、CloudFlare。 本系统支持多用户,每个用户可分配不同的域名解…...

在Go语言中如何实现变参函数和函数选项模式
在Go语言编程中,我们经常会遇到需要给函数传递可选参数的情况。传统的做法是定义一个结构体,将所有可选参数作为结构体字段,然后在调用函数时创建该结构体的实例并传递。这种方式虽然可行,但是当可选参数较多时,创建结构体实例的代码就会变得冗长และ不太直观。 Go语言的一个…...

Spring Boot中的 6 种API请求参数读取方式
使用Spring Boot开发API的时候,读取请求参数是服务端编码中最基本的一项操作,Spring Boot中也提供了多种机制来满足不同的API设计要求。 接下来,就通过本文,为大家总结6种常用的请求参数读取方式。如果你发现自己知道的不到6种&a…...

Linux基础命令[27]-gpasswd
文章目录 1. gpasswd 命令说明2. gpasswd 命令语法3. gpasswd 命令示例3.1 不加参数3.2 -a(将用户加入组)3.3 -d(从组中删除用户)3.4 -r(删除组密码)3.5 -M(多个用户一起加入组)3.6 …...

机会约束转化为确定性约束-- 样本均值法
当涉及到新能源消纳的机会约束规划时,我们需要深入理解其背后的原理和采用的方法。以下是对上文内容的更详细且更贴切的展开解释: 机会约束转化为确定性约束-- 样本均值法代码获取戳此处代码获取戳此处代码获取戳此处 新能源消纳的机会约束 新能源&…...

uniapp中,当页面显示时触发子组件的重新渲染
使用watch监听数据变化: 在子组件中使用watch来监听父组件传递的数据,一旦数据发生变化,子组件就会重新渲染。 子组件代码示例: <template><div>{{ message }}</div> </template><script> export d…...

先进制造aps专题五 aps软件的排程算法和优化算法介绍
aps软件的核心,主要是数据管理,排程/优化算法,各类甘特图 所有aps软件排程算法都是Heuristics启发式算法(如Greedy算法),只是有的aps软件还支持ga遗传算法优化(比如sap apo,oracle aps,isuperap…...

【跳坑日记】暴力解决Ubuntu SSH报错: Failed to start OpenBSD Secure Shell server
报错环境说明: 服务器环境:Ubuntu 20.04 错误内容 最近服务器突然报错,提示如下图信息: 搜素了各种问答,国内的回答大多数是用 ssh-keygen -A命令来解决,但最终也无法登录服务器。 最终搜索到ask ubun…...

从需求角度介绍PasteSpider(K8S平替部署工具适合于任何开发语言)
你是否被K8S的强大而吸引,我相信一部分人是被那复杂的配置和各种专业知识而劝退,应该还有一部分人是因为K8S太吃资源而放手! 这里介绍一款平替工具PasteSpider,PasteSpider是一款使用c#编写的linux容器部署工具(使用PasteSpider和…...

线性三角化
点的线性三角化 输入一堆的点 [ R w c , t w c , p u c ] [R_{wc},t_{wc},p_{uc}] [Rwc,twc,puc]转化成空间的一系列射线 [ P w i , t w i ] , P w i t w c , t w i R w c p u c [P_{wi},t_{wi}],P_{wi}t_{wc},t_{wi}R_{wc}\times p_{uc} [Pwi,twi],Pwitwc…...