2

我在使用 FreeRTOS 任务的项目上工作,我想进入 deep_sleep。在进入 deep_sleep 之前我应该​​做些什么?或者唤醒后,RTOS 调度程序什么也没发生?

4

1 回答 1

0

没有简单的方法可以混合使用 freeRTOS 和 deep_sleep 模式。在深度睡眠期间,CPU 断电并且其上下文丢失,但 RTC 内存可以保留。由于 SRAM 的所有内容都丢失了,因此我们无法在此处进行简单的备份恢复,以便在从深度睡眠中恢复后安全恢复所有内容。

但是您可以做的是在进入深度睡眠之前将所有内容都降到安全状态,您可以向所有任务发出信号以完成它们正在做的事情并退出,然后利用 ESP32 相对较低的唤醒延迟。这对于连接 Wi-Fi 的设备来说是一个非常令人不快的不便,但对于将在几秒钟内唤醒并发送一次信标的 BLE 设备来说或多或少可以接受。

您还希望通过启用CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP选项来微调第二阶段引导加载程序的配置,以便从深度睡眠中唤醒比从冷复位启动更快。

于 2021-05-10T15:07:11.550 回答