Răsfoiți Sursa

Merge branch 'ci/fix_test_switch_ota' into 'master'

fix(app_update): Fix CI test_switch_ota by increasing deepsleep

See merge request espressif/esp-idf!24801
Mahavir Jain 2 ani în urmă
părinte
comite
53ff7d43db

+ 3 - 3
components/app_update/test_apps/main/test_switch_ota.c

@@ -1,5 +1,5 @@
 /*
- * SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD
+ * SPDX-FileCopyrightText: 2021-2023 Espressif Systems (Shanghai) CO LTD
  *
  * SPDX-License-Identifier: Apache-2.0
  */
@@ -185,8 +185,8 @@ static void erase_ota_data(void)
 static void reboot_as_deep_sleep(void)
 {
     ESP_LOGI(TAG, "reboot as deep sleep");
-    esp_sleep_enable_timer_wakeup(2000);
-    esp_deep_sleep_start();
+    esp_deep_sleep(20000);
+    TEST_FAIL_MESSAGE("Should never be reachable except when sleep is rejected, abort");
 }
 
 /* @brief Copies a current app to next partition (OTA0-15), after that ESP is rebooting and run this (the next) OTAx.

+ 11 - 3
components/esp_hw_support/include/esp_sleep.h

@@ -426,9 +426,12 @@ esp_err_t esp_sleep_pd_config(esp_sleep_pd_domain_t domain,
 /**
  * @brief Enter deep sleep with the configured wakeup options
  *
- * This function does not return.
+ * @note In general, the function does not return, but if the sleep is rejected,
+ * then it returns from it.
+ *
+ * The reason for the rejection can be such as a short sleep time.
  */
-void esp_deep_sleep_start(void) __attribute__((__noreturn__));
+void esp_deep_sleep_start(void);
 
 /**
  * @brief Enter light sleep with the configured wakeup options
@@ -452,9 +455,14 @@ esp_err_t esp_light_sleep_start(void);
  * Call to this function is equivalent to a call to esp_deep_sleep_enable_timer_wakeup
  * followed by a call to esp_deep_sleep_start.
  *
+ * @note In general, the function does not return, but if the sleep is rejected,
+ * then it returns from it.
+ *
+ * The reason for the rejection can be such as a short sleep time.
+ *
  * @param time_in_us  deep-sleep time, unit: microsecond
  */
-void esp_deep_sleep(uint64_t time_in_us) __attribute__((__noreturn__));
+void esp_deep_sleep(uint64_t time_in_us);
 
 
 /**

+ 8 - 8
components/esp_hw_support/sleep_modes.c

@@ -884,15 +884,15 @@ void IRAM_ATTR esp_deep_sleep_start(void)
 
     // Enter sleep
     if (esp_sleep_start(force_pd_flags | pd_flags, ESP_SLEEP_MODE_DEEP_SLEEP) == ESP_ERR_SLEEP_REJECT) {
-        ESP_EARLY_LOGW(TAG, "Deep sleep request is rejected");
-    }
-
-    // Because RTC is in a slower clock domain than the CPU, it
-    // can take several CPU cycles for the sleep mode to start.
-    while (1) {
-        ;
+        ESP_EARLY_LOGE(TAG, "Deep sleep request is rejected");
+    } else {
+        // Because RTC is in a slower clock domain than the CPU, it
+        // can take several CPU cycles for the sleep mode to start.
+        while (1) {
+            ;
+        }
     }
-    // Never returns here
+    // Never returns here, except that the sleep is rejected.
     esp_ipc_isr_release_other_cpu();
     portEXIT_CRITICAL(&spinlock_rtc_deep_sleep);
 }

+ 1 - 0
examples/bluetooth/nimble/throughput_app/blecent_throughput/components/cmd_system/cmd_system.c

@@ -225,6 +225,7 @@ static int deep_sleep(int argc, char **argv)
     rtc_gpio_isolate(GPIO_NUM_12);
 #endif
     esp_deep_sleep_start();
+    return 1;
 }
 
 static void register_deep_sleep(void)

+ 1 - 0
examples/system/console/advanced/components/cmd_system/cmd_system_sleep.c

@@ -92,6 +92,7 @@ static int deep_sleep(int argc, char **argv)
 #endif //CONFIG_IDF_TARGET_ESP32
 
     esp_deep_sleep_start();
+    return 1;
 }
 
 static void register_deep_sleep(void)