kopia lustrzana https://github.com/espressif/esp-idf
esp32s2: Add USE_FIXED_STATIC_RAM_SIZE feature
This feature exists on ESP32 and missed for ESP32S2. This commit adds it for esp32s2 as well. Closes: IDF-1800pull/5688/head
rodzic
d1bf7a8743
commit
96b3ab708a
|
@ -505,6 +505,25 @@ menu "ESP32S2-specific"
|
||||||
This option allows to place .rtc_data and .rtc_rodata sections into
|
This option allows to place .rtc_data and .rtc_rodata sections into
|
||||||
RTC fast memory segment to free the slow memory region for ULP programs.
|
RTC fast memory segment to free the slow memory region for ULP programs.
|
||||||
|
|
||||||
|
config ESP32S2_USE_FIXED_STATIC_RAM_SIZE
|
||||||
|
bool "Use fixed static RAM size"
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
If this option is disabled, the DRAM part of the heap starts right after the .bss section,
|
||||||
|
within the dram0_0 region. As a result, adding or removing some static variables
|
||||||
|
will change the available heap size.
|
||||||
|
|
||||||
|
If this option is enabled, the DRAM part of the heap starts right after the dram0_0 region,
|
||||||
|
where its length is set with ESP32S2_FIXED_STATIC_RAM_SIZE
|
||||||
|
|
||||||
|
config ESP32S2_FIXED_STATIC_RAM_SIZE
|
||||||
|
hex "Fixed Static RAM size"
|
||||||
|
default 0x10000
|
||||||
|
range 0 0x34000
|
||||||
|
depends on ESP32S2_USE_FIXED_STATIC_RAM_SIZE
|
||||||
|
help
|
||||||
|
RAM size dedicated for static variables (.data & .bss sections).
|
||||||
|
|
||||||
config ESP32S2_ALLOW_RTC_FAST_MEM_AS_HEAP
|
config ESP32S2_ALLOW_RTC_FAST_MEM_AS_HEAP
|
||||||
bool "Enable RTC fast memory for dynamic allocations"
|
bool "Enable RTC fast memory for dynamic allocations"
|
||||||
depends on !ESP32S2_MEMPROT_FEATURE
|
depends on !ESP32S2_MEMPROT_FEATURE
|
||||||
|
|
|
@ -44,6 +44,17 @@
|
||||||
|
|
||||||
#define I_D_RAM_SIZE DATA_RAM_END - DRAM_ORG
|
#define I_D_RAM_SIZE DATA_RAM_END - DRAM_ORG
|
||||||
|
|
||||||
|
#if defined(CONFIG_ESP32S2_USE_FIXED_STATIC_RAM_SIZE)
|
||||||
|
|
||||||
|
ASSERT((CONFIG_ESP32S2_FIXED_STATIC_RAM_SIZE <= I_D_RAM_SIZE),
|
||||||
|
"Fixed static ram data does not fit.")
|
||||||
|
|
||||||
|
#define STATIC_RAM_SIZE CONFIG_ESP32S2_FIXED_STATIC_RAM_SIZE
|
||||||
|
|
||||||
|
#else
|
||||||
|
#define STATIC_RAM_SIZE 0
|
||||||
|
#endif
|
||||||
|
|
||||||
MEMORY
|
MEMORY
|
||||||
{
|
{
|
||||||
/* All these values assume the flash cache is on, and have the blocks this uses subtracted from the length
|
/* All these values assume the flash cache is on, and have the blocks this uses subtracted from the length
|
||||||
|
@ -69,7 +80,7 @@ MEMORY
|
||||||
|
|
||||||
|
|
||||||
/* Shared data RAM, excluding memory reserved for bootloader and ROM bss/data/stack. */
|
/* Shared data RAM, excluding memory reserved for bootloader and ROM bss/data/stack. */
|
||||||
dram0_0_seg (RW) : org = DRAM_ORG, len = I_D_RAM_SIZE
|
dram0_0_seg (RW) : org = DRAM_ORG, len = I_D_RAM_SIZE - STATIC_RAM_SIZE
|
||||||
|
|
||||||
#ifdef CONFIG_APP_BUILD_USE_FLASH_SECTIONS
|
#ifdef CONFIG_APP_BUILD_USE_FLASH_SECTIONS
|
||||||
/* Flash mapped constant data */
|
/* Flash mapped constant data */
|
||||||
|
@ -93,7 +104,12 @@ MEMORY
|
||||||
rtc_data_seg(RW) : org = 0x3ff9e000, len = 0x2000 - ESP_BOOTLOADER_RESERVE_RTC
|
rtc_data_seg(RW) : org = 0x3ff9e000, len = 0x2000 - ESP_BOOTLOADER_RESERVE_RTC
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(CONFIG_ESP32S2_USE_FIXED_STATIC_RAM_SIZE)
|
||||||
|
/* static data ends at defined address */
|
||||||
|
_static_data_end = DRAM_ORG + STATIC_RAM_SIZE;
|
||||||
|
#else
|
||||||
_static_data_end = _bss_end;
|
_static_data_end = _bss_end;
|
||||||
|
#endif
|
||||||
|
|
||||||
_heap_end = 0x40000000;
|
_heap_end = 0x40000000;
|
||||||
|
|
||||||
|
|
|
@ -265,8 +265,6 @@ SECTIONS
|
||||||
|
|
||||||
. = ALIGN (8);
|
. = ALIGN (8);
|
||||||
_bss_end = ABSOLUTE(.);
|
_bss_end = ABSOLUTE(.);
|
||||||
/* The heap starts right after end of this section */
|
|
||||||
_heap_start = ABSOLUTE(.);
|
|
||||||
} > dram0_0_seg
|
} > dram0_0_seg
|
||||||
|
|
||||||
/* When modifying the alignment, update tls_section_alignment in pxPortInitialiseStack */
|
/* When modifying the alignment, update tls_section_alignment in pxPortInitialiseStack */
|
||||||
|
|
Ładowanie…
Reference in New Issue