From c4a712b0bc74ec5ffe46f4bf77b5592e5cfcfaf8 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Sat, 29 Sep 2018 14:01:35 +0800 Subject: [PATCH] sleep: fix checking length of RTC data sections _rtc_data_{start,end} can now describe data placed into RTC_FAST segment, if CONFIG_ESP32_RTCDATA_IN_FAST_MEM is enabled. Use new _rtc_slow_length symbol instead. --- components/esp32/sleep_modes.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/components/esp32/sleep_modes.c b/components/esp32/sleep_modes.c index 06ee4b259..da4a5f11a 100644 --- a/components/esp32/sleep_modes.c +++ b/components/esp32/sleep_modes.c @@ -637,15 +637,11 @@ static uint32_t get_power_down_flags() // If there is any data placed into .rtc.data or .rtc.bss segments, and // 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, - _rtc_noinit_start, _rtc_noinit_end; + // Labels are defined in the linker script, see esp32.ld. + extern int _rtc_slow_length; 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 || - &_rtc_noinit_end > &_rtc_noinit_start || + ((size_t) &_rtc_slow_length > 0 || (s_config.wakeup_triggers & RTC_ULP_TRIG_EN))) { s_config.pd_options[ESP_PD_DOMAIN_RTC_SLOW_MEM] = ESP_PD_OPTION_ON; }