Skip to content

Commit ffa93ed

Browse files
committed
Merge branch 'bugfix/simple_ota_example_test' into 'master'
ota: fix ota with flash encryption Closes IDFGH-4740, IDFCI-442, and IDFCI-448 See merge request espressif/esp-idf!12412
2 parents cc209d0 + 6fbf614 commit ffa93ed

File tree

5 files changed

+13
-6
lines changed

5 files changed

+13
-6
lines changed

components/spi_flash/esp32/flash_ops_esp32.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ static inline void IRAM_ATTR spi_flash_guard_end(void)
3232
}
3333
}
3434

35+
extern void IRAM_ATTR flash_rom_init(void);
3536
esp_rom_spiflash_result_t IRAM_ATTR spi_flash_write_encrypted_chip(size_t dest_addr, const void *src, size_t size)
3637
{
3738
const uint8_t *ssrc = (const uint8_t *)src;
@@ -73,6 +74,7 @@ esp_rom_spiflash_result_t IRAM_ATTR spi_flash_write_encrypted_chip(size_t dest_a
7374
}
7475

7576
spi_flash_guard_start();
77+
flash_rom_init();
7678
rc = esp_rom_spiflash_write_encrypted(row_addr, (uint32_t *)encrypt_buf, 32);
7779
spi_flash_guard_end();
7880
if (rc != ESP_ROM_SPIFLASH_RESULT_OK) {

components/spi_flash/esp32c3/flash_ops_esp32c3.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ static const char *TAG = "spiflash_c3";
3030
#define SPICACHE SPIMEM0
3131
#define SPIFLASH SPIMEM1
3232

33+
extern void IRAM_ATTR flash_rom_init(void);
3334
esp_rom_spiflash_result_t IRAM_ATTR spi_flash_write_encrypted_chip(size_t dest_addr, const void *src, size_t size)
3435
{
3536
const spi_flash_guard_funcs_t *ops = spi_flash_guard_get();
@@ -69,6 +70,7 @@ esp_rom_spiflash_result_t IRAM_ATTR spi_flash_write_encrypted_chip(size_t dest_a
6970
if (ops && ops->start) {
7071
ops->start();
7172
}
73+
flash_rom_init();
7274
rc = esp_rom_spiflash_write_encrypted(dest_addr, (uint32_t *)src, size);
7375
if (ops && ops->end) {
7476
ops->end();

components/spi_flash/esp32s2/flash_ops_esp32s2.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ static const char *TAG = "spiflash_s2";
3030
#define SPICACHE SPIMEM0
3131
#define SPIFLASH SPIMEM1
3232

33+
extern void IRAM_ATTR flash_rom_init(void);
3334
esp_rom_spiflash_result_t IRAM_ATTR spi_flash_write_encrypted_chip(size_t dest_addr, const void *src, size_t size)
3435
{
3536
const spi_flash_guard_funcs_t *ops = spi_flash_guard_get();
@@ -69,6 +70,7 @@ esp_rom_spiflash_result_t IRAM_ATTR spi_flash_write_encrypted_chip(size_t dest_a
6970
if (ops && ops->start) {
7071
ops->start();
7172
}
73+
flash_rom_init();
7274
rc = SPI_Encrypt_Write(dest_addr, src, size);
7375
if (ops && ops->end) {
7476
ops->end();

components/spi_flash/esp32s3/flash_ops_esp32s3.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ static const char *TAG = "spiflash_s3";
3030
#define SPICACHE SPIMEM0
3131
#define SPIFLASH SPIMEM1
3232

33+
extern void IRAM_ATTR flash_rom_init(void);
3334
esp_rom_spiflash_result_t IRAM_ATTR spi_flash_write_encrypted_chip(size_t dest_addr, const void *src, size_t size)
3435
{
3536
const spi_flash_guard_funcs_t *ops = spi_flash_guard_get();
@@ -68,6 +69,7 @@ esp_rom_spiflash_result_t IRAM_ATTR spi_flash_write_encrypted_chip(size_t dest_a
6869
if (ops && ops->start) {
6970
ops->start();
7071
}
72+
flash_rom_init();
7173
rc = SPI_Encrypt_Write(dest_addr, src, size);
7274
if (ops && ops->end) {
7375
ops->end();

components/spi_flash/flash_ops.c

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -510,10 +510,9 @@ esp_err_t IRAM_ATTR spi_flash_write(size_t dst, const void *srcv, size_t size)
510510
#if !CONFIG_SPI_FLASH_USE_LEGACY_IMPL
511511
extern void spi_common_set_dummy_output(esp_rom_spiflash_read_mode_t mode);
512512
extern void spi_dummy_len_fix(uint8_t spi, uint8_t freqdiv);
513-
static void IRAM_ATTR flash_rom_init(void)
513+
void IRAM_ATTR flash_rom_init(void)
514514
{
515515
uint32_t freqdiv = 0;
516-
esp_rom_spiflash_read_mode_t read_mode;
517516

518517
#if CONFIG_IDF_TARGET_ESP32
519518
uint32_t dummy_bit = 0;
@@ -538,6 +537,8 @@ static void IRAM_ATTR flash_rom_init(void)
538537
freqdiv = 4;
539538
#endif
540539

540+
#if !CONFIG_IDF_TARGET_ESP32S2 && !CONFIG_IDF_TARGET_ESP32
541+
esp_rom_spiflash_read_mode_t read_mode;
541542
#if CONFIG_ESPTOOLPY_FLASHMODE_QIO
542543
read_mode = ESP_ROM_SPIFLASH_QIO_MODE;
543544
#elif CONFIG_ESPTOOLPY_FLASHMODE_QOUT
@@ -547,6 +548,7 @@ static void IRAM_ATTR flash_rom_init(void)
547548
#elif CONFIG_ESPTOOLPY_FLASHMODE_DOUT
548549
read_mode = ESP_ROM_SPIFLASH_DOUT_MODE;
549550
#endif
551+
#endif //!CONFIG_IDF_TARGET_ESP32S2 && !CONFIG_IDF_TARGET_ESP32
550552

551553
#if CONFIG_IDF_TARGET_ESP32
552554
g_rom_spiflash_dummy_len_plus[1] = dummy_bit;
@@ -557,11 +559,10 @@ static void IRAM_ATTR flash_rom_init(void)
557559
#if !CONFIG_IDF_TARGET_ESP32S2 && !CONFIG_IDF_TARGET_ESP32
558560
spi_common_set_dummy_output(read_mode);
559561
#endif //!CONFIG_IDF_TARGET_ESP32S2
560-
esp_rom_spiflash_config_readmode(read_mode);
561562
esp_rom_spiflash_config_clk(freqdiv, 1);
562563
}
563564
#else
564-
static void IRAM_ATTR flash_rom_init(void)
565+
void IRAM_ATTR flash_rom_init(void)
565566
{
566567
return;
567568
}
@@ -570,7 +571,6 @@ static void IRAM_ATTR flash_rom_init(void)
570571
esp_err_t IRAM_ATTR spi_flash_write_encrypted(size_t dest_addr, const void *src, size_t size)
571572
{
572573
esp_err_t err = ESP_OK;
573-
flash_rom_init();
574574
const spi_flash_guard_funcs_t *guard = spi_flash_guard_get();
575575
CHECK_WRITE_ADDRESS(dest_addr, size);
576576
if ((dest_addr % 16) != 0) {
@@ -817,7 +817,6 @@ esp_err_t IRAM_ATTR spi_flash_read(size_t src, void *dstv, size_t size)
817817

818818
esp_err_t IRAM_ATTR spi_flash_read_encrypted(size_t src, void *dstv, size_t size)
819819
{
820-
flash_rom_init();
821820
if (src + size > g_rom_flashchip.chip_size) {
822821
return ESP_ERR_INVALID_SIZE;
823822
}

0 commit comments

Comments
 (0)