Merge branch 'fix/flash_encryption_verify_write' into 'master'

fix(spi_flash): Fix flash encryption write verify

Closes IDFGH-14629

See merge request espressif/esp-idf!37356
This commit is contained in:
C.S.M 2025-03-03 15:14:09 +08:00
commit eb5c2485e2
3 changed files with 24 additions and 0 deletions

View File

@ -180,6 +180,8 @@ menu "SPI Flash driver"
back and verified. This can catch hardware problems with SPI flash, or flash which
was not erased before verification.
This will slightly influence the write performance.
config SPI_FLASH_LOG_FAILED_WRITE
bool "Log errors if verification fails"
depends on SPI_FLASH_VERIFY_WRITE

View File

@ -1378,11 +1378,31 @@ esp_err_t esp_flash_write_encrypted(esp_flash_t *chip, uint32_t address, const v
COUNTER_ADD_BYTES(write, encrypt_byte);
#if CONFIG_SPI_FLASH_VERIFY_WRITE
if (lock_once == true) {
err = s_encryption_write_unlock(chip);
if (err != ESP_OK) {
bus_acquired = false;
//Error happens, we end flash operation. Re-enable cache and flush it
goto restore_cache;
}
bus_acquired = false;
}
err = s_verify_write(chip, row_addr, encrypt_byte, (uint32_t *)encrypt_buf, is_encrypted);
if (err != ESP_OK) {
//Error happens, we end flash operation. Re-enable cache and flush it
goto restore_cache;
}
if (lock_once == true) {
err = s_encryption_write_lock(chip);
if (err != ESP_OK) {
bus_acquired = false;
//Error happens, we end flash operation. Re-enable cache and flush it
goto restore_cache;
}
bus_acquired = true;
}
#endif //CONFIG_SPI_FLASH_VERIFY_WRITE
}

View File

@ -11,6 +11,7 @@ from pytest_embedded import Dut
'config',
[
'release',
'verify',
],
indirect=True,
)
@ -38,6 +39,7 @@ def test_flash_encryption_rom_impl(dut: Dut) -> None:
[
'release_f4r8',
'rom_impl',
'verify',
],
indirect=True,
)