]> granicus.if.org Git - esp-idf/commitdiff
esp32: Fix wdt settings in esp_restart_noos
authorKonstantin Kondrashov <konstantin@espressif.com>
Thu, 10 Jan 2019 12:17:04 +0000 (20:17 +0800)
committerKonstantin Kondrashov <konstantin@espressif.com>
Tue, 19 Feb 2019 04:43:35 +0000 (12:43 +0800)
Fixed compatibility the new apps with the old bootloaders.

Closes: https://github.com/espressif/esp-idf/issues/2927
components/esp32/system_api.c
components/soc/esp32/rtc_wdt.c
components/soc/include/soc/rtc_wdt.h

index 02993afa7dbadc43ada3a31e8a08419f39cbf534..d9b49183a338c53b21e8e6dca7e724a0e0138d33 100644 (file)
@@ -279,8 +279,7 @@ void IRAM_ATTR esp_restart_noos()
     rtc_wdt_set_length_of_reset_signal(RTC_WDT_SYS_RESET_SIG, RTC_WDT_LENGTH_200ns);
     rtc_wdt_set_length_of_reset_signal(RTC_WDT_CPU_RESET_SIG, RTC_WDT_LENGTH_200ns);
     rtc_wdt_set_time(RTC_WDT_STAGE0, 1000);
-    rtc_wdt_enable();
-    rtc_wdt_protect_on();
+    rtc_wdt_flashboot_mode_enable();
 
     // Reset and stall the other CPU.
     // CPU must be reset before stalling, in case it was running a s32c1i
index 67770709bc7eb28902c5921337c47a86243c8599..1b01ce3046afd8d8e6f19c385c2e45ab757a69f5 100644 (file)
@@ -38,6 +38,11 @@ void rtc_wdt_enable()
     SET_PERI_REG_MASK(RTC_CNTL_WDTCONFIG0_REG, RTC_CNTL_WDT_EN | RTC_CNTL_WDT_PAUSE_IN_SLP);
 }
 
+void rtc_wdt_flashboot_mode_enable()
+{
+    REG_SET_BIT(RTC_CNTL_WDTCONFIG0_REG, RTC_CNTL_WDT_FLASHBOOT_MOD_EN);
+}
+
 void rtc_wdt_disable()
 {
     bool protect = rtc_wdt_get_protect_status();
index ec7175a0029228715dfbda6117e5bbbb59b995df..bdaea942b4d4b245c1e8cc6bf0f673b1e1e2fe41 100644 (file)
@@ -118,6 +118,15 @@ void rtc_wdt_protect_off();
  */
 void rtc_wdt_enable();
 
+/**
+ * @brief Enable the flash boot protection procedure for WDT.
+ *
+ * Do not recommend to use it in the app.
+ * This function was added to be compatibility with the old bootloaders.
+ * This mode is disabled in bootloader or using rtc_wdt_disable() function.
+ */
+void rtc_wdt_flashboot_mode_enable();
+
 /**
  * @brief Disable rtc_wdt.
  */