From 046a26af5ca98d4bef9c709d1a1f62104c6f8d4a 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 01a90d217527c9582bfdbfeaa4b988f921862ef9 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)