Sleep 模式详解
SoC 支持两种睡眠模式:
时钟门控(Clock-gating,CG)模式:关闭 SOC 域的时钟
电源门控(Power-gating,PG)模式:同时关闭 SOC 域的电源和时钟,因此功耗更低
由于 CPU 位于 SOC 域,PG 睡眠模式下需要备份和恢复 CPU 状态,因此在睡眠和唤醒流程中,PG 模式比 CG 模式消耗略多的时间。
备注
对于 SOC 域中的外设,从 PG 睡眠模式唤醒后必须重新初始化,因为它们所在的电源域在睡眠期间已被断电。
KM0 和 KM4 位于同一电源域,因此它们都支持 CG 或 PG 睡眠模式。
KM4 通常用作应用处理器(AP);而 KM0 通常用作网络处理器(NP),负责 Wi-Fi 驱动和固件。因此,只有当 KM4 首先请求进入睡眠模式后,KM0 才能进入睡眠模式。
对于 PG 模式:当唤醒事件发生时,PMC 将开启 SOC 域的电源和时钟。KM0 首先从复位处理程序开始,并检查标志以确认是否从 PG 模式唤醒。
如果是,KM0 将恢复 CPU 状态,从睡眠点继续执行,然后检查唤醒原因以确定是否需要唤醒 KM4。如需唤醒 KM4,则释放 KM4 的时钟以恢复其运行。
PG 模式下的睡眠和唤醒流程如下图所示:
对于 CG 模式:当唤醒事件发生时,PMC 将开启 SOC 域的时钟。由于 KM0 在 CG 模式下未断电,它将唤醒并从睡眠点继续执行,然后检查唤醒原因以确定是否需要恢复 KM4。
CG 模式下的睡眠和唤醒流程如下图所示:
两核处理器设计(NP 和 AP)可以最大限度节省功耗。
AP 用于应用程序,NP 用于 Wi-Fi 固件、Wi-Fi 驱动程序和电源、时钟控制。
睡眠模式通过无滴答(tickless)和唤醒锁(wakelock)机制实现。
NP 和 AP 均支持 CG 和 PG 模式。只有当 AP 处于睡眠模式时,NP 才能进入睡眠模式。
推荐的睡眠模式是 NP CG + AP CG 或 NP PG + AP PG。由于两个 CPU 位于同一电源域,它们应同时进入 PG 模式。
PG 模式下的睡眠和唤醒流程如下图所示:
当 AP 处于空闲任务时,它会判断是否需要进入睡眠模式。如果需要,AP 执行挂起函数并备份 CPU、NVIC、MPU 等寄存器。AP 向 NP 发送 IPC 消息,然后执行
WFI
(等待中断)使自身停止,随后 NP 在 IPC 中断处理程序中接收 IPC 消息并关闭 AP 的时钟或电源。当 NP 处于空闲任务时,它会判断是否需要进入睡眠模式。如果需要,NP 执行挂起函数并备份 CPU、NVIC、MPU 等寄存器。NP 向 PMC 发送睡眠请求,然后执行
WFI
使自身停止,随后 PMC 关闭 NP 的时钟或电源。
如果唤醒事件发生,PMC 将打开 NP 的时钟或电源,NP 将从停止处继续执行代码。如果需要唤醒 AP,NP 将打开 AP 的电源。AP 通电后,将执行开机过程,并检查是否从 PG 模式唤醒。如果是,它将把备份寄存器值重新填充到 CPU、NVIC、MPU 等。AP 将跳转到备份 CPU 寄存器的代码处。
NP CG + AP CG 相对简单。AP 发送 IPC 并执行 WFI
使自身停止。NP 在 IPC 处理程序中关闭 AP 时钟,NP 向 PMC 发送 CG 请求并执行 WFI
使自身停止。
NP 唤醒后,如果 AP 需要唤醒,它将启用 AP 的时钟以唤醒 AP。AP 将从停止处执行代码。
CG 模式下的睡眠和唤醒流程如下图所示:
从流程可以看出,无论在 CG 还是 PG 模式下,AP 仅执行 WFI
使自身停止,而 NP 控制时钟和电源。
应用程序的设计应确保空闲任务有机会执行,并且应启用 tickless 模式,否则睡眠流程将无法执行。
三核处理器设计(NP、AP 和 DSP)可以最大限度节省功耗。
AP 用于应用程序,NP 用于 Wi-Fi 固件、Wi-Fi 驱动程序和电源、时钟控制,而 DSP 作为协处理器。
睡眠模式通过无滴答(tickless)和唤醒锁(wakelock)机制实现。
NP 和 AP 均支持 CG 和 PG 模式,DSP 近支持 PG 模式。只有当 AP 处于睡眠模式时,NP 才能进入睡眠模式。
推荐的睡眠模式是 NP CG + AP CG 或 NP PG + AP PG。由于三个 CPU 位于同一电源域,它们应同时进入 PG 模式。
PG 模式下的睡眠和唤醒流程如下图所示:
当 AP 处于空闲任务时,它会判断是否需要进入睡眠模式。如果需要,AP 执行挂起函数并备份 CPU、NVIC、MPU 等寄存器。AP 向 NP 发送 IPC 消息,然后执行
WFI
(等待中断)使自身停止,随后 NP 在 IPC 中断处理程序中接收 IPC 消息并关闭 AP 的时钟或电源。当 NP 处于空闲任务时,它会判断是否需要进入睡眠模式。如果需要,NP 执行挂起函数并备份 CPU、NVIC、MPU 等寄存器。NP 向 PMC 发送睡眠请求,然后执行
WFI
使自身停止,随后 PMC 关闭 NP 的时钟或电源。
如果唤醒事件发生,PMC 将打开 NP 的时钟或电源,NP 将从停止处继续执行代码。如果需要唤醒 AP,NP 将打开 AP 的电源。AP 通电后,将执行开机过程,并检查是否从 PG 模式唤醒。如果是,它将把备份寄存器值重新填充到 CPU、NVIC、MPU 等。AP 将跳转到备份 CPU 寄存器的代码处。
NP CG + AP CG 相对简单。AP 发送 IPC 并执行 WFI
使自身停止。NP 在 IPC 处理程序中关闭 AP 时钟,NP 向 PMC 发送 CG 请求并执行 WFI
使自身停止。
NP 唤醒后,如果 AP 需要唤醒,它将启用 AP 的时钟以唤醒 AP。AP 将从停止处执行代码。
CG 模式下的睡眠和唤醒流程如下图所示:
从流程可以看出,无论在 CG 还是 PG 模式下,AP 仅执行 WFI
使自身停止,而 NP 控制时钟和电源。
应用程序的设计应确保空闲任务有机会执行,并且应启用 tickless 模式,否则睡眠流程将无法执行。
三核处理器设计(NP、AP 和 DSP)可以最大限度节省功耗。
AP 用于应用程序,NP 用于 Wi-Fi 固件、Wi-Fi 驱动程序和电源、时钟控制,而 DSP 作为协处理器。
睡眠模式通过无滴答(tickless)和唤醒锁(wakelock)机制实现。
NP 和 AP 均支持 CG 和 PG 模式,DSP 近支持 PG 模式。只有当 AP 处于睡眠模式时,NP 才能进入睡眠模式。
推荐的睡眠模式是 NP CG + AP CG 或 NP PG + AP PG。由于三个 CPU 位于同一电源域,它们应同时进入 PG 模式。
PG 模式下的睡眠和唤醒流程如下图所示:
当 AP 处于空闲任务时,它会判断是否需要进入睡眠模式。如果需要,AP 执行挂起函数并备份 CPU、NVIC、MPU 等寄存器。AP 向 NP 发送 IPC 消息,然后执行
WFI
(等待中断)使自身停止,随后 NP 在 IPC 中断处理程序中接收 IPC 消息并关闭 AP 的时钟或电源。当 NP 处于空闲任务时,它会判断是否需要进入睡眠模式。如果需要,NP 执行挂起函数并备份 CPU、NVIC、MPU 等寄存器。NP 向 PMC 发送睡眠请求,然后执行
WFI
使自身停止,随后 PMC 关闭 NP 的时钟或电源。
如果唤醒事件发生,PMC 将打开 NP 的时钟或电源,NP 将从停止处继续执行代码。如果需要唤醒 AP,NP 将打开 AP 的电源。AP 通电后,将执行开机过程,并检查是否从 PG 模式唤醒。如果是,它将把备份寄存器值重新填充到 CPU、NVIC、MPU 等。AP 将跳转到备份 CPU 寄存器的代码处。
NP CG + AP CG 相对简单。AP 发送 IPC 并执行 WFI
使自身停止。NP 在 IPC 处理程序中关闭 AP 时钟,NP 向 PMC 发送 CG 请求并执行 WFI
使自身停止。
NP 唤醒后,如果 AP 需要唤醒,它将启用 AP 的时钟以唤醒 AP。AP 将从停止处执行代码。
CG 模式下的睡眠和唤醒流程如下图所示:
从流程可以看出,无论在 CG 还是 PG 模式下,AP 仅执行 WFI
使自身停止,而 NP 控制时钟和电源。
应用程序的设计应确保空闲任务有机会执行,并且应启用 tickless 模式,否则睡眠流程将无法执行。
CA32 通常用作应用处理器(AP), KM4 通常用作网络处理器(NP)负责 Wi-Fi 驱动,而 KM0 负责 Wi-Fi 固件和电源控制。因此,CA32 必须首先进入睡眠模式,然后是 KM4,最后是 KM0 进入睡眠模式。
对于 PG 模式:当唤醒事件发生时,PMC 将开启 LP SOC 域的电源和时钟。KM0 首先从复位处理程序开始,并检查标志以确认是否从 PG 模式唤醒。
如果是,KM0 将恢复 CPU 状态,从睡眠点继续执行,然后检查唤醒原因以确定是否需要唤醒 KM4/CA32。如需唤醒 KM4/CA32,KM0 会在唤醒 CA32 之前先唤醒 KM4。
PG 模式下的睡眠和唤醒流程如下图所示:
对于 CG 模式:当唤醒事件发生时,PMC 将开启 SOC 域的时钟。由于 KM0 在 CG 模式下未断电,它将唤醒并从睡眠点继续执行,然后检查唤醒原因以确定是否需要恢复 KM4。
CG 模式下的睡眠和唤醒流程如下图所示:
KM4NS 和 KM4TZ 位于同一电源域,因此它们都支持 CG 或 PG 睡眠模式。
KM4TZ 通常用作应用处理器(AP);而 KM4NS 通常用作网络处理器(NP),负责 Wi-Fi 驱动和固件。因此,只有当 KM4TZ 首先请求进入睡眠模式后,KM4NS 才能进入睡眠模式。
对于 PG 模式:当唤醒事件发生时,PMC 将开启 SOC 域的电源和时钟。KM4NS 首先从复位处理程序开始,并检查标志以确认是否从 PG 模式唤醒。
如果是,KM4NS 将恢复 CPU 状态,从睡眠点继续执行,然后检查唤醒原因以确定是否需要唤醒 KM4TZ。如需唤醒 KM4TZ,则释放 KM4TZ 的时钟以恢复其运行。
PG 模式下的睡眠和唤醒流程如下图所示:
对于 CG 模式:当唤醒事件发生时,PMC 将开启 SOC 域的时钟。由于 KM4NS 在 CG 模式下未断电,它将唤醒并从睡眠点继续执行,然后检查唤醒原因以确定是否需要恢复 KM4TZ。
CG 模式下的睡眠和唤醒流程如下图所示:
Deep-sleep 模式详解
深度睡眠模式具有更低的功耗,因为只有 AON 域保持开启,而 SYSON 和 SOC 域关闭。因此,只有 AON 域中的外设能唤醒芯片。
当芯片从深度睡眠模式唤醒时,它将执行启动过程。
由于系统 SRAM 和 CPU 在深度睡眠模式下关闭,设置为唤醒源的外设对应的中断应在唤醒后重新注册,以处理中断处理程序。
深度睡眠模式的流程如下图所示:
深度睡眠模式具有更低的功耗,因为只有 AON 域保持供电。因此,只有 AON 域中的外设能唤醒芯片。
进入深度睡眠模式有以下两种方式:
释放深度唤醒锁(deep wakelock)
AP 直接向 NP 发送相关 IPC
如果使用第二种方式,tickless 模式就不是必需的。一旦 NP 接收到 IPC 消息,NP 就会在 IPC 中断中使系统进入深度睡眠模式。
深度睡眠的唤醒过程即为芯片的启动过程。
深度睡眠模式具有更低的功耗,因为只有 AON 域保持供电。因此,只有 AON 域中的外设能唤醒芯片。
进入深度睡眠模式有以下两种方式:
释放深度唤醒锁(deep wakelock)
AP 直接向 NP 发送相关 IPC
如果使用第二种方式,tickless 模式就不是必需的。一旦 NP 接收到 IPC 消息,NP 就会在 IPC 中断中使系统进入深度睡眠模式。
深度睡眠的唤醒过程即为芯片的启动过程。
深度睡眠模式的流程如下图所示:
深度睡眠模式具有更低的功耗,因为只有 AON 域保持供电。因此,只有 AON 域中的外设能唤醒芯片。
进入深度睡眠模式有以下两种方式:
释放深度唤醒锁(deep wakelock)
AP 直接向 NP 发送相关 IPC
如果使用第二种方式,tickless 模式就不是必需的。一旦 NP 接收到 IPC 消息,NP 就会在 IPC 中断中使系统进入深度睡眠模式。
深度睡眠的唤醒过程即为芯片的启动过程。
深度睡眠模式的流程如下图所示:
深度睡眠模式具有更低的功耗,因为只有 AON 域保持开启,而 SYSON 和 SOC 域关闭。因此,只有 AON 域中的外设能唤醒芯片。
当芯片从深度睡眠模式唤醒时,它将执行启动过程。
由于系统 SRAM 和 CPU 在深度睡眠模式下关闭,设置为唤醒源的外设对应的中断应在唤醒后重新注册,以处理中断处理程序。
深度睡眠模式的流程如下图所示:
深度睡眠模式具有更低的功耗,因为只有 AON 域保持开启,而 SYSON 和 SOC 域关闭。因此,只有 AON 域中的外设能唤醒芯片。
当芯片从深度睡眠模式唤醒时,它将执行启动过程。
由于系统 SRAM 和 CPU 在深度睡眠模式下关闭,设置为唤醒源的外设对应的中断应在唤醒后重新注册,以处理中断处理程序。
深度睡眠模式的流程如下图所示: