From 281345c53a0a8980b14a29a2d387dc773f552f42 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Thu, 6 Sep 2018 18:31:17 +0800 Subject: [PATCH] sleep: keep RTC_SLOW_MEM powered on if RTC_NOINIT is used MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes a bug that if application uses RTC_NOINIT variables but doesn’t use RTC_DATA variables, then RTC_NOINIT variables loose their values after deep sleep. Reported in https://esp32.com/viewtopic.php?f=2&t=7045&p=30301#p30299 --- components/esp32/sleep_modes.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/components/esp32/sleep_modes.c b/components/esp32/sleep_modes.c index f25a28443..e770145a5 100644 --- a/components/esp32/sleep_modes.c +++ b/components/esp32/sleep_modes.c @@ -603,11 +603,15 @@ static uint32_t get_power_down_flags() // RTC_SLOW_MEM is Auto, keep it powered up as well. // These labels are defined in the linker script: - extern int _rtc_data_start, _rtc_data_end, _rtc_bss_start, _rtc_bss_end; + extern int _rtc_data_start, _rtc_data_end, + _rtc_bss_start, _rtc_bss_end, + _rtc_noinit_start, _rtc_noinit_end; if ((s_config.pd_options[ESP_PD_DOMAIN_RTC_SLOW_MEM] == ESP_PD_OPTION_AUTO) && - (&_rtc_data_end > &_rtc_data_start || &_rtc_bss_end > &_rtc_bss_start || - (s_config.wakeup_triggers & RTC_ULP_TRIG_EN))) { + (&_rtc_data_end > &_rtc_data_start || + &_rtc_bss_end > &_rtc_bss_start || + &_rtc_noinit_end > &_rtc_noinit_start || + (s_config.wakeup_triggers & RTC_ULP_TRIG_EN))) { s_config.pd_options[ESP_PD_DOMAIN_RTC_SLOW_MEM] = ESP_PD_OPTION_ON; }