mirror of
https://github.com/espressif/esp-idf.git
synced 2026-04-27 11:03:11 +00:00
0cba1db0ed
In Log V2, ESP_LOG macros are using the runtime constrained-environment path in esp_log_vprintf() reference esp_rom_vprintf as the fallback formatter. On chips where ets_vprintf is not in ROM (all targets except ESP32-S2 and ESP32-C2), this pulls ~1.2 KB of printf implementation into IRAM. Add a new Kconfig option LOG_API_CONSTRAINED_ENV_SAFE (default y) that controls whether this IRAM-resident fallback is used: Also update the logging and RAM-usage documentation accordingly. Closes https://github.com/espressif/esp-idf/issues/18346
85 lines
3.9 KiB
Plaintext
85 lines
3.9 KiB
Plaintext
menu "Log"
|
|
|
|
choice LOG_VERSION
|
|
prompt "Log version"
|
|
default LOG_VERSION_1
|
|
help
|
|
Select the log version to be used by the ESP log component.
|
|
|
|
- "V1": This version integrates log formatting into the format string provided by the user.
|
|
Logs are processed and formatted during compile time, leading to a larger binary file.
|
|
Example: ESP_LOGI("boot", "chip revision: v%d.%d", major, minor);
|
|
Output: I (56) boot: chip revision: v3.0
|
|
Note: Log strings are stored in Flash with added formatting characters.
|
|
Format string on flash: "[0;32mI (%lu) %s: chip revision: v%d.%d [0m"
|
|
|
|
- "V2": This version centralizes log formatting within the esp_log() function.
|
|
User-supplied format strings are stored without added formatting, reducing binary size.
|
|
Example: ESP_LOGI("boot", "chip revision: v%d.%d", major, minor);
|
|
Output: I (56) boot: chip revision: v3.0
|
|
Note: This version supports runtime configuration of formatting and is more flexible,
|
|
logging from constrained environments (ex.: ISR, Startup, Cache disabled).
|
|
It may consumes a bit more stack and affect performance.
|
|
Format string on flash: "chip revision: v%d.%d"
|
|
|
|
Use V1 for minimal stack usage and simpler implementation.
|
|
Use V2 for smaller binary sizes, more flexible log formatting, and advanced features like disabling
|
|
colors or timestamps.
|
|
|
|
config LOG_VERSION_1
|
|
bool "V1"
|
|
help
|
|
Select this option to use Log V1. Recommended for projects with strict stack constraints
|
|
or that prioritize performance over flexibility.
|
|
|
|
config LOG_VERSION_2
|
|
bool "V2"
|
|
help
|
|
Select this option to use Log V2. Recommended for projects that require smaller binaries,
|
|
runtime log formatting configuration, or advanced logging features.
|
|
endchoice
|
|
|
|
config LOG_VERSION
|
|
int
|
|
default 1 if LOG_VERSION_1
|
|
default 2 if LOG_VERSION_2
|
|
help
|
|
This configuration sets the log version number based on the chosen log version.
|
|
|
|
rsource "./Kconfig.level"
|
|
|
|
rsource "./Kconfig.format"
|
|
|
|
rsource "./Kconfig.settings"
|
|
|
|
config LOG_API_CONSTRAINED_ENV_SAFE
|
|
bool "Enable safe ESP_LOGx fallback in constrained environments (ISR, cache disabled)"
|
|
depends on LOG_VERSION_2 && !ESP_ROM_HAS_VPRINTF_FUNC && !LOG_MODE_BINARY_EN
|
|
default y
|
|
help
|
|
This option is only relevant on chips where ets_vprintf is NOT in ROM
|
|
|
|
When enabled, Log V2 routes ESP_DRAM_LOGx, ESP_EARLY_LOGx, and runtime
|
|
constrained-environment log calls (ISR, cache disabled) through esp_log(),
|
|
which uses esp_rom_vprintf for formatting.
|
|
|
|
When disabled, ESP_DRAM_LOGx and ESP_EARLY_LOGx expand directly
|
|
to esp_rom_printf (a true ROM function with zero IRAM cost), bypassing
|
|
esp_log(). Normal ESP_LOGx calls that happen to run in a constrained
|
|
environment (ISR, cache disabled) will use the standard vprintf function
|
|
instead of esp_rom_vprintf; if the standard vprintf resides in flash,
|
|
such calls may crash. Use ESP_DRAM_LOGx for any logging that must work
|
|
with cache disabled or from an ISR.
|
|
|
|
Disable this option to save ~1.2 KB of IRAM on memory-constrained devices.
|
|
Enable it if you need ESP_LOGx to safely fall back to ROM-based printing
|
|
in ISRs or with cache disabled, or if you need constrained-environment
|
|
logs in binary log format.
|
|
|
|
config LOG_IN_IRAM
|
|
bool "Place logging functions in IRAM" if SPI_FLASH_AUTO_SUSPEND
|
|
default y
|
|
select ESP_ROM_PRINT_IN_IRAM
|
|
|
|
endmenu
|