From ae39c659d036abfe7af993b341f650fb6d5c8d09 Mon Sep 17 00:00:00 2001 From: chenjianqiang Date: Wed, 11 Sep 2019 16:07:15 +0800 Subject: [PATCH] esp32: cpu_start: read binary image header via cache When flash encryption is enabled, reading via cache also decrypts the data, whereas spi_flash_read does not. --- components/esp32/cpu_start.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/components/esp32/cpu_start.c b/components/esp32/cpu_start.c index cd03d0513..87b964943 100644 --- a/components/esp32/cpu_start.c +++ b/components/esp32/cpu_start.c @@ -398,10 +398,13 @@ void start_cpu0_default(void) #endif bootloader_flash_update_id(); -#if !CONFIG_SPIRAM_BOOT_INIT // If psram is uninitialized, we need to improve some flash configuration. - esp_image_header_t fhdr; - const esp_partition_t *partition = esp_ota_get_running_partition(); - spi_flash_read(partition->address, &fhdr, sizeof(esp_image_header_t)); +#if !CONFIG_SPIRAM_BOOT_INIT + // Read the application binary image header. This will also decrypt the header if the image is encrypted. + esp_image_header_t fhdr = {0}; + // This assumes that DROM is the first segment in the application binary, i.e. that we can read + // the binary header through cache by accessing SOC_DROM_LOW address. + memcpy(&fhdr, (void*) SOC_DROM_LOW, sizeof(fhdr)); + // If psram is uninitialized, we need to improve some flash configuration. bootloader_flash_clock_config(&fhdr); bootloader_flash_gpio_config(&fhdr); bootloader_flash_dummy_config(&fhdr);