soc: espressif: esp32: improve memory utilization

Move the user_iram_end boundary to allow more statical allocations.

Signed-off-by: Marek Matej <marek.matej@espressif.com>
This commit is contained in:
Marek Matej 2024-06-14 16:51:42 +02:00 committed by Anas Nashif
commit e5de9d2447
2 changed files with 15 additions and 20 deletions

View file

@ -12,23 +12,21 @@
#include "memory.h" #include "memory.h"
/* The "user_iram_end" represents the 2nd stage bootloader /* The "user_iram_end" represents the last DRAM memory location
* "dram_seg" end address (that should not be overlapped). * that is occupied by the ROM code. Since the "iram_loader_seg"
* If no bootloader is used we extend it to gain more user ram. * - which is the last memory the bootloader runs from - resides
* in the SRAM0 "cache" memory, the "user_iram_end" applies for\
* all build cases - Simple boot and the MCUboot application.
*/ */
#ifdef CONFIG_ESP_SIMPLE_BOOT user_iram_end = SRAM1_DRAM_IRAM_CALC(SRAM1_DRAM_USER_START);
user_iram_end = SRAM1_DRAM_IRAM_CALC(SRAM1_DRAM_USABLE_START);
#else
user_iram_end = SRAM1_DRAM_IRAM_CALC(BOOTLOADER_DRAM_SEG_END);
#endif
/* User available SRAM memory segments */ /* User available SRAM memory segments */
user_iram_seg_org = (SRAM0_IRAM_START + SRAM0_CACHE_SIZE); user_iram_seg_org = (SRAM0_IRAM_START + SRAM0_CACHE_SIZE);
user_iram_seg_len = user_iram_end - user_iram_seg_org; user_iram_seg_len = user_iram_end - user_iram_seg_org;
user_dram_seg_org = SRAM2_DRAM_USABLE_START; user_dram_seg_org = SRAM2_DRAM_USER_START;
user_dram_seg_len = SRAM2_USABLE_SIZE; user_dram_seg_len = SRAM2_USER_SIZE;
user_dram_2_seg_org = SRAM1_DRAM_USABLE_START; user_dram_2_seg_org = SRAM1_DRAM_USER_START;
user_dram_2_seg_len = SRAM1_USABLE_SIZE; user_dram_2_seg_len = SRAM1_USER_SIZE;
/* Aliases */ /* Aliases */
#define FLASH_CODE_REGION irom0_0_seg #define FLASH_CODE_REGION irom0_0_seg

View file

@ -14,15 +14,15 @@
#define SRAM1_DRAM_START 0x3ffe0000 #define SRAM1_DRAM_START 0x3ffe0000
#define SRAM1_SIZE 0x20000 #define SRAM1_SIZE 0x20000
#define SRAM1_DRAM_PROAPP_PRIV_SIZE 0x8000 #define SRAM1_DRAM_PROAPP_PRIV_SIZE 0x8000
#define SRAM1_DRAM_USABLE_START 0x3ffe8000 /* Can be optimised - 0x3ffe5230 (?) */ #define SRAM1_DRAM_USER_START 0x3ffe5400
#define SRAM1_USABLE_SIZE (0x40000000 - SRAM1_DRAM_USABLE_START) #define SRAM1_USER_SIZE (0x40000000 - SRAM1_DRAM_USER_START)
/* SRAM2 (200k) data memory */ /* SRAM2 (200k) data memory */
#define SRAM2_DRAM_START 0x3ffae000 #define SRAM2_DRAM_START 0x3ffae000
#define SRAM2_SIZE 0x32000 #define SRAM2_SIZE 0x32000
#define SRAM2_DRAM_SHM_PRIV_SIZE 0x2000 #define SRAM2_DRAM_SHM_PRIV_SIZE 0x2000
#define SRAM2_DRAM_USABLE_START 0x3ffb0000 #define SRAM2_DRAM_USER_START 0x3ffb0000
#define SRAM2_USABLE_SIZE (SRAM1_DRAM_START - SRAM2_DRAM_USABLE_START) #define SRAM2_USER_SIZE (SRAM1_DRAM_START - SRAM2_DRAM_USER_START)
/** Simplified memory map for the bootloader. /** Simplified memory map for the bootloader.
* Make sure the bootloader can load into main memory without overwriting itself. * Make sure the bootloader can load into main memory without overwriting itself.
@ -56,10 +56,7 @@
#define BOOTLOADER_DRAM_SEG_START 0x3fff0000 #define BOOTLOADER_DRAM_SEG_START 0x3fff0000
#define BOOTLOADER_DRAM_SEG_END (BOOTLOADER_DRAM_SEG_START + BOOTLOADER_DRAM_SEG_LEN) #define BOOTLOADER_DRAM_SEG_END (BOOTLOADER_DRAM_SEG_START + BOOTLOADER_DRAM_SEG_LEN)
#define BOOTLOADER_IRAM_LOADER_SEG_START 0x40078000 #define BOOTLOADER_IRAM_LOADER_SEG_START 0x40078000
/* TODO: It should be possible to have this @ 0x40080400 #define BOOTLOADER_IRAM_SEG_START 0x400a0000
* but due a bug we need to use different memory location.
*/
#define BOOTLOADER_IRAM_SEG_START 0x400a0000
/* Flash */ /* Flash */
#ifdef CONFIG_FLASH_SIZE #ifdef CONFIG_FLASH_SIZE