【发布时间】:2011-12-18 23:01:53
【问题描述】:
在谈到 iMX27 的低功耗模式时,参考手册不一致。我想要两个函数:doze() 和 sleep(),它们配置 CPU 和时钟以正确进入这些低功耗模式,但手册中的示例似乎不起作用。我查看了 Linux 内核代码,这是一些帮助,但我想我会在这里询问是否有人已经有这些功能的任何代码(最好是 arm 程序集)。
打瞌睡: 打盹模式定义为 ARM9 执行等待中断指令,然后关闭向 MCU 提供缓冲时钟。 将系统设置为打盹模式的操作顺序如下:
- 启用从打盹模式唤醒所需的中断。
- 禁用看门狗定时器中断。
- 执行等待中断指令。
睡眠:
睡眠模式定义为禁用所有 DPLL 时钟输出。在系统关闭 MPLL 和 SPLL 之前,必须满足一系列操作和标准。当 CSCR 寄存器中的 MPEN 位被清除以禁用 MPLL 时,将启动休眠模式序列。此操作还会自动关闭 SPLL。 将系统置于睡眠模式的顺序如下:
- 从总线访问中禁用 AHB 外设。
- 启用所需的中断以用于系统唤醒。
- 禁用看门狗定时器中断。
- 为 SD_CNT(CSCR 寄存器)设置关机倒计时所需的值。
- 通过清除 MPEN 位(CSCR 寄存器)禁用 MPLL。
- 执行等待中断指令。
谢谢
【问题讨论】:
-
是示例代码不起作用(不太可能)还是系统中的某些东西(例如计时器)正在生成中断以便立即唤醒?您可能需要禁用任何不想引起唤醒的中断或外围设备。