4_Apollo4BlueLite电源管理
1.Cortex-M4 Power Modes
Apollo4BlueLite支持以下4种功耗模式:
▪ High Performance Active (not a differentiated power mode for the Cortex-M4)
▪ Active
▪ Sleep
▪ Deep Sleep
(1)High Performance Mode
高性能模式不是arm定义的标准模式,从arm的角度来看,该模式和arm定义的active模式比较类似。
Apollo4BlueLite定义的High Performance Mode是基于ambiq的turbo SPOT技术,实现了高频率,高性能的工作模式。
在该模式下M4核和内存可以在较高的时钟频率下工作,并且ARM的时钟(FCLK, HCLK)也在较高的时钟频率下工作,使处理器保持高性能并且外设传输速率也保持为高。使用期间所有外设也都保持正常的工作频率。
进入和退出该模式是软件可控的,实际由相应硬件完成。
(2)Active Mode
在Active模式下M4内核保持运行状态,时钟正常,并且指令正在运行。在这个模式下,所有使能的设备都被供电和时钟驱动以进行正常访问。同时,所有非调试Arm时钟(FCLK,HCLK)都是正常运行的。
要从Active模式转换到任何较低功耗模式,需要在M4核心上执行特定的指令序列。首先,必须设置ARMv7-M系统控制寄存器SCR中的特定位来确定要进入的模式。
在设置好系统控制寄存器SCR后,可以使用以下三种方法之一进入低功耗状态:
- 执行等待中断(WFI)指令。
- 执行等待事件(WFE)指令。
- 设置SCR的SLEEPONEXIT位,使得从中断服务例程(ISR)退出后自动返回到睡眠状态。
在执行了其中一种方法(假设满足所有条件)后,M4将进入低功耗模式,并保持在该模式下,直到某个事件导致核心返回到活动模式。返回活动模式的可能原因包括:
- 复位
- NVIC接收到一个启用的中断
- NVIC接收到一个事件
- 从DAP接收到一个调试事件
(3)Sleep Mode
在Sleep模式下M4是上电的状态,但是时钟信号(HCLK、FCLK)被禁止传递给M4核心。换句话说,M4的处理器时钟被断开,因此M4不能执行任何指令。这种门控时钟的设计可以节省功耗,在特定条件下实现低功耗的待机模式。当M4需要唤醒时,时钟将被恢复,处理器开始正常运行。这种设计常用于嵌入式系统中,以提高能效。
(4)Deep Sleep Mode
在Deep Sleep模式下,M4会进入SRPG(Static Real Power Gated)模式,主要供电被切断,但寄存器中的状态数据(flops)仍然保持。此时时钟信号(HCLK、FCLK)是不活动的,SoC(System-on-Chip)中用于HCLK和FCLK的时钟源也可以被停用。
为了方便切断供电并进入SRPG模式,M4会与唤醒中断控制器和电源管理单元进行握手,设置可能的唤醒条件。这意味着M4会与相关模块进行通信,并共同商定在何种情况下可以唤醒M4。这些唤醒条件可以是外部中断信号、定时器到期、外部事件等。一旦满足了设置的唤醒条件,M4将被唤醒并恢复正常的运行状态。这种设计可以降低功耗,延长设备的待机时间,并确保在需要时能够及时唤醒M4以执行任务。
2. sleep模式和deepsleep模式的区别
M4的睡眠模式和深度睡眠模式有以下区别:
(1)能耗水平:睡眠模式和深度睡眠模式在功耗水平上有所不同。在睡眠模式下,M4仍然处于供电状态,尽管时钟被禁止,但一些功耗仍然存在。而在深度睡眠模式下,M4的主要供电被切断,功耗非常低,寄存器中的状态数据被保留。
(2)时钟状态:睡眠模式下,M4的时钟信号被禁止传递给M4核心,时钟处于门控状态。而在深度睡眠模式下,时钟信号是不活动的,SoC中的时钟源可以被停用。
(3)唤醒方式:睡眠模式下,M4可以相对较快地被唤醒,例如通过外部中断或定时器。而在深度睡眠模式下,M4主动与唤醒中断控制器和电源管理单元握手,并通过设置唤醒条件来进行唤醒。
(4)上下文保存:睡眠模式下,M4的上下文(寄存器的状态)被保留,可以快速恢复到睡眠前的状态。而在深度睡眠模式下,M4的上下文数据也被保存,但是主要供电被切断,需要重新初始化一些系统配置。
总的来说,睡眠模式适用于快速唤醒和低功耗要求不高的情况,而深度睡眠模式适用于要求更低功耗、保持状态数据的情况。不同的模式可以根据实际需求来选择以实现最佳的能效和性能平衡。
3. CPU电源管理
Apollo4 Blue Lite SoC上的电源管理是通过硬件和软件的组合处理的。
硬件部分负责处理调节器(regulators)与SoC内部各个电源域之间的接口和控制顺序。调节器是用来调节和稳定供电的电路组件,而电源域是指SoC内部的不同子系统或区域,它们可能有不同的供电要求。
软件部分通过处理器指令和系统级的电源控制命令来启动电源状态的转换。也就是说,软件负责通过指令或命令发出请求,硬件负责实际执行相应的电源转换操作。
整个电源管理系统由一个中央电源管理控制器(Power Management Controller)和各种针对每个主要子系统/域的电源管理单元(Power Management Unit,PMU)组成。其中,一些主要的PMU如下所示:
- CPU-PMU:负责CPU子系统的电源顺序控制。CPU子系统包括处理器核心及其相关组件。
- IO-PMU:负责每个I/O子系统的电源顺序控制。I/O子系统包括输入输出接口和相关外设。
通过这种结构,中央电源管理控制器和各个PMU协同工作,实现对SoC内不同子系统/域的电源管理和控制。这样可以确保各个子系统/域的电源状态得以管理,以实现功耗优化、能效提升和系统稳定性。
3.1 CPU-PMU
从Active Mode(活动模式)进入Deep Sleep Mode(深度睡眠模式)的过程。在这个过程中,CPU-PMU(CPU功耗管理单元)管理Cortex-M4核心中寄存器的状态保持能力,并根据需要控制与电压稳压器的接口,以支持CPU的各种操作模式。进入Deep Sleep Mode后,CPU-PMU与唤醒中断控制器一起等待唤醒事件的发生。当观察到事件时,CPU-PMU通过重新启用芯片上的电压稳压器和恢复CPU寄存器状态开始功耗恢复过程。只有当所有状态准备就绪后,M4才会恢复到活动模式中。
CPU-PMU支持以下Arm Cortex-M4定义的功耗模式:
- OFF(关闭)
- Deep Sleep(深度睡眠)
- Sleep(睡眠)
- Active(活动)
在Active模式下,M4的工作频率可以选择为低功耗/高效能模式下的96 MHz,或者高性能模式下的192 MHz。
3.2 IO-PMU
主要介绍了IO-PMU(输入输出功率管理单元)对I/O子系统的电源状态进行管理的功能。每个I/O子系统都支持以下电源模式。需要注意的是,每个I/O子系统可能有不同的实现方式来定义每个具体的电源状态。这是针对每个I/O控制器的具体实现方式。此外,并非每个IO-PMU都支持所有的电源模式(典型配置可能只支持OFF和Active LP两种)。具体的电源模式包括:
- OFF:设备处于关闭状态;
- Sleep:设备处于启用但没有活跃事务的状态;
- Active:设备处于活跃状态,可以进行数据传输和交互。 需要根据具体的IO-PMU和I/O子系统的实际配置和支持情况来确定使用哪种电源模式。
3.3 Power Management Controller
电源管理控制器为每个供电调节器以及数字逻辑控制下的主要电源门提供控制功能。电源管理控制器(PWRCTL)接收来自所有电源管理单元(PMU)的输入,指示所需的电源电平,并通过软件(通过电源管理控制寄存器)进行控制。还提供了电源管理映射配置(从INFO1复制到PWRCTL),根据输入的电源请求来确定调节器接口的功能操作。该映射配置允许电源管理功能可编程化,可进行特性化、调优和/或错误修复。以下是供电调节器接口:
- SIMO降压器
- 核心低压差稳压器(LDO)
- 存储器低压差稳压器(LDO)
PWRCTL还负责控制所有数字电源域的电源门使能。根据功率水平请求来控制电源门使能。当来自相应请求的PMU请求一个“关闭”电平,或通过软件进行强制关闭请求,或对于I/O请求者,当相应的I/O设备使能被取消时,相应的电源门使能被激活以关闭该域。对于其他功率级别请求,电源门被禁用以上电相应的域。
SRAM和NVM的电源域是基于依赖的请求域来进行控制的。对于NVM,如果所有的CPU PMU请求者都是“关闭”,而DMA请求者是“关闭”或“睡眠”,则NVM电源域将被关闭。对于SRAM,每个SRAM基于SKU存储器配置或者如果所有的CPU PMU请求者都是“关闭”,而DMA请求者是“关闭”或“睡眠”,并且基于功耗控制MEMPWDINSLEEP配置启用SRAM电源关闭。
相关文章:
4_Apollo4BlueLite电源管理
1.Cortex-M4 Power Modes Apollo4BlueLite支持以下4种功耗模式: ▪ High Performance Active (not a differentiated power mode for the Cortex-M4) ▪ Active ▪ Sleep ▪ Deep Sleep (1)High Performance Mode 高性能模式不是arm定…...
Pytorch入门学习——快速搭建神经网络、优化器、梯度计算
我的代码可以在我的Github找到 GIthub地址 https://github.com/QinghongShao-sqh/Pytorch_Study 因为最近有同学问我如何Nerf入门,这里就简单给出一些我的建议: (1)基本的pytorch,机器学习,深度学习知识&a…...
举例说明typescript的Exclude、Omit、Pick
一、提前知识说明:联合类型 typescript的联合类型是一种用于表示一个值可以是多种类型中的一种的类型。我们使用竖线(|)来分隔每个类型,所以number | string | boolean是一个可以是number,string或boolean的值的类型。…...
记录一次Linux环境下遇到“段错误核心已转储”然后利用core文件解决问题的过程
参考Linux 下Coredump分析与配置 在做项目的时候,很容易遇到“段错误(核心已转储)”的问题。如果是语法错误还可以很快排查出来问题,但是碰到coredump就没办法直接找到问题,可以通过设置core文件来查找问题࿰…...
WPF中自定义Loading图
纯前端方式,通过动画实现Loading样式,如图所示 <Grid Width"35" Height"35" HorizontalAlignment"Center" VerticalAlignment"Center" Name"Loading"><Grid.Resources><DrawingBrus…...
用html+javascript打造公文一键排版系统14:为半角和全角字符相互转换功能增加英文字母、阿拉伯数字、标点符号、空格选项
一、实际工作中需要对转换选项细化内容 在昨天我们实现了最简单的半角字符和全角字符相互转换功能,就是将英文字母、阿拉伯数字、标点符号、空格全部进行转换。 在实际工作中,我们有时只想英文字母、阿拉伯数字、标点符号、空格之中的一两类进行转换&a…...
叮咚买菜财报分析:叮咚买菜第二季度财报将低于市场预期
来源:猛兽财经 作者:猛兽财经 卖方分析师对叮咚买菜第二季度财报的预测 尽管叮咚买菜(DDL)尚未明确披露第二季度财报的具体日期,但根据其以往的业绩公告,猛兽财经认为叮咚买菜很有可能会在8月的第二周发布…...
设计模式行为型——中介者模式
目录 什么是中介者模式 中介者模式的实现 中介者模式角色 中介者模式类图 中介者模式代码实现 中介者模式的特点 优点 缺点 使用场景 注意事项 实际应用 什么是中介者模式 中介者模式(Mediator Pattern)属于行为型模式,是用来降低…...
Vue——formcreate表单设计器自定义组件实现(二)
前面我写过一个自定义电子签名的formcreate表单设计器组件,那时初识formcreate各种使用也颇为生疏,不过总算套出了一个组件不是。此次时隔半年又有机会接触formcreate,重新熟悉和领悟了一番各个方法和使用指南。趁热打铁将此次心得再次分享。…...
人脸验证(Face verification) 和 人脸识别(Face recognition) 的区别
人脸验证(Face verification) 和 人脸识别(Face recognition) 的区别 Face verification 和 Face recognition 都是人脸识别的技术,但是它们的应用和目的不同。 Face verification(人脸验证)是指通过比对两张人脸图像,判断它们是…...
前端如何打开钉钉(如何唤起注册表中路径与软件路径不关联的软件)
在前端唤起本地应用时,我查询了资料,在注册表中找到腾讯视频会议的注册表情况,如下: 在前端代码中加入 window.location.href"wemeet:"; 就可以直接唤起腾讯视频会议,但是我无法唤起钉钉 之所以会这样&…...
数据可视化入门指南
数据可视化是一种将抽象的数值和数据转换为易于理解的图像的方法。它可以帮助人们更好地理解数据的含义,并且可以揭示数据中可能被忽视的模式和趋势。本文将为你提供一个简单的数据可视化入门指南。 为什么数据可视化重要? 在我们的生活中,数…...
React 18 响应事件
参考文章 响应事件 使用 React 可以在 JSX 中添加 事件处理函数。其中事件处理函数为自定义函数,它将在响应交互(如点击、悬停、表单输入框获得焦点等)时触发。 添加事件处理函数 如需添加一个事件处理函数,需要先定义一个函数…...
面试总结-c++
1该吹牛逼吹牛逼。在自己能说出个所以然的情况下,该吹就吹,不吹没工作,吹了有希望。 比如 c组长,确有其事,但是挺唬人。说自己在北京定居也是侧面吹牛逼,证明自己的能力。还有媳妇在研究所。 2.对自己做过…...
Spring(九) - 解惑 spring 嵌套事务.2
1. 事务传播特性 在所有使用 spring 的应用中, 声明式事务管理可能是使用率最高的功能了, 但是, 从我观察到的情况看,绝大多数人并不能深刻理解事务声明中不同事务传播属性配置的的含义, 让我们来看一下 TransactionDefinition 接口中的定义 Java代码 /** * Support a cu…...
Android Studio API 33 获取当前连接的WIFI名称
常规流程失败流程 常规流程 以下内容在 API 33 成功实现,低版本API还请自行尝试(仅推荐 API 29 - 33 用户食用) 先(至少)添加以下权限到你的 AndroidManifest.xml 文件 <uses-permission android:name"andr…...
ICCV 2023 | 半监督三维目标检测新SOTA:密集匹配和量化补偿
论文链接:https://arxiv.org/abs/2304.13031 开源代码仓库地址:https://github.com/AIR-DISCOVER/DQS3D 方法效果对比图:有效在半监督情况下处理临近小物体 01. 简介 本文旨在解决三维室内场景中高昂的标注成本问题,特别关注半监…...
python+django+mysql项目实践三(用户管理)
python项目实践 环境说明: Pycharm 开发环境 Django 前端 MySQL 数据库 Navicat 数据库管理 用户列表展示 urls view models html <!DOCTYPE html> <html...
Java多线程 | 操作线程的方法详解
文章目录 一、线程的启动1.1 start()方法 二、线程的休眠与中断2.1 Thread.sleep()方法2.2 interrupt()方法 三、线程的等待与唤醒3.1 wait()方法3.2 Object类的notify()和notifyAll()方法3.3 await()和signal()方法3.4 使用join()方法等待线程执行完成 四、线程的状态控制与管…...
【ConcurrentHashMap1.7源码】十分钟带你深入ConcurrentHashMap并发解析
ConcurrentHashMap1.7源码 四个核心要点 初始化PUT扩容GET Unsafe 初始化 五个构造方法 /*** Creates a new, empty map with the default initial table size (16).*/public ConcurrentHashMap() {}/*** Creates a new, empty map with an initial table size* accommodati…...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...
让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...
C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅!
【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅! 🌱 前言:一棵树的浪漫,从数组开始说起 程序员的世界里,数组是最常见的基本结构之一,几乎每种语言、每种算法都少不了它。可你有没有想过,一组看似“线性排列”的有序数组,竟然可以**“长”成一棵平衡的二…...
机器学习的数学基础:线性模型
线性模型 线性模型的基本形式为: f ( x ) ω T x b f\left(\boldsymbol{x}\right)\boldsymbol{\omega}^\text{T}\boldsymbol{x}b f(x)ωTxb 回归问题 利用最小二乘法,得到 ω \boldsymbol{\omega} ω和 b b b的参数估计$ \boldsymbol{\hat{\omega}}…...
leetcode_69.x的平方根
题目如下 : 看到题 ,我们最原始的想法就是暴力解决: for(long long i 0;i<INT_MAX;i){if(i*ix){return i;}else if((i*i>x)&&((i-1)*(i-1)<x)){return i-1;}}我们直接开始遍历,我们是整数的平方根,所以我们分两…...
