ESP32 官方文档(六)深度睡眠唤醒存根

ESP32在深度睡眠时可运行深度睡眠唤醒存根,这是一段在芯片唤醒后立即执行的代码,位于RTC快速存储器中。存根规则包括对外设、内存访问的限制。实现存根可通过设置函数属性或创建特定命名的源文件。唤醒存根的数据需存放在RTC慢速存储器,可通过属性标记或创建特定命名的源文件来实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

深度睡眠唤醒存根

ESP32 支持在深度睡眠时运行“深度睡眠唤醒存根”。芯片唤醒后立即运行此功能 - 在任何正常初始化,引导加载程序或 ESP-IDF 代码运行之前。唤醒存根运行后,SoC 可以返回休眠状态或继续正常启动 ESP-IDF。

深度睡眠唤醒存根代码被加载到“RTC 快速存储器”中,它使用的任何数据也必须加载到 RTC 存储器中。RTC 存储区域在深度睡眠期间保持其内容,

唤醒存根规则

必须仔细编写唤醒存根代码:

  • 由于 SoC 刚刚从睡眠状态中醒来,大多数外设都处于复位状态。SPI Flash 未映射。
  • 唤醒存根代码只能调用 ROM 中或加载到 RTC 快速存储器中实现的功能(见下文)。
  • 唤醒存根代码只能访问 RTC 存储器中加载的数据。所有其他 RAM 将无法使用并具有随机内容。唤醒存根可以使用其他 RAM 进行临时存储,但是当 SoC 重新进入休眠状态或启动 ESP-IDF 时,内容将被覆盖。
  • RTC 内存必须包含存根使用的任何只读数据(.rodata)。
  • 每当 SoC 重新启动时,RTC 存储器中的数据都会被初始化,除非从深度睡眠中唤醒。从深度睡眠中醒来时,保持睡眠前存在的值。
  • 唤醒存根代码是 esp-idf 应用程序的一部分。在 esp-idf 的正常运行期间,函数可以调用唤醒存根函数或访问 RTC 存储器。就好像这些是应用程序的常规部分。

实现存根

esp-idf 中的唤醒存根的函数 esp_wake_deep_sleep()。只要 SoC 从深度睡眠中唤醒,该函数就会运行。esp-idf 中提供了此函数的默认版本,但默认函数是弱链接的,因此如果您的应用程序包含名为 esp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值