在线时间1744 小时
UID1849894
注册时间2020-8-18
NXP金币6099
TA的每日心情 | 开心 昨天 18:02 |
---|
签到天数: 1690 天 连续签到: 107 天 [LV.Master]伴坛终老
金牌会员
 
- 积分
- 15718
- 最后登录
- 2025-7-18
|
本帖最后由 sumoon_yao 于 2021-5-21 21:25 编辑
1 简介
i.MX RT1170 是一款突破性的跨界处理器,它把最高运行频率提高到了 1 GHz,而且还在结合了高性能运算和多媒体功能的同时,增强了可用性及实时功能。双Cortex-M4 上运行,同时还兼具良好的安全性。这款处理器可以在不同的温度下使用,以及在不同的领域,尤其在工业及汽车行业RT1170 系列可以分为两个部分:单核和双核。关于双核及其设置,请参考《RT1170 时钟和低功耗特性》(文档 AN13104)。本文档会介绍如何在 STBY模式下使用单核 RT1170 以及如何模拟 RT1170 的单核运行状态。双核和单核的操作差别非常大,所以在运行的时候要注意。
本文档内所使用的硬件是 RT1170 EVK RevC1 (本文档中简称为 EVK), 软件是基于 IAR IDE 的 SDK 2.9.0。SDK 为单核和双核提供了不同的 demo, 同时也支持 flash 和 RAM。
2 概述
如 图 1 所示,进入 STBY 的基本原则是使两个 CPU 进入低功耗模式并且发送 STBY 需求。CPU 低功耗状态有 WAIT,STOP以及 SUSPEND 模式。除此之外,这里要求的低功耗模式 CPU 可以为除了 RUN 之外的任意模式且两个 CPU 可以处于不同的状态,比如:
· CM7 WAIT, CM4 STOP
· CM7 STOP, CM4 STOP
· CM7 SUSPNED, CM4 WAIT
· CM7 SUSPEND, CM4 SUSPEND
第二条原则是两个 CPU 已经发送了 STBY 请求。如果任何一个 CPU 没有发送,那么系统就不能进入 STBY 模式。
图1 STBY双核原则
对于单核的芯片,CM4 不能发送这个请求。所以需要 CM7 发送一些命令来强制系统进入 STBY 模式。接着 CM7 发送进入低功耗模式然后发送一个 stby_request 信号。低功耗模式可以是 WAIT,STOP 或者 SUSPEND。示意图如下:
3 如何在单核情况下进入 STBY 模式?
进入 STBY 需要双核都发送 stby_request,但是单核芯片(比如 RT1172,RT1176)没有 CM4 所以无法发送。CM4 不能做到。因此,需要用一个名为 Force_STBY 的函数,该函数可以强制 CM4 请求 STBY,然后当 M7 进入低功耗模式和发送 stby_request的时候,整个芯片就进入了 STBY 模式。
GPC_STBY_CTRL->STBY_MISC |= GPC_STBY_CTRL_STBY_MISC_FORCE_CPU1_STBY_MASK;
4 如何模拟 RT1170 EVK 的单核状态?
通常 RT1170EVK 都是双核芯片。用户可以通过一些设置来模拟单核状态。需要注意的是这只是一个初期的评估。基本的方法是CM4 进入 Suspend 模式然后发送 STBY 请求。
1. 系统启动后,CM7 会配置如下的寄存器:
a. Write PGMC CM4 CPC register as CPU mode with power-off at SUSPEND.
b. Write GPC1 IRQ mask registers as 0xFFFFFFFF so that no interrupt can wake it up.
c. Write GPC1 NON IRQ mask register as 0x3 to avoid a pending interrupt from debugger stop
entering low power mode.
d. Write GPC1 control register to request SUSPEND mode and SBTY mode.
2. CM7 通过 SRC_SCR 寄存器释放出 CM4, 现在是双核模式。
3. CM4 运行一个指令:断言 WFI 去触发 GPC1 低功耗时序来让自己进入 SUSPEND 模式以及发送 STBY 请求。
4. 当 CM4 进入 SUSPEND 模式时,CM7 会写入一些寄存器来通过软件锁住 CM4:
a. Write GPC1 AUTHEN register to lock CM1 register access.
b. Write CM4 CCGR slice in CCM to gate off CM4 clock.
c. Write CM4 CCGR AUTHEN register ‘white_list’ and ‘lock’ fields meaning no CPU can access CM4 CCGR register again. Thus CM7 software can’t turn on CM4 clock again.
d. Write PGMC CM4 CPC AUTHEN register to lock any access so that software can’t turn on CM4 power again.
本文档会提供详细的代码来提供参考。基本的方法是让 CM4 进入 Suspend 模式然后发送 STBY 请求,在此之上,屏蔽所有在 GPCCM1 中的唤醒源然后并且锁住这些寄存器的权限:任何 CPU 都不能进入和修改。最后,CM4 进入了 Suspend 模式,没有唤醒源可以唤醒它,也没有 CPU 可以修改这些设定。
下面的 API 可以完成上述的配置.
void Powerdown_CM4(void);
关于详细信息,请参考 AN13116SW。
|
|