From b7fde00aed9238e04113b3d43b45967143985edc 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 f4cefb98b..aa1d1658a 100644 --- a/components/esp32/sleep_modes.c +++ b/components/esp32/sleep_modes.c @@ -607,11 +607,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; }