From dea3d1307a579e56cedf3ab694b5e43c96bf5045 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Phillip=20K=C3=BChne?= Date: Thu, 30 Jan 2025 16:01:41 +0100 Subject: [PATCH] Update ESP32 base load task to have more variety --- .../ESP32_baseline/ESP32_baseline.ino | 52 +++++++++---------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/example/advanced/Power_Measurements/ESP32_baseline/ESP32_baseline.ino b/example/advanced/Power_Measurements/ESP32_baseline/ESP32_baseline.ino index ad1a1cf..f6d8b10 100644 --- a/example/advanced/Power_Measurements/ESP32_baseline/ESP32_baseline.ino +++ b/example/advanced/Power_Measurements/ESP32_baseline/ESP32_baseline.ino @@ -12,32 +12,32 @@ esp_pm_lock_handle_t lightSleepLock; static bool pmLocksCreated = false; -void stress_task0(void *pvParameters) { - // Register ourselves with the task watchdog - if (esp_task_wdt_add(NULL) != ESP_OK) { - Serial.println("Failed to add task 0 to TWDT"); - } - while (1) { +void stress_task(void *pvParameters) { + // Register with task watchdog + ESP_ERROR_CHECK(esp_task_wdt_add(NULL)); + + // Variables for load generation volatile uint32_t x = 0; - for (uint32_t i = 0; i < 10000; i++) { - x += i; + TickType_t last_wake_time = xTaskGetTickCount(); + + while (1) { + // Compute-intensive period + for (uint32_t i = 0; i < 10000; i++) { + x += i; + // Mix in some memory operations + if (i % 100 == 0) { + // Force cache misses occasionally + void* temp = malloc(32); + if (temp) { + free(temp); + } + } + } + + // Reset watchdog + ESP_ERROR_CHECK(esp_task_wdt_reset()); + } - esp_task_wdt_reset(); - } -} - -void stress_task1(void *pvParameters) { - // Register ourselves with the task watchdog - if (esp_task_wdt_add(NULL) != ESP_OK) { - Serial.println("Failed to add task 0 to TWDT"); - } - while (1) { - volatile uint32_t x = 0; - for (uint32_t i = 0; i < 10000; i++) { - x += i; - } - esp_task_wdt_reset(); - } } void setup() { @@ -113,8 +113,8 @@ void loop() { setupAndCleanupSerialPrint("Beginning stress phase\n"); TaskHandle_t core0StressTask = NULL; TaskHandle_t core1StressTask = NULL; - xTaskCreatePinnedToCore(stress_task0, "CPU0Stress", 4096, NULL, 1, &core0StressTask, 0); - xTaskCreatePinnedToCore(stress_task1, "CPU1Stress", 4096, NULL, 1, &core1StressTask, 1); + xTaskCreatePinnedToCore(stress_task, "CPU0Stress", 4096, NULL, 1, &core0StressTask, 0); + xTaskCreatePinnedToCore(stress_task, "CPU1Stress", 4096, NULL, 1, &core1StressTask, 1); vTaskDelay(pdMS_TO_TICKS(cycleTime)); setupAndCleanupSerialPrint("Still alive after waiting cycleTime after setting up stress tasks...\n"); esp_task_wdt_delete(core0StressTask);