mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
d7b344c97a
Add test configuration to run all tests with heap component in the flash. Add reference to this new configuration in performance section of the documentation.
126 lines
4.9 KiB
Plaintext
126 lines
4.9 KiB
Plaintext
menu "Heap memory debugging"
|
|
|
|
choice HEAP_CORRUPTION_DETECTION
|
|
prompt "Heap corruption detection"
|
|
default HEAP_POISONING_DISABLED
|
|
help
|
|
Enable heap poisoning features to detect heap corruption caused by out-of-bounds access to heap memory.
|
|
|
|
See the "Heap Memory Debugging" page of the IDF documentation
|
|
for a description of each level of heap corruption detection.
|
|
|
|
config HEAP_POISONING_DISABLED
|
|
bool "Basic (no poisoning)"
|
|
config HEAP_POISONING_LIGHT
|
|
bool "Light impact"
|
|
config HEAP_POISONING_COMPREHENSIVE
|
|
bool "Comprehensive"
|
|
endchoice
|
|
|
|
choice HEAP_TRACING_DEST
|
|
bool "Heap tracing"
|
|
default HEAP_TRACING_OFF
|
|
help
|
|
Enables the heap tracing API defined in esp_heap_trace.h.
|
|
|
|
This function causes a moderate increase in IRAM code side and a minor increase in heap function
|
|
(malloc/free/realloc) CPU overhead, even when the tracing feature is not used.
|
|
So it's best to keep it disabled unless tracing is being used.
|
|
|
|
config HEAP_TRACING_OFF
|
|
bool "Disabled"
|
|
config HEAP_TRACING_STANDALONE
|
|
bool "Standalone"
|
|
select HEAP_TRACING
|
|
config HEAP_TRACING_TOHOST
|
|
bool "Host-based"
|
|
select HEAP_TRACING
|
|
endchoice
|
|
|
|
config HEAP_TRACING
|
|
bool
|
|
default F
|
|
help
|
|
Enables/disables heap tracing API.
|
|
|
|
config HEAP_TRACING_STACK_DEPTH
|
|
int "Heap tracing stack depth"
|
|
range 0 0 if IDF_TARGET_ARCH_RISCV # Disabled for RISC-V due to `__builtin_return_address` limitation
|
|
default 0 if IDF_TARGET_ARCH_RISCV
|
|
range 0 10
|
|
default 2
|
|
depends on HEAP_TRACING
|
|
help
|
|
Number of stack frames to save when tracing heap operation callers.
|
|
|
|
More stack frames uses more memory in the heap trace buffer (and slows down allocation), but
|
|
can provide useful information.
|
|
|
|
config HEAP_USE_HOOKS
|
|
bool "Use allocation and free hooks"
|
|
help
|
|
Enable the user to implement function hooks triggered for each successful allocation and free.
|
|
|
|
config HEAP_TASK_TRACKING
|
|
bool "Enable heap task tracking"
|
|
depends on !HEAP_POISONING_DISABLED
|
|
help
|
|
Enables tracking the task responsible for each heap allocation.
|
|
|
|
This function depends on heap poisoning being enabled and adds four more bytes of overhead for each block
|
|
allocated.
|
|
|
|
config HEAP_TRACE_HASH_MAP
|
|
bool "Use hash map mechanism to access heap trace records"
|
|
depends on HEAP_TRACING_STANDALONE
|
|
default n
|
|
help
|
|
Enable this flag to use a hash map to increase performance in handling
|
|
heap trace records.
|
|
|
|
Keeping this as "n" in your project will save RAM and heap memory but will lower
|
|
the performance of the heap trace in adding, retrieving and removing trace records.
|
|
Making this as "y" in your project, you will decrease free RAM and heap memory but,
|
|
the heap trace performances in adding retrieving and removing trace records will be
|
|
enhanced.
|
|
|
|
config HEAP_TRACE_HASH_MAP_SIZE
|
|
int "The number of entries in the hash map"
|
|
depends on HEAP_TRACE_HASH_MAP
|
|
range 1 10000
|
|
default 10
|
|
help
|
|
Defines the number of entries in the heap trace hashmap. The bigger this number is,
|
|
the bigger the hash map will be in the memory. In case the tracing mode is set to
|
|
HEAP_TRACE_ALL, the bigger the hashmap is, the better the performances are.
|
|
|
|
config HEAP_ABORT_WHEN_ALLOCATION_FAILS
|
|
bool "Abort if memory allocation fails"
|
|
default n
|
|
help
|
|
When enabled, if a memory allocation operation fails it will cause a system abort.
|
|
|
|
config HEAP_TLSF_USE_ROM_IMPL
|
|
bool "Use ROM implementation of heap tlsf library"
|
|
depends on ESP_ROM_HAS_HEAP_TLSF
|
|
default y
|
|
help
|
|
Enable this flag to use heap functions from ROM instead of ESP-IDF.
|
|
|
|
If keeping this as "n" in your project, you will have less free IRAM.
|
|
If making this as "y" in your project, you will increase free IRAM,
|
|
but you will lose the possibility to debug this module, and some new
|
|
features will be added and bugs will be fixed in the IDF source
|
|
but cannot be synced to ROM.
|
|
|
|
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.
|
|
endmenu
|