From: chenjianqiang Date: Wed, 11 Sep 2019 08:40:08 +0000 (+0800) Subject: esp32: cpu_start: read binary image header via cache X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=579cbd82298df8701ff94f4abca8cb0afdd9e634;p=esp-idf 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. --- diff --git a/components/esp32/cpu_start.c b/components/esp32/cpu_start.c index f691abb9e5..a03a310261 100644 --- a/components/esp32/cpu_start.c +++ b/components/esp32/cpu_start.c @@ -433,10 +433,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);