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

嵌入式基础 -- IMX8MP的 GPC 模块技术

General Power Controller (GPC) 模块技术文档

1. GPC 模块简介

1.1 模块功能

GPC(General Power Controller)模块是用于 i.MX8M Plus 应用处理器 的电源管理组件,支持以下功能:

  • 管理 ARM Cortex-A53 和 Cortex-M7 平台的低功耗模式(WAIT/STOP/DSM)。
  • 提供电源域的灵活控制机制。
  • 与其他模块(如时钟控制模块 CCM 和系统复位控制器 SRC)交互,实现电源和时钟的精细化管理。

1.2 支持的低功耗模式

GPC 提供以下低功耗模式:

  1. WAIT 模式:部分资源保持激活以便快速恢复。
  2. STOP 模式:更多资源关闭以降低功耗。
  3. 深度睡眠模式 (DSM):进一步降低功耗,通过外部中断或特定信号唤醒。

1.3 模块组成

  • 系统模式控制器 (SMC):负责低功耗模式和深度睡眠模式的切换。
  • 时隙控制器 (PGTSC):通过时隙管理子系统的电源开关。

2. 使用场景示例:低功耗模式下的电源管理

2.1 场景描述

在嵌入式系统中,当 Cortex-A53 平台处于空闲状态时,希望将其进入 STOP 模式,通过外部中断唤醒以降低功耗。

2.2 GPC 工作流程

  1. 配置低功耗模式
    • 将 Cortex-A53 平台设置为 STOP 模式。
    • 根据需求关闭核心时钟、电源域或保留部分资源(如 L2 缓存)。
  2. 定义唤醒条件
    • 配置外部中断作为唤醒源。
    • 设置中断屏蔽寄存器,仅允许特定中断触发唤醒。
  3. 进入低功耗模式
    • 通过 WFI(Wait For Interrupt)指令触发。
    • 核心进入低功耗状态,GPC 根据配置管理电源和时钟。
  4. 唤醒处理
    • 外部中断到来时,GPC 恢复核心电源和时钟。
    • Cortex-A53 核心恢复正常运行模式。

2.3 示例代码(伪代码)

以下伪代码展示如何通过 GPC 实现上述场景。

// 假设 GPC 寄存器基地址为 GPC_BASE#define GPC_BASE 0x303A0000
#define GPC_LPCR_A53_BSC (GPC_BASE + 0x0)   // 基本低功耗控制寄存器
#define GPC_LPCR_A53_AD (GPC_BASE + 0x4)    // 高级低功耗控制寄存器
#define GPC_SLPCR (GPC_BASE + 0x14)         // 系统低功耗控制寄存器
#define GPC_IMR1_CORE0_A53 (GPC_BASE + 0x30) // 中断屏蔽寄存器
#define GPC_PGC_ACK_SEL_A53 (GPC_BASE + 0x24) // A53 平台的电源确认信号选择void configure_gpc_for_low_power_mode() {// 1. 配置低功耗模式为 STOP 模式reg32_write(GPC_LPCR_A53_BSC, 0x0000000A);  // [3:0]=STOP模式,[14]=时钟关闭// 2. 设置外部中断唤醒条件reg32_write(GPC_IMR1_CORE0_A53, 0xFF7FFFFF); // 屏蔽除指定中断(如 GPT1 中断)外的所有中断// 3. 配置系统低功耗模式reg32_write(GPC_SLPCR, 0xE000FFA7);  // [31]=启用深度睡眠模式 (DSM)// [30]=启用电压旁路// [2]=启用 PMIC 待机// 4. 配置 A53 核心电源管理reg32_write(GPC_LPCR_A53_AD, 0x0A0A0A1A);  // [16]=启用 ALL_OFF 模式// [19]/[17]/[3]/[1]=核心电源关闭// 5. 设置电源域的确认信号reg32_write(GPC_PGC_ACK_SEL_A53, 0x00010004);  // 核心 0 的 PGC 确认信号
}void enter_low_power_mode() {// 1. 触发 WFI 指令,进入低功耗状态__asm__("WFI"); // 汇编指令,等待中断
}void main() {// 初始化低功耗配置configure_gpc_for_low_power_mode();// 模拟主循环while (1) {if (is_system_idle()) {  // 判断系统是否空闲enter_low_power_mode();  // 进入低功耗模式}// 处理唤醒后的逻辑handle_interrupts();}
}

2.4 示例说明

  1. 关键配置
    • 设置 GPC_LPCR_A53_BSC 为 STOP 模式,关闭时钟以节能。
    • GPC_IMR1_CORE0_A53 配置屏蔽无关中断,只允许 GPT 定时器中断触发唤醒。
  2. 代码逻辑
    • configure_gpc_for_low_power_mode 函数负责完成低功耗配置。
    • 主循环中检测系统是否空闲,空闲时进入低功耗模式。
  3. 扩展应用
    • 可扩展到多核电源管理、动态调整外设电源状态等场景。

3. 总结

通过 GPC 模块,i.MX8M Plus 平台能够实现灵活的低功耗管理。结合实际应用场景,可根据需求调整配置以优化功耗和性能。

http://www.lryc.cn/news/518858.html

相关文章:

  • 选择器css
  • 全方位解读消息队列:原理、优势、实例与实践要点
  • JavaScript运算符与控制结构
  • 2030年中国AI人才缺口或达400万,近屿智能助力AI人才储备增长
  • 如何设计一个注册中心?以Zookeeper为例
  • ubuntu 20.04 安装docker--小白学习之路
  • 【大厂面试AI算法题中的知识点】方向涉及:ML/DL/CV/NLP/大数据...本篇介绍 密集行人检测的遮挡问题怎么解决?
  • Tableau数据可视化与仪表盘搭建-可视化原则及BI仪表盘搭建
  • TensorFlow Quantum快速编程(基本篇)
  • ELK日志分析实战宝典之ElasticSearch从入门到服务器部署与应用
  • git 转移文件夹
  • C#,图论与图算法,输出无向图“欧拉路径”的弗勒里(Fleury Algorithm)算法和源程序
  • 计算机网络之---OSI七层模型
  • mysql的mvcc理解
  • leetcode 面试经典 150 题:两数之和
  • nexus搭建maven私服
  • 理解 Tomcat 架构
  • python3GUI--大屏可视化-传染病督导平台 By:PyQt5
  • 如何选择适合的证件照制作软件,让您的照片制作更轻松
  • 工作效率提升:使用Anaconda Prompt 创建虚拟环境总结
  • Python自动化实战 —— 使用Selenium进行Web自动化
  • 【前端】【HTML】入门基础知识
  • PHP获取局域网ip(192.168)
  • 点击底部的 tabBar 属于 wx.switchTab 跳转方式,目标页面的 onLoad 不会触发(除非是第一次加载)
  • 基于PLC的酒店热水供应控制系统设计
  • 博客内所有项目均可在面包多平台进行购买
  • 《Mcal》--MCU模块
  • C语言:枚举类型
  • spring boot 多数据源集成mysql、postgresql、phoenix、doris等
  • USB基础 -- USB 控制传输(Control Transfer)的重传机制