Merge branch 'bugfix/time_jump_after_reboot' into 'master'

esp_hw_support: Fix time jump after reboot

Closes IDFGH-7930

See merge request espressif/esp-idf!20839
pull/9983/head
Konstantin Kondrashov 2022-11-02 15:40:20 +08:00
commit b027332777
1 zmienionych plików z 5 dodań i 1 usunięć

Wyświetl plik

@ -53,7 +53,7 @@ extern uint32_t g_ticks_per_us_app;
static portMUX_TYPE s_esp_rtc_time_lock = portMUX_INITIALIZER_UNLOCKED;
// TODO: IDF-4239
static RTC_DATA_ATTR uint64_t s_esp_rtc_time_us = 0, s_rtc_last_ticks = 0;
static RTC_NOINIT_ATTR uint64_t s_esp_rtc_time_us, s_rtc_last_ticks;
inline static int IRAM_ATTR s_get_cpu_freq_mhz(void)
{
@ -100,6 +100,10 @@ uint64_t esp_rtc_get_time_us(void)
#endif
portENTER_CRITICAL_SAFE(&s_esp_rtc_time_lock);
const uint32_t cal = esp_clk_slowclk_cal_get();
if (cal == 0) {
s_esp_rtc_time_us = 0;
s_rtc_last_ticks = 0;
}
const uint64_t rtc_this_ticks = rtc_time_get();
const uint64_t ticks = rtc_this_ticks - s_rtc_last_ticks;
/* RTC counter result is up to 2^48, calibration factor is up to 2^24,