当前位置: 首页 > news >正文

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系列中的休眠模式

休眠模式是在系统层面定义的&#xff0c;它包括将APU置于待机模式&#xff0c;并将多个控制器保持在无时钟的复位状态。 进入休眠模式可以大大降低功耗。在休眠模式下&#xff0c;大多数功能时钟组都会被关闭或断电。唯一需要保持活动的设备是一个CPU、窥探控制单元&#xff08…...

在redhat7/8平台上部署ELK7.17.18的技术方案

部署环境说明 为节省资源直接使用1台测试机模拟3节点elasticsearch服务集群做部署&#xff0c;在该主机上同时部署了3个elasticsearch实例、1个logstash实例、1个kibana实例、1个filebeat实例。对于生产环境&#xff0c;以上实例服务应该做分布式部署。 ELK-TEST1 192.168.10…...

(Chat For Al,创新Al,汇语Al助手,AiTab新标签,万能助手,LLaVA)分享6个好用的ChatGPT

目录 1、Chat For AI 2、创想AI 3、汇语AL助手...

MySQL-锁篇

文章目录 表级锁和行级锁了解吗&#xff1f;有什么区别&#xff1f;行级锁使用有什么注意事项&#xff1f;InnoDB有哪几类行锁&#xff1f;共享锁和排他锁是什么&#xff1f;意向锁有什么用&#xff1f; 锁是一种常见的并发事务的控制方式 表级锁和行级锁了解吗&#xff1f;有什…...

滤波器笔记(杂乱)

线性相位是时间平移&#xff0c;相位不失真 零、基础知识 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 应用程序功能&#xff1a;用户通过…...

