diff --git a/components/esp_hw_support/sleep_modes.c b/components/esp_hw_support/sleep_modes.c index e6b02e1d22..21bc951e6b 100644 --- a/components/esp_hw_support/sleep_modes.c +++ b/components/esp_hw_support/sleep_modes.c @@ -1639,7 +1639,13 @@ static uint32_t get_power_down_flags(void) return pd_flags; } -void esp_deep_sleep_disable_rom_logging(void) +#if CONFIG_IDF_TARGET_ESP32 +/* APP core of esp32 can't access to RTC FAST MEMORY, do not define it with RTC_IRAM_ATTR */ +void +#else +void RTC_IRAM_ATTR +#endif +esp_deep_sleep_disable_rom_logging(void) { rtc_suppress_rom_log(); } diff --git a/examples/system/deep_sleep_wake_stub/main/rtc_wake_stub_example.c b/examples/system/deep_sleep_wake_stub/main/rtc_wake_stub_example.c index 628af418c1..acb871d846 100644 --- a/examples/system/deep_sleep_wake_stub/main/rtc_wake_stub_example.c +++ b/examples/system/deep_sleep_wake_stub/main/rtc_wake_stub_example.c @@ -6,6 +6,8 @@ #include #include "esp_sleep.h" +#include "esp_cpu.h" +#include "esp_rom_sys.h" #include "esp_wake_stub.h" #include "sdkconfig.h" @@ -33,15 +35,20 @@ static const uint32_t s_max_count = 20; // wakeup_cause stored in RTC memory static uint32_t wakeup_cause; +// wakeup_time from CPU start to wake stub +static uint32_t wakeup_time; + // wake up stub function stored in RTC memory void wake_stub_example(void) { + // Get wakeup time. + wakeup_time = esp_cpu_get_cycle_count() / esp_rom_get_cpu_ticks_per_us(); // Get wakeup cause. wakeup_cause = esp_wake_stub_get_wakeup_cause(); // Increment the counter. s_count++; // Print the counter value and wakeup cause. - ESP_RTC_LOGI("wake stub: wakeup count is %d, wakeup cause is %d", s_count, wakeup_cause); + ESP_RTC_LOGI("wake stub: wakeup count is %d, wakeup cause is %d, wakeup cost %ld us", s_count, wakeup_cause, wakeup_time); if (s_count >= s_max_count) { // Reset s_count