diff --git a/main/ota_manager.c b/main/ota_manager.c index 0324b12..c3b837a 100644 --- a/main/ota_manager.c +++ b/main/ota_manager.c @@ -519,6 +519,7 @@ static void ota_download_task(void *arg) esp_https_ota_config_t ota_cfg = { .http_config = &http_cfg, + .bulk_flash_erase = false, }; esp_https_ota_handle_t ota_handle = NULL; @@ -551,7 +552,6 @@ static void ota_download_task(void *arg) } } - int chunk_counter = 0; int last_logged_step = -1; while (1) { if (s_cancel_requested) { @@ -584,10 +584,8 @@ static void ota_download_task(void *arg) } } - /* Yield every 4 chunks (16 KB) to feed the task watchdog without throttling throughput */ - if (++chunk_counter % 4 == 0) { - vTaskDelay(1); - } + /* Yield every chunk to feed the task watchdog and let IDLE/Wi-Fi tasks run smoothly */ + vTaskDelay(pdMS_TO_TICKS(1)); } rfid_manager_pause(false); @@ -657,7 +655,7 @@ esp_err_t ota_manager_start_update_async(void) } set_state(OTA_STATUS_DOWNLOADING, "Starting download..."); BaseType_t ret = xTaskCreatePinnedToCore( - ota_download_task, "ota_update", 8192, NULL, 5, &s_ota_task_handle, 0); + ota_download_task, "ota_update", 10240, NULL, 5, &s_ota_task_handle, 0); if (ret != pdPASS) { set_state(OTA_STATUS_FAILED, "Out of memory"); return ESP_ERR_NO_MEM; diff --git a/sdkconfig b/sdkconfig index 91f0b60..2bf1340 100644 --- a/sdkconfig +++ b/sdkconfig @@ -1148,7 +1148,7 @@ CONFIG_ESP_CONSOLE_UART_NUM=0 CONFIG_ESP_CONSOLE_ROM_SERIAL_PORT_NUM=0 CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200 CONFIG_ESP_INT_WDT=y -CONFIG_ESP_INT_WDT_TIMEOUT_MS=3000 +CONFIG_ESP_INT_WDT_TIMEOUT_MS=8000 # CONFIG_ESP_INT_WDT_CHECK_CPU1 is not set CONFIG_ESP_TASK_WDT_EN=y CONFIG_ESP_TASK_WDT_INIT=y @@ -1921,8 +1921,10 @@ CONFIG_SPI_FLASH_DANGEROUS_WRITE_ABORTS=y # CONFIG_SPI_FLASH_DANGEROUS_WRITE_FAILS is not set # CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED is not set # CONFIG_SPI_FLASH_SHARE_SPI1_BUS is not set -# CONFIG_SPI_FLASH_BYPASS_BLOCK_ERASE is not set -# CONFIG_SPI_FLASH_YIELD_DURING_ERASE is not set +CONFIG_SPI_FLASH_BYPASS_BLOCK_ERASE=y +CONFIG_SPI_FLASH_YIELD_DURING_ERASE=y +CONFIG_SPI_FLASH_ERASE_YIELD_DURATION_MS=20 +CONFIG_SPI_FLASH_ERASE_YIELD_TICKS=2 CONFIG_SPI_FLASH_WRITE_CHUNK_SIZE=8192 # CONFIG_SPI_FLASH_SIZE_OVERRIDE is not set # CONFIG_SPI_FLASH_CHECK_ERASE_TIMEOUT_DISABLED is not set @@ -2539,7 +2541,7 @@ CONFIG_CONSOLE_UART=y CONFIG_CONSOLE_UART_NUM=0 CONFIG_CONSOLE_UART_BAUDRATE=115200 CONFIG_INT_WDT=y -CONFIG_INT_WDT_TIMEOUT_MS=3000 +CONFIG_INT_WDT_TIMEOUT_MS=8000 # CONFIG_INT_WDT_CHECK_CPU1 is not set CONFIG_TASK_WDT=y CONFIG_ESP_TASK_WDT=y diff --git a/sdkconfig.defaults b/sdkconfig.defaults index 1e3d2b3..4d95f29 100644 --- a/sdkconfig.defaults +++ b/sdkconfig.defaults @@ -30,11 +30,13 @@ CONFIG_JD_FASTDECODE_32BIT=y # Flash Chip Driver Configuration CONFIG_SPI_FLASH_SUPPORT_BOYA_CHIP=y -# CONFIG_SPI_FLASH_BYPASS_BLOCK_ERASE is not set -# CONFIG_SPI_FLASH_YIELD_DURING_ERASE is not set +CONFIG_SPI_FLASH_BYPASS_BLOCK_ERASE=y +CONFIG_SPI_FLASH_YIELD_DURING_ERASE=y +CONFIG_SPI_FLASH_ERASE_YIELD_DURATION_MS=20 +CONFIG_SPI_FLASH_ERASE_YIELD_TICKS=2 # Watchdog & Panic Handlers -CONFIG_ESP_INT_WDT_TIMEOUT_MS=3000 +CONFIG_ESP_INT_WDT_TIMEOUT_MS=8000 # CONFIG_ESP_INT_WDT_CHECK_CPU1 is not set CONFIG_ESP_TASK_WDT_TIMEOUT_S=15 CONFIG_ESP_PANIC_HANDLER_IRAM=y