From 46e8a988aff732cef53c19a2d4375722a9038d52 Mon Sep 17 00:00:00 2001 From: Marek Matej Date: Fri, 21 Jun 2024 13:07:52 +0200 Subject: [PATCH] soc: espressif: esp32: fix SPIRAM allocation Fixing the SPIRAM allocation by moving the output section before tha data is spilled in the generic output section. Signed-off-by: Marek Matej --- soc/espressif/esp32/default.ld | 54 +++++++++++++++++----------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/soc/espressif/esp32/default.ld b/soc/espressif/esp32/default.ld index 7c2892f1e54b..65d9e637d4b2 100644 --- a/soc/espressif/esp32/default.ld +++ b/soc/espressif/esp32/default.ld @@ -660,6 +660,33 @@ SECTIONS _data_end = ABSOLUTE(.); } GROUP_DATA_LINK_IN(RAMABLE_REGION, ROMABLE_REGION) + /* --- SPIRAM BEGIN --- */ + +#ifdef CONFIG_ESP_SPIRAM + .ext_ram.bss (NOLOAD): + { + _ext_ram_data_start = ABSOLUTE(.); + +#ifdef CONFIG_ESP32_WIFI_NET_ALLOC_SPIRAM + *libdrivers__wifi.a:(.noinit .noinit.*) + *libsubsys__net__l2__ethernet.a:(.noinit .noinit.*) + *libsubsys__net__lib__config.a:(.noinit .noinit.*) + *libsubsys__net__ip.a:(.noinit .noinit.*) + *libsubsys__net.a:(.noinit .noinit.*) +#endif /* CONFIG_ESP32_WIFI_NET_ALLOC_SPIRAM */ + + _ext_ram_bss_start = ABSOLUTE(.); + *(.ext_ram.bss*) + _ext_ram_bss_end = ABSOLUTE(.); + _spiram_heap_start = ABSOLUTE(.); + . = . + CONFIG_ESP_SPIRAM_HEAP_SIZE; + + _ext_ram_data_end = ABSOLUTE(.); + } GROUP_LINK_IN(ext_ram_seg) +#endif /* CONFIG_ESP_SPIRAM */ + + /* --- SPIRAM END --- */ + /* Shared RAM */ .dram0.bss (NOLOAD) : { @@ -717,33 +744,6 @@ SECTIONS /* --- DRAM END --- */ - /* --- SPIRAM BEGIN --- */ - -#ifdef CONFIG_ESP_SPIRAM - .ext_ram.bss (NOLOAD): - { - _ext_ram_data_start = ABSOLUTE(.); - -#ifdef CONFIG_ESP32_WIFI_NET_ALLOC_SPIRAM - *libdrivers__wifi.a:(.noinit .noinit.*) - *libsubsys__net__l2__ethernet.a:(.noinit .noinit.*) - *libsubsys__net__lib__config.a:(.noinit .noinit.*) - *libsubsys__net__ip.a:(.noinit .noinit.*) - *libsubsys__net.a:(.noinit .noinit.*) -#endif /* CONFIG_ESP32_WIFI_NET_ALLOC_SPIRAM */ - - _ext_ram_bss_start = ABSOLUTE(.); - *(.ext_ram.bss*) - _ext_ram_bss_end = ABSOLUTE(.); - _spiram_heap_start = ABSOLUTE(.); - . = . + CONFIG_ESP_SPIRAM_HEAP_SIZE; - - _ext_ram_data_end = ABSOLUTE(.); - } GROUP_LINK_IN(ext_ram_seg) -#endif /* CONFIG_ESP_SPIRAM */ - - /* --- SPIRAM END --- */ - /* --- RODATA BEGIN --- */ .flash.rodata_dummy (NOLOAD) :