.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(…...

智能零售:引领购物新时代

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

【AIGC】AIGC在虚拟数字人中的应用:塑造未来互动体验的革新力量

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

电机控制器电路板布局布线参考指导(五)

电机控制器电路板布局布线参考指导&#xff08;五&#xff09;大容量电容和旁路电容的放置 1.大容量电容的放置2.电荷泵电容器3.旁路电容/去耦电容的放置3.1 靠近电源3.2 靠近功率器件3.3 靠近开关电流源3.4 靠近电流感测放大器3.5 靠近稳压器 tips&#xff1a;资料主要来自网络…...

Python医院挂号脚本

作者介绍&#xff1a;10年大厂数据\经营分析经验&#xff0c;现任大厂数据部门负责人。 会一些的技术&#xff1a;数据分析、算法、SQL、大数据相关、python 欢迎加入社区&#xff1a;码上找工作 作者专栏每日更新&#xff1a; LeetCode解锁1000题: 打怪升级之旅 python数据分析…...

LabVIEW光学探测器板级检测系统

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

女上司问我:误删除PG百万条数据,可以闪回吗?

作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验 擅长主流数据Oracle、MySQL、PG、openGauss运维 备份恢复&#xff0c;安装迁移&#xff0c;性能优化、故障应急处理等可提供技术业务&#xff1a; 1.DB故障处理/疑难杂症远程支援 2.Mysql/PG/Oracl…...

HarmonyOS4-数据持久化

轻量级preferences&#xff1a; 关系型数据库&#xff1a; 增删改&#xff1a; 查询语句&#xff1a; 具体详情代码可参与源码&#xff1a; 黑马大佬写的。 harmonyos-lessons: 黑马程序员B站HarmonyOS课程的基础篇代码部分...

深度学习的社交网络:用户行为分析

1.背景介绍 社交网络是当今互联网的一个重要领域,它们为人们提供了一种快速、便捷的方式来与他人交流、分享信息和建立社交关系。社交网络的数据量巨大,包括用户的个人信息、互动记录、内容等。这些数据为企业和组织提供了丰富的信息来源,可以用于用户行为分析、推荐系统、…...

Python 使用 pip 安装 matplotlib 模块(精华版)

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

UOS系统-mips架构---Java环境安装

平时都是在windows系统上安装的java环境&#xff0c;今天需要在uos系统安装java1.8的环境&#xff0c;记录一下安装过程。 &#xff08;以下均在root权限下运行&#xff09; 一、查找java1.8 jdk版本 apt search openjdkopenjdk-8-jdk/未知,未知 1.8.0.212-2deepin mips64el O…...

Java——二叉树

二叉树 二叉树在Java中是一种重要的数据结构&#xff0c;用于高效地组织和处理具有层级关系的数据。 二叉树的每个节点最多有两个子节点&#xff0c;这两个子节点分别称为左子节点和右子节点。这种结构非常适合于使用递归的方式进行定义和操作。在计算机科学中&#xff0c;二…...

数据仓库—维度建模—事实表设计

事实表 事实表是数据仓库中的核心表,用于记录与业务过程相关的事实信息,是进行数据分析和挖掘的主要数据来源。 在ER模型中抽象出了有实体、关系、属性三种类别,在现实世界中,每一个操作型事件,基本都是发生在实体之间的,伴随着这种操作事件的发生,会产生可度量的值,…...

《系统架构设计师教程(第2版)》第9章-软件可靠性基础知识-05-软件可靠性测试

文章目录 1. 概述2. 定义软件运行剖面2.1 软件的使用行为建模2.2 输入域分层2.3 弧上的概率分配2.4 其他注意点 3. 可靠性测试用例设计4. 可靠性测试的实施4.1 测试前检查4.2 注意点4.2 可靠性测试的难点1&#xff09;失效判断的主观性2&#xff09;计算的错误结果不易被发现 4…...

uni-app vue3 setup 如何使用 onShow

在uni-app中&#xff0c;onShow是uni.onAppShow的别名&#xff0c;用于监听当前小程序被用户切换到前台运行时触发。在Vue 3中&#xff0c;你可以通过以下方式使用onShow&#xff1a; 在页面的vue文件中添加onShow方法&#xff1a; javascript <button click“onShow”&g…...

linux学习:进程(新建+运行某文件+退出处理函数+等待)

目录 api 创建新进程 注意 运行某文件 例子 注意 例子&#xff0c;等待进程 进程是由进程控制块、程序段、数据段三部分组成 进程有都有一个父进程&#xff0c;除了init&#xff0c;父进程可以创建子进程 每个进程都有一个PID&#xff0c;可以用ps来查看&#xff0c;等…...

Leetcode. 12 整数转罗马数字

罗马数字包含以下七种字符&#xff1a; I&#xff0c; V&#xff0c; X&#xff0c; L&#xff0c;C&#xff0c;D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例…...

【uniapp】request请求函数封装,token、成功、失败等

1、封装http.ts //utils--->http.ts/*** 添加拦截器* 拦截request请求* 拦截uploadFile文件上传** TODO* 1、非http开头需要拼接地址* 2、请求超时* 3、添加小程序端请求头标识* 4、添加token请求头标识*/ import { useMemberStore } from /stores/index const member…...

0基础如何入门编程?

0基础如何进入IT行业 &#xff1f; 前言 简介&#xff1a;对于没有任何相关背景知识的人来说&#xff0c;如何才能成功进入IT行业&#xff1f;是否有一些特定的方法或技巧可以帮助他们实现这一目标&#xff1f; 主要方法有如下几点建议提供给宝子们 目录 免费视频网课学习…...

Go 单元测试基本介绍

文章目录 引入一、单元测试基本介绍1.1 什么是单元测试&#xff1f;1.2 如何写好单元测试1.3 单元测试的优点1.4 单元测试的设计原则 二、Go语言测试2.1 Go单元测试概要2.2 Go单元测试基本规范2.3 一个简单例子2.3.1 使用Goland 生成测试文件2.3.2 运行单元测试2.3.3 完善测试用…...

uniapp 上传视频到阿里云之后回显视频获取视频封面

uniapp 上传视频到阿里云之后回显视频获取视频封面 官网的解决方案 1.initial-time Number 指定视频初始播放位置&#xff0c;单位为秒&#xff08;s&#xff09;。 没什么卵用 2.使用 uni.createVideoContext(“myVideo”, this).seek(number)。 没什么卵用 <video :id&quo…...

使用undetected-chromedriver遇到的问题及解决方法,以及它使用SOCKS代理的问题

环境&#xff1a;python3.8.10 uc的安装方法&#xff1a; pip38 install undetected-chromedriver 上测试代码&#xff1a; import undetected_chromedriver as uc driver uc.Chrome() driver.get(https://www.baidu.com) driver.save_screenshot(baidu.png)报错&#xff…...

Hadoop入门学习路线

目录 一、基础理论学习 二、安装与配置 三、Hadoop安装与部署 四、实践操作与项目练习 五、进阶学习 六、学习资源推荐 一、基础理论学习 了解Hadoop的起源、发展历程及其在大数据领域的重要性。 掌握Hadoop的核心组件及其作用&#xff0c;包括HDFS&#xff08;分布式文件…...

Python中的设计模式与最佳实践【第166篇—设计模式】

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 Python中的设计模式与最佳实践 在软件开发中&#xff0c;设计模式是一种解决常见问题的经过…...

设计好看的企业网站/巩义网站推广优化

数值预测模型中&#xff0c;评价模型质量的常用指标有&#xff1a; 平均误差率、判定系数R2&#xff1b; 分类预测模型中&#xff0c;评估模型质量的常用指标有&#xff1a; 正确率、查全率、查准率、ROC曲线和AUC值。...

网站建设的开发方式知乎/长沙官网seo推广

有时候我们在开发过程中&#xff0c;很容易犯这样一个错误&#xff0c;就是在服务中写一个定时任务&#xff0c;然后也没做其它的处理就上线了。然后微服务架构为了保证高可用&#xff0c;一般都会部署多个服务&#xff0c;这个时候问题就来了&#xff0c;时间一到定时任务一启…...

有经验的合肥网站建设/南宁seo排名外包

从学习成本上来看&#xff0c;无疑WebForm的初期学习成本是相当的低。对于完全的新手&#xff0c;控件拖放然后编写后台代码应该是相当容易理解和接受的方式&#xff1b;对于从WinForm上转过来的开发人员&#xff0c;这种开发方式则早已成为他们的习惯&#xff1b;即使是对我这…...

网站建设和优化排名/百度一下首页手机版

在当今的移动盛世&#xff0c;谈论APP“生存”话题未免太过沉重。但面对百万级移动应用大军所产生的激烈竞争&#xff0c;且保证“立而不倒”&#xff0c;这样的探讨就显得格外重要了。 主打“价值牌”才能“一条龙” 有这样一组数据&#xff0c;在我国&#xff0c;APP只被打开…...

桐城做淘宝店铺网站公司/百度seo分析工具

一、效果图 如上图&#xff0c;在使用键盘输入的时候&#xff0c;有时我们可以看到回车键是“下一步”、“搜索”、“确认”等&#xff0c;那么这个效果要怎么做呢&#xff1f;其实很简单&#xff0c;我们只需要在EditText中设置imeOptions这个属性就行了。 <EditTextandroi…...

vue做单页面网站/关键词优化哪个好

部署Flannel网络 部署flannel网络需要执行以下步骤&#xff1a; 1&#xff09;写入分配的子网段到etcd&#xff0c;供flanneld使用 2&#xff09;下载二进制包 3&#xff09;配置Flannel 4&#xff09;systemd管理Flannel 5&#xff09;配置Docker启动指定子网段 6&#xff09;…...