如何解决ESP-IDF deep_sleep 和 FreeRTOS 任务
我从事使用 FreeRTOS 任务的项目,我想进入 deep_sleep。在进入 deep_sleep 之前有什么我应该做的吗?或者唤醒后,RTOS 调度程序正常工作,什么也没有发生?
解决方法
没有简单的方法可以混合 freeRTOS 和 deep_sleep 模式。在深度睡眠期间,CPU 断电,其上下文丢失,但 RTC 内存可以保留。由于 SRAM 的所有内容都丢失了,因此我们无法在此轻松进行备份-恢复以在从深度睡眠中醒来后安全地恢复所有内容。
但是您可以做的是在进入深度睡眠之前将一切都降低到安全状态,您可以向所有任务发出信号以完成他们正在执行的操作并退出,然后利用 ESP32 相对较低的唤醒-延迟。对于连接 Wi-Fi 的设备来说,这是一个非常令人不快的不便,但对于会在几秒钟内唤醒并发送一次信标的 BLE 设备或多或少可以接受。
您还需要通过启用 CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP 选项来微调第二阶段引导加载程序的配置,以便从深度睡眠中唤醒比从冷重置中启动要快。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。