esp_system: Adds sync of FRC & RTC counters in esp_restart (v4.3)

This commit is contained in:
Konstantin Kondrashov
2021-10-28 17:33:46 +00:00
committed by Zim Kalinowski
parent 534ca101e4
commit 8140b10a16
4 changed files with 118 additions and 2 deletions

View File

@@ -19,6 +19,9 @@
#if CONFIG_ESP_TIME_FUNCS_USE_ESP_TIMER
#include "esp_timer.h"
#include "esp_timer_impl.h"
#include "esp_system.h"
#include "esp_newlib.h"
#include "esp_log.h"
#include "esp_private/startup_internal.h"
@@ -32,6 +35,8 @@
#include "esp32c3/rtc.h"
#endif
__attribute__((unused)) static const char* TAG = "system_time";
// Correction for underlying timer to keep definition
// of system time consistent.
static int64_t s_correction_us = 0;
@@ -39,6 +44,12 @@ static int64_t s_correction_us = 0;
void esp_timer_impl_init_system_time(void)
{
s_correction_us = esp_rtc_get_time_us() - g_startup_time - esp_timer_impl_get_time();
#if defined(CONFIG_ESP_TIME_FUNCS_USE_ESP_TIMER) && defined(CONFIG_ESP_TIME_FUNCS_USE_RTC_TIMER)
esp_err_t err = esp_register_shutdown_handler(esp_sync_counters_rtc_and_frc);
if (err != ESP_OK) {
ESP_LOGW(TAG, "Register shutdown handler failed, err = 0x%x", err);
}
#endif
}
int64_t IRAM_ATTR esp_system_get_time(void)