|
1 | 1 | /* |
2 | | - * SPDX-FileCopyrightText: 2015-2024 Espressif Systems (Shanghai) CO LTD |
| 2 | + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD |
3 | 3 | * |
4 | 4 | * SPDX-License-Identifier: Apache-2.0 |
5 | 5 | */ |
@@ -48,7 +48,12 @@ static const char *TAG = "esp_image"; |
48 | 48 |
|
49 | 49 | #define HASH_LEN ESP_IMAGE_HASH_LEN |
50 | 50 |
|
51 | | -#define SIXTEEN_MB 0x1000000 |
| 51 | +#if SOC_SPI_MEM_SUPPORT_CACHE_32BIT_ADDR_MAP |
| 52 | +#define ESP_IMAGE_MAX_FLASH_ADDR_SIZE UINT32_MAX |
| 53 | +#else |
| 54 | +#define ESP_IMAGE_MAX_FLASH_ADDR_SIZE 0x1000000 |
| 55 | +#endif |
| 56 | + |
52 | 57 | #define ESP_ROM_CHECKSUM_INITIAL 0xEF |
53 | 58 |
|
54 | 59 | /* Headroom to ensure between stack SP (at time of checking) and data loaded from flash */ |
@@ -157,7 +162,7 @@ static esp_err_t image_load(esp_image_load_mode_t mode, const esp_partition_pos_ |
157 | 162 | verify_sha = !is_bootloader(part->offset) && do_verify; |
158 | 163 | #endif |
159 | 164 |
|
160 | | - if (part->size > SIXTEEN_MB) { |
| 165 | + if (part->size > ESP_IMAGE_MAX_FLASH_ADDR_SIZE) { |
161 | 166 | err = ESP_ERR_INVALID_ARG; |
162 | 167 | FAIL_LOAD("partition size 0x%"PRIx32" invalid, larger than 16MB", part->size); |
163 | 168 | } |
@@ -316,7 +321,7 @@ esp_err_t esp_image_verify(esp_image_load_mode_t mode, const esp_partition_pos_t |
316 | 321 | esp_err_t esp_image_get_metadata(const esp_partition_pos_t *part, esp_image_metadata_t *metadata) |
317 | 322 | { |
318 | 323 | esp_err_t err; |
319 | | - if (metadata == NULL || part == NULL || part->size > SIXTEEN_MB) { |
| 324 | + if (metadata == NULL || part == NULL || part->size > ESP_IMAGE_MAX_FLASH_ADDR_SIZE) { |
320 | 325 | return ESP_ERR_INVALID_ARG; |
321 | 326 | } |
322 | 327 |
|
@@ -780,7 +785,7 @@ static esp_err_t process_segment_data(int segment, intptr_t load_addr, uint32_t |
780 | 785 | static esp_err_t verify_segment_header(int index, const esp_image_segment_header_t *segment, uint32_t segment_data_offs, esp_image_metadata_t *metadata, bool silent) |
781 | 786 | { |
782 | 787 | if ((segment->data_len & 3) != 0 |
783 | | - || segment->data_len >= SIXTEEN_MB) { |
| 788 | + || segment->data_len >= ESP_IMAGE_MAX_FLASH_ADDR_SIZE) { |
784 | 789 | if (!silent) { |
785 | 790 | ESP_LOGE(TAG, "invalid segment length 0x%"PRIx32, segment->data_len); |
786 | 791 | } |
|
0 commit comments