From 209ac93ac23fa13d47323136177f3ed220787fc3 Mon Sep 17 00:00:00 2001 From: Marius Vikhammer Date: Wed, 12 Mar 2025 10:52:07 +0800 Subject: [PATCH 1/2] fix(heap): fixed HEAP_PLACE_FUNCTION_INTO_FLASH disabled if heap impl in ROM --- components/heap/Kconfig | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/components/heap/Kconfig b/components/heap/Kconfig index 723ff3d300..9b310cdd43 100644 --- a/components/heap/Kconfig +++ b/components/heap/Kconfig @@ -121,12 +121,11 @@ menu "Heap memory debugging" config HEAP_PLACE_FUNCTION_INTO_FLASH bool "Force the entire heap component to be placed in flash memory" - depends on !HEAP_TLSF_USE_ROM_IMPL default n help Enable this flag to save up RAM space by placing the heap component in the flash memory Note that it is only safe to enable this configuration if no functions from esp_heap_caps.h - or esp_heap_trace.h are called from ISR. + or esp_heap_trace.h are called from IRAM ISR which runs when cache is disabled. endmenu From cccccd6da838c612ff47ec8137ca1f7458a1a5a5 Mon Sep 17 00:00:00 2001 From: Marius Vikhammer Date: Wed, 12 Mar 2025 11:16:38 +0800 Subject: [PATCH 2/2] fix(newlib): fixed newlib malloc wrappers IRAM/flash placement If HEAP_PLACE_FUNCTION_INTO_FLASH = y then we should also place the newlib wrappers for the heap in to flash. --- components/newlib/newlib.lf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/newlib/newlib.lf b/components/newlib/newlib.lf index 19f0992d3a..1e2782ac7d 100644 --- a/components/newlib/newlib.lf +++ b/components/newlib/newlib.lf @@ -1,7 +1,8 @@ [mapping:newlib] archive: libnewlib.a entries: - heap (noflash) + if HEAP_PLACE_FUNCTION_INTO_FLASH = n: + heap (noflash) abort (noflash) assert (noflash) stdatomic (noflash)