From 6a7c8d789f562324e4f57ae8e3214ca585435ca5 Mon Sep 17 00:00:00 2001 From: Marek Matej Date: Fri, 21 Jun 2024 17:49:54 +0200 Subject: [PATCH] soc: espressif: Update MCUboot segment size - Fix the build issues with the insufficient memory for the MCUboot. - Fix the sysbuild with MCUboot tests on all ESP32xx SoCs. Signed-off-by: Marek Matej --- soc/espressif/esp32/default.ld | 2 ++ soc/espressif/esp32/memory.h | 4 ++-- soc/espressif/esp32c3/default.ld | 2 ++ soc/espressif/esp32c3/memory.h | 4 ++-- soc/espressif/esp32c6/default.ld | 2 ++ soc/espressif/esp32s2/default.ld | 5 +++-- soc/espressif/esp32s3/default.ld | 2 ++ soc/espressif/esp32s3/memory.h | 4 ++-- 8 files changed, 17 insertions(+), 8 deletions(-) diff --git a/soc/espressif/esp32/default.ld b/soc/espressif/esp32/default.ld index f7f4d1fbe7e..919e8a9ef0f 100644 --- a/soc/espressif/esp32/default.ld +++ b/soc/espressif/esp32/default.ld @@ -848,6 +848,7 @@ SECTIONS _instruction_reserved_start = ABSOLUTE(.); /* This is a symbol marking the flash.text start, this can be used for mmu driver to maintain virtual address */ _text_start = ABSOLUTE(.); __text_region_start = ABSOLUTE(.); + __rom_region_start = ABSOLUTE(.); #ifndef CONFIG_ESP32_WIFI_IRAM_OPT *libnet80211.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.*) @@ -867,6 +868,7 @@ SECTIONS _text_end = ABSOLUTE(.); _instruction_reserved_end = ABSOLUTE(.); /* This is a symbol marking the flash.text end, this can be used for mmu driver to maintain virtual address */ __text_region_end = ABSOLUTE(.); + __rom_region_end = ABSOLUTE(.); _etext = .; } GROUP_DATA_LINK_IN(FLASH_CODE_REGION, ROMABLE_REGION) diff --git a/soc/espressif/esp32/memory.h b/soc/espressif/esp32/memory.h index 7b600f912a6..6f391e5fcb0 100644 --- a/soc/espressif/esp32/memory.h +++ b/soc/espressif/esp32/memory.h @@ -48,9 +48,9 @@ (SRAM1_SIZE - ((addr_dram) - SRAM1_DRAM_START) + SRAM1_IRAM_START) /* For safety margin between bootloader data section and startup stacks */ -#define BOOTLOADER_DRAM_SEG_LEN 0x6400 +#define BOOTLOADER_DRAM_SEG_LEN 0x7a00 #define BOOTLOADER_IRAM_LOADER_SEG_LEN 0x4000 -#define BOOTLOADER_IRAM_SEG_LEN 0x9500 +#define BOOTLOADER_IRAM_SEG_LEN 0xa000 /* Start of the lower region is determined by region size and the end of the higher region */ #define BOOTLOADER_DRAM_SEG_START 0x3fff0000 diff --git a/soc/espressif/esp32c3/default.ld b/soc/espressif/esp32c3/default.ld index bb90758fc9a..cd7308c1593 100644 --- a/soc/espressif/esp32c3/default.ld +++ b/soc/espressif/esp32c3/default.ld @@ -660,6 +660,7 @@ SECTIONS _text_start = ABSOLUTE(.); _instruction_reserved_start = ABSOLUTE(.); __text_region_start = ABSOLUTE(.); + __rom_region_start = ABSOLUTE(.); #if !defined(CONFIG_ESP32_WIFI_IRAM_OPT) *libnet80211.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.*) @@ -691,6 +692,7 @@ SECTIONS _text_end = ABSOLUTE(.); _instruction_reserved_end = ABSOLUTE(.); __text_region_end = ABSOLUTE(.); + __rom_region_end = ABSOLUTE(.); _etext = .; } GROUP_DATA_LINK_IN(FLASH_CODE_REGION, ROMABLE_REGION) diff --git a/soc/espressif/esp32c3/memory.h b/soc/espressif/esp32c3/memory.h index 6d7ec34b300..297735a5f5c 100644 --- a/soc/espressif/esp32c3/memory.h +++ b/soc/espressif/esp32c3/memory.h @@ -41,8 +41,8 @@ /* For safety margin between bootloader data section and startup stacks */ #define BOOTLOADER_STACK_OVERHEAD 0x0 /* These lengths can be adjusted, if necessary: */ -#define BOOTLOADER_DRAM_SEG_LEN 0x9000 -#define BOOTLOADER_IRAM_SEG_LEN 0x9000 +#define BOOTLOADER_DRAM_SEG_LEN 0x9800 +#define BOOTLOADER_IRAM_SEG_LEN 0x9800 #define BOOTLOADER_IRAM_LOADER_SEG_LEN 0x1400 /* Start of the lower region is determined by region size and the end of the higher region */ diff --git a/soc/espressif/esp32c6/default.ld b/soc/espressif/esp32c6/default.ld index 748c50d7d43..a1ec65aa1df 100644 --- a/soc/espressif/esp32c6/default.ld +++ b/soc/espressif/esp32c6/default.ld @@ -661,6 +661,7 @@ SECTIONS _text_start = ABSOLUTE(.); _instruction_reserved_start = ABSOLUTE(.); __text_region_start = ABSOLUTE(.); + __rom_region_start = ABSOLUTE(.); #if !defined(CONFIG_ESP32_WIFI_IRAM_OPT) *libnet80211.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.*) @@ -692,6 +693,7 @@ SECTIONS _text_end = ABSOLUTE(.); _instruction_reserved_end = ABSOLUTE(.); __text_region_end = ABSOLUTE(.); + __rom_region_end = ABSOLUTE(.); _etext = .; } GROUP_DATA_LINK_IN(CACHED_REGION, ROMABLE_REGION) diff --git a/soc/espressif/esp32s2/default.ld b/soc/espressif/esp32s2/default.ld index 6ba2e744a77..8621e65d227 100644 --- a/soc/espressif/esp32s2/default.ld +++ b/soc/espressif/esp32s2/default.ld @@ -814,6 +814,7 @@ SECTIONS _instruction_reserved_start = ABSOLUTE(.); _text_start = ABSOLUTE(.); __text_region_start = ABSOLUTE(.); + __rom_region_start = ABSOLUTE(.); #if !defined(CONFIG_ESP32_WIFI_IRAM_OPT) *libnet80211.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.*) @@ -843,6 +844,7 @@ SECTIONS _text_end = ABSOLUTE(.); _instruction_reserved_end = ABSOLUTE(.); /* This is a symbol marking the flash.text end, this can be used for mmu driver to maintain virtual address */ __text_region_end = ABSOLUTE(.); + __rom_region_end = ABSOLUTE(.); _etext = .; } GROUP_DATA_LINK_IN(FLASH_CODE_REGION, ROMABLE_REGION) @@ -852,8 +854,7 @@ SECTIONS /* --- START OF .rodata --- */ _image_drom_start = LOADADDR(.flash.rodata); - _image_drom_size = LOADADDR(.flash.rodata_end) + SIZEOF(.flash.rodata_end) - _image_drom_start; - _image_drom_size2 = _rodata_end - _rodata_start; + _image_drom_size = LOADADDR(.flash.rodata_end) + SIZEOF(.flash.rodata_end) - _image_drom_start; _image_drom_vaddr = ADDR(.flash.rodata); /* Align next section to 64k to allow mapping */ diff --git a/soc/espressif/esp32s3/default.ld b/soc/espressif/esp32s3/default.ld index 51598e89c04..ada1c12b93e 100644 --- a/soc/espressif/esp32s3/default.ld +++ b/soc/espressif/esp32s3/default.ld @@ -749,6 +749,7 @@ SECTIONS _instruction_reserved_start = ABSOLUTE(.); _text_start = ABSOLUTE(.); __text_region_start = ABSOLUTE(.); + __rom_region_start = ABSOLUTE(.); #if !defined(CONFIG_ESP32_WIFI_IRAM_OPT) *libnet80211.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.*) @@ -777,6 +778,7 @@ SECTIONS _text_end = ABSOLUTE(.); _instruction_reserved_end = ABSOLUTE(.); /* This is a symbol marking the flash.text end, this can be used for mmu driver to maintain virtual address */ __text_region_end = ABSOLUTE(.); + __rom_region_end = ABSOLUTE(.); _etext = .; } GROUP_DATA_LINK_IN(FLASH_CODE_REGION, ROMABLE_REGION) diff --git a/soc/espressif/esp32s3/memory.h b/soc/espressif/esp32s3/memory.h index 4a359c91c80..cd9a0ef984b 100644 --- a/soc/espressif/esp32s3/memory.h +++ b/soc/espressif/esp32s3/memory.h @@ -45,9 +45,9 @@ /* For safety margin between bootloader data section and startup stacks */ #define BOOTLOADER_STACK_OVERHEAD 0x0 -#define BOOTLOADER_DRAM_SEG_LEN 0x6400 +#define BOOTLOADER_DRAM_SEG_LEN 0x8000 #define BOOTLOADER_IRAM_LOADER_SEG_LEN 0x1a00 -#define BOOTLOADER_IRAM_SEG_LEN 0xa000 +#define BOOTLOADER_IRAM_SEG_LEN 0xa800 /* Start of the lower region is determined by region size and the end of the higher region */ #define BOOTLOADER_IRAM_LOADER_SEG_START (BOOTLOADER_USER_DRAM_END - BOOTLOADER_STACK_OVERHEAD + \