flash_encryption: added wdt feed during encryption process to avoid undesired reset.

This commit is contained in:
Felipe Neves 2020-03-30 10:07:16 -03:00
parent 7635dce502
commit b3d8847406
2 changed files with 8 additions and 2 deletions

View file

@ -180,8 +180,7 @@ menu "Bootloader config"
config BOOTLOADER_WDT_TIME_MS
int "Timeout for RTC watchdog (ms)"
depends on BOOTLOADER_WDT_ENABLE
default 9000 if IDF_TARGET_ESP32
default 40000 if IDF_TARGET_ESP32S2
default 9000
range 0 120000
help
Verify that this parameter is correct and more then the execution time.

View file

@ -27,6 +27,7 @@
#include "esp32s2/rom/efuse.h"
#include "esp_efuse.h"
#include "esp_efuse_table.h"
#include "hal/wdt_hal.h"
static const char *TAG = "flash_encrypt";
@ -324,7 +325,13 @@ esp_err_t esp_flash_encrypt_region(uint32_t src_addr, size_t data_length)
return ESP_FAIL;
}
wdt_hal_context_t rtc_wdt_ctx = {.inst = WDT_RWDT, .rwdt_dev = &RTCCNTL};
for (size_t i = 0; i < data_length; i += FLASH_SECTOR_SIZE) {
wdt_hal_write_protect_disable(&rtc_wdt_ctx);
wdt_hal_feed(&rtc_wdt_ctx);
wdt_hal_write_protect_enable(&rtc_wdt_ctx);
uint32_t sec_start = i + src_addr;
err = bootloader_flash_read(sec_start, buf, FLASH_SECTOR_SIZE, false);
if (err != ESP_OK) {