Zynq7000系列中的休眠模式
休眠模式是在系统层面定义的,它包括将APU置于待机模式,并将多个控制器保持在无时钟的复位状态。
进入休眠模式可以大大降低功耗。在休眠模式下,大多数功能时钟组都会被关闭或断电。唯一需要保持活动的设备是一个CPU、窥探控制单元(SCU)和一个wake-up设备。理想情况下,唯一引起动态功耗的设备应该是SCU和wake-up外设。wake-up外设可以是UART、GPIO或任何能够生成中断的设备。
如果wake-up设备是一个AXI总线主设备,且该AXI总线主设备能够启动针对DRAM的事务,那么就需要使用额外的限制。由于整个interconnect和DDR内存都处于低功耗模式且不可访问,因此必须确保在针对DRAM进行任何事务之前,CPU已经完成了整个wake-up过程。这可以确保针对DRAM的潜在事务能够得到正确处理。
休眠模式的设计旨在实现功耗和性能之间的平衡。通过允许关键组件在休眠期间保持活动状态,系统可以在需要时迅速恢复操作,同时最大限度地减少功耗。这种功耗管理策略对于需要长时间待机但又要求快速响应的应用场景非常有用。
1、设置wake-up事件
发送给PS的每个中断都可以用作wake-up事件。要实现这一点,必须在外设和GIC中启用所需的中断。wake-up设备必须能够在休眠模式下生成中断,这意味着其时钟可能不会被门控关闭。
在配置wake-up事件时,需要确保所选器件在休眠模式下仍然能够工作,并且能够生成中断信号。这通常涉及配置设备的电源管理设置,以确保其时钟不会被关闭。此外,还需要在GIC中配置中断处理程序,以便在接收到中断时能够正确响应并wake-up系统。
2、使用休眠模式的注意事项
在休眠模式下,主CPU负责关闭所有非wake-up设备,包括系统中的所有其他主设备和PL(如果可能的话)。由于时钟频率在更改时钟分频器和PLL配置时会发生变化,因此配置wake-up设备不仅意味着激活所需的wake-up中断,还需要更改外设配置以应对修改后的时钟频率。如果两个CPU都在运行,主CPU应在进入待机模式之前首先关闭从CPU。哪个CPU作为主CPU是用户的选择。此外,必须采取预防措施,确保在DDR时钟被禁用时执行的代码在此期间可访问,例如,将这些代码段放在OCM中,或锁定L2缓存和TLB。根据实际实现情况,这可能适用于以下情况:
• DDR不可用时执行的代码
• 进入和退出待机模式的例行程序
• 转换表
• 堆栈
当前使用的转换表和堆栈的位置分别可以通过TTBR和SP寄存器进行控制。如果需要,这允许在正常运行模式和待机模式之间切换不同的结构。
在待机序列中,CPU中的中断被禁用。这样,在进入待机模式时执行不会被中断,并且一旦发生wake-up事件,执行将在wfi(等待中断)指令之后立即恢复,而不是跳转到向量表。wake-up中断必须在相应的wake-up设备和GIC中断控制器中启用,以产生合格的wake-up事件。wake-up后重新启用中断时,wake-up中断仍然处于挂起状态,并导致CPU像往常一样跳转到其中断处理程序。
三、进入休眠模式
CPU必须执行以下步骤,才能从正常运行模式进入休眠模式:
1.禁用中断。
执行cpsid if。
2.配置wake-up设备。
3.启用L2缓存动态时钟门控。
设置l2cpl310.reg15_power_ctrl[dynamic_clk_gating_en] = 1。
4.启用SCU待机模式。
设置mpcore.SCU_CONTROL_REGISTER[SCU_standby_enable] = 1。
5.启用顶层开关时钟停止。
设置slcr.TOPSW_CLK_CTRL[CLK_DIS] = 1。
6.启用Cortex-A9动态时钟门控。
设置cp15.power_control_register[dynamic_clock_gating] = 1。
7.将外部DDR内存置于自刷新模式。
8.将PLL置于旁路( bypass)模式。
设置slcr.{Arm, DDR, IO}_PLL_CTRL[PLL_BYPASS_FORCE] = 1。
9.关闭PLL。
设置slcr.{Arm, DDR, IO}_PLL_CTRL[PLL_PWRDWN] = 1。
10.增加时钟分频器以减慢CPU时钟。
设置slcr.ARM_CLK_CTRL[DIVISOR] = 0x3f。
11.执行wfi(等待中断)指令以进入WFI模式。
在实际应用中,可能还需要执行其他步骤或检查以确保系统能够正确和安全地进入休眠模式。务必参考使用的硬件和软件的官方文档,以确保遵循正确的编程指南和最佳实践。
四、退出休眠模式
退出休眠模式是由配置好的中断触发的。中断wake-up CPU,使其恢复执行。新启动的活动也会触发顶层开关、SCU和L2缓存控制器离开空闲状态并继续正常操作。以下概述了wake-up过程的步骤。
要退出休眠模式:
1.恢复CPU时钟分频器设置。
设置slcr.ARM_CLK_CTRL[DIVISOR] = <原始值>。
2.给PLL上电。
设置slcr.{ARM, DDR, IO}_PLL_CTRL[PLL_PWRDWN] = 0。
3.等待PLL上电并锁定。
等待slcr.PLL_STATUS[{ARM, DDR, IO}_PLL_LOCK] == 1。
4.禁用PLL旁路模式。
设置slcr.{ARM, DDR, IO}_PLL_CTRL[PLL_BYPASS_FORCE] = 0。
5.禁用L2缓存动态时钟门控。
设置l2cpl310.reg15_power_ctrl[dynamic_clk_gating_en] = 0。
6.禁用SCU待机模式。
设置mpcore.SCU_CONTROL_REGISTER[SCU_standby_enable] = 0。
7.禁用 Interconnect时钟停止。
设置slcr.TOPSW_CLK_CTRL[CLK_DIS] = 0。
8.禁用Cortex-A9动态时钟门控。
设置cp15.power_control_register[dynamic_clock_gating] = 0。
9.启用所有必需的外围设备。
包括DDR控制器时钟。
10.重新启用并处理中断。
执行cpsie if。
旁路PLL和修改时钟分频器会改变系统中的时钟频率。在这些条件下,必须注意为wake-up设备和看门狗计时器(如果使用)等提供时钟。
相关文章:
Zynq7000系列中的休眠模式
休眠模式是在系统层面定义的,它包括将APU置于待机模式,并将多个控制器保持在无时钟的复位状态。 进入休眠模式可以大大降低功耗。在休眠模式下,大多数功能时钟组都会被关闭或断电。唯一需要保持活动的设备是一个CPU、窥探控制单元(…...
在redhat7/8平台上部署ELK7.17.18的技术方案
部署环境说明 为节省资源直接使用1台测试机模拟3节点elasticsearch服务集群做部署,在该主机上同时部署了3个elasticsearch实例、1个logstash实例、1个kibana实例、1个filebeat实例。对于生产环境,以上实例服务应该做分布式部署。 ELK-TEST1 192.168.10…...
(Chat For Al,创新Al,汇语Al助手,AiTab新标签,万能助手,LLaVA)分享6个好用的ChatGPT
目录 1、Chat For AI 2、创想AI 3、汇语AL助手...
MySQL-锁篇
文章目录 表级锁和行级锁了解吗?有什么区别?行级锁使用有什么注意事项?InnoDB有哪几类行锁?共享锁和排他锁是什么?意向锁有什么用? 锁是一种常见的并发事务的控制方式 表级锁和行级锁了解吗?有什…...

滤波器笔记(杂乱)
线性相位是时间平移,相位不失真 零、基础知识 1、用相量表示正弦量 https://zhuanlan.zhihu.com/p/345546880 https://www.zhihu.com/question/347763932/answer/1103938667 A s i n ( ω t θ ) ⇔ A e j θ ⇔ A ∠ θ Asin(\omega t\theta) {\Leftrightarrow…...

【ARFoundation自学01】搭建AR框架,检测平面点击位置克隆物体
Unity开发ARFoundation相关应用首先安装ARFoundation包 然后设置XR 1.基础AR场景框架搭建 2.一个基本的点击克隆物体到识别的平面脚本 挂在XROrigin上 脚本AppController 脚本说明书 ## 业务逻辑 AppController 脚本旨在实现一个基本的 AR 应用程序功能:用户通过…...
.Net ajax 接收参数
后端部分代码 一般处理程序 public void ProcessRequest(HttpContext context){context.Response.ContentType "text/plain";string str_index context.Request.Form.AllKeys.Contains("index") ? context.Request.Form["index"].ToString(…...

智能零售:引领购物新时代
智能零售通过整合人工智能、物联网、大数据和机器学习等技术,正在彻底改变传统的购物模式,为消费者和零售商提供前所未有的效率和个性化体验。 智能零售利用消费者数据分析来提供个性化的购物推荐。无论是在线平台或是实体店内,智能系统都能…...

【AIGC】AIGC在虚拟数字人中的应用:塑造未来互动体验的革新力量
🚀 🚀 🚀随着科技的快速发展,AIGC已经成为引领未来的重要力量。其中,AIGC在虚拟数字人领域的应用更是引起了广泛关注。虚拟数字人作为一种先进的数字化表达形式,结合了3D建模、动画技术、人工智能等多种先进…...

电机控制器电路板布局布线参考指导(五)
电机控制器电路板布局布线参考指导(五)大容量电容和旁路电容的放置 1.大容量电容的放置2.电荷泵电容器3.旁路电容/去耦电容的放置3.1 靠近电源3.2 靠近功率器件3.3 靠近开关电流源3.4 靠近电流感测放大器3.5 靠近稳压器 tips:资料主要来自网络…...
Python医院挂号脚本
作者介绍:10年大厂数据\经营分析经验,现任大厂数据部门负责人。 会一些的技术:数据分析、算法、SQL、大数据相关、python 欢迎加入社区:码上找工作 作者专栏每日更新: LeetCode解锁1000题: 打怪升级之旅 python数据分析…...

LabVIEW光学探测器板级检测系统
LabVIEW光学探测器板级检测系统 特种车辆乘员舱的灭火抑爆系统广泛采用光学探测技术来探测火情。光学探测器作为系统的关键部件,其探测灵敏度、响应速度和准确性直接关系到整个系统的运行效率和安全性。然而,光学探测器在长期使用过程中可能会因为灰尘污…...

女上司问我:误删除PG百万条数据,可以闪回吗?
作者:IT邦德 中国DBA联盟(ACDU)成员,10余年DBA工作经验 擅长主流数据Oracle、MySQL、PG、openGauss运维 备份恢复,安装迁移,性能优化、故障应急处理等可提供技术业务: 1.DB故障处理/疑难杂症远程支援 2.Mysql/PG/Oracl…...

HarmonyOS4-数据持久化
轻量级preferences: 关系型数据库: 增删改: 查询语句: 具体详情代码可参与源码: 黑马大佬写的。 harmonyos-lessons: 黑马程序员B站HarmonyOS课程的基础篇代码部分...
深度学习的社交网络:用户行为分析
1.背景介绍 社交网络是当今互联网的一个重要领域,它们为人们提供了一种快速、便捷的方式来与他人交流、分享信息和建立社交关系。社交网络的数据量巨大,包括用户的个人信息、互动记录、内容等。这些数据为企业和组织提供了丰富的信息来源,可以用于用户行为分析、推荐系统、…...

Python 使用 pip 安装 matplotlib 模块(精华版)
pip 安装 matplotlib 模块 1.使用pip安装matplotlib(五步实现):2.使用下载的matplotlib画图: 1.使用pip安装matplotlib(五步实现): 长话短说:本人下载 matplotlib 花了大概三个半小时屡屡碰壁,险些暴走。为了不让新来的小伙伴走我的弯路,特意…...

UOS系统-mips架构---Java环境安装
平时都是在windows系统上安装的java环境,今天需要在uos系统安装java1.8的环境,记录一下安装过程。 (以下均在root权限下运行) 一、查找java1.8 jdk版本 apt search openjdkopenjdk-8-jdk/未知,未知 1.8.0.212-2deepin mips64el O…...
Java——二叉树
二叉树 二叉树在Java中是一种重要的数据结构,用于高效地组织和处理具有层级关系的数据。 二叉树的每个节点最多有两个子节点,这两个子节点分别称为左子节点和右子节点。这种结构非常适合于使用递归的方式进行定义和操作。在计算机科学中,二…...
数据仓库—维度建模—事实表设计
事实表 事实表是数据仓库中的核心表,用于记录与业务过程相关的事实信息,是进行数据分析和挖掘的主要数据来源。 在ER模型中抽象出了有实体、关系、属性三种类别,在现实世界中,每一个操作型事件,基本都是发生在实体之间的,伴随着这种操作事件的发生,会产生可度量的值,…...

《系统架构设计师教程(第2版)》第9章-软件可靠性基础知识-05-软件可靠性测试
文章目录 1. 概述2. 定义软件运行剖面2.1 软件的使用行为建模2.2 输入域分层2.3 弧上的概率分配2.4 其他注意点 3. 可靠性测试用例设计4. 可靠性测试的实施4.1 测试前检查4.2 注意点4.2 可靠性测试的难点1)失效判断的主观性2)计算的错误结果不易被发现 4…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...

HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
【论文笔记】若干矿井粉尘检测算法概述
总的来说,传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度,通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...

springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...

Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...
日常一水C
多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用
在工业制造领域,无损检测(NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统,以非接触式光学麦克风技术为核心,打破传统检测瓶颈,为半导体、航空航天、汽车制造等行业提供了高灵敏…...

nnUNet V2修改网络——暴力替换网络为UNet++
更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...