| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446 |
- #
- # For a description of the syntax of this configuration file,
- # see kconfig/kconfig-language.txt.
- #
- mainmenu "Espressif IoT Development Framework Configuration"
- config IDF_CMAKE
- bool
- option env="IDF_CMAKE"
- config IDF_ENV_FPGA
- # This option is for internal use only
- bool
- option env="IDF_ENV_FPGA"
- config IDF_TARGET_ARCH_RISCV
- bool
- default "n"
- config IDF_TARGET_ARCH_XTENSA
- bool
- default "n"
- config IDF_TARGET
- # This option records the IDF target when sdkconfig is generated the first time.
- # It is not updated if environment variable $IDF_TARGET changes later, and
- # the build system is responsible for detecting the mismatch between
- # CONFIG_IDF_TARGET and $IDF_TARGET.
- string
- default "$IDF_TARGET"
- config IDF_TARGET_ESP32
- bool
- default "y" if IDF_TARGET="esp32"
- select IDF_TARGET_ARCH_XTENSA
- config IDF_TARGET_ESP32S2
- bool
- default "y" if IDF_TARGET="esp32s2"
- select FREERTOS_UNICORE
- select IDF_TARGET_ARCH_XTENSA
- config IDF_TARGET_ESP32S3
- bool
- default "y" if IDF_TARGET="esp32s3"
- select IDF_TARGET_ARCH_XTENSA
- config IDF_TARGET_ESP32C3
- bool
- default "y" if IDF_TARGET="esp32c3"
- select FREERTOS_UNICORE
- select IDF_TARGET_ARCH_RISCV
- config IDF_TARGET_ESP32H2
- bool
- default "y" if IDF_TARGET="esp32h2"
- select FREERTOS_UNICORE
- select IDF_TARGET_ARCH_RISCV
- config IDF_TARGET_LINUX
- bool
- default "y" if IDF_TARGET="linux"
- config IDF_FIRMWARE_CHIP_ID
- hex
- default 0x0000 if IDF_TARGET_ESP32
- default 0x0002 if IDF_TARGET_ESP32S2
- default 0x0005 if IDF_TARGET_ESP32C3
- default 0x0009 if IDF_TARGET_ESP32S3
- default 0x000A if IDF_TARGET_ESP32H2 # ESP32H2-TODO: IDF-3475
- default 0xFFFF
- menu "SDK tool configuration"
- config SDK_TOOLPREFIX
- string "Compiler toolchain path/prefix"
- default "xtensa-esp32-elf-" if IDF_TARGET_ESP32
- default "xtensa-esp32s2-elf-" if IDF_TARGET_ESP32S2
- default "xtensa-esp32s3-elf-" if IDF_TARGET_ESP32S3
- default "riscv32-esp-elf-" if IDF_TARGET_ESP32C3
- default "riscv32-esp-elf-" if IDF_TARGET_ESP32H2
- help
- The prefix/path that is used to call the toolchain. The default setting assumes
- a crosstool-ng gcc setup that is in your PATH.
- config SDK_PYTHON
- string "Python interpreter"
- depends on !IDF_CMAKE
- default "python"
- help
- The executable name/path that is used to run python.
- (Note: This option is used with the legacy GNU Make build system only.)
- config SDK_MAKE_WARN_UNDEFINED_VARIABLES
- bool "'make' warns on undefined variables"
- depends on !IDF_CMAKE
- default "y"
- help
- Adds --warn-undefined-variables to MAKEFLAGS. This causes make to
- print a warning any time an undefined variable is referenced.
- This option helps find places where a variable reference is misspelled
- or otherwise missing, but it can be unwanted if you have Makefiles which
- depend on undefined variables expanding to an empty string.
- (Note: this option is used with the legacy GNU Make build system only.)
- config SDK_TOOLCHAIN_SUPPORTS_TIME_WIDE_64_BITS
- bool "Toolchain supports time_t wide 64-bits"
- default n
- help
- Enable this option in case you have a custom toolchain which supports time_t wide 64-bits.
- This option checks time_t is 64-bits and disables ROM time functions
- to use the time functions from the toolchain instead.
- This option allows resolving the Y2K38 problem.
- See "Setup Linux Toolchain from Scratch" to build
- a custom toolchain which supports 64-bits time_t.
- Note: ESP-IDF does not currently come with any pre-compiled toolchain
- that supports 64-bit wide time_t.
- This will change in a future major release,
- but currently 64-bit time_t requires a custom built toolchain.
- endmenu # SDK tool configuration
- menu "Build type"
- choice APP_BUILD_TYPE
- prompt "Application build type"
- default APP_BUILD_TYPE_APP_2NDBOOT
- help
- Select the way the application is built.
- By default, the application is built as a binary file in a format compatible with
- the ESP-IDF bootloader. In addition to this application, 2nd stage bootloader is
- also built. Application and bootloader binaries can be written into flash and
- loaded/executed from there.
- Another option, useful for only very small and limited applications, is to only link
- the .elf file of the application, such that it can be loaded directly into RAM over
- JTAG. Note that since IRAM and DRAM sizes are very limited, it is not possible to
- build any complex application this way. However for kinds of testing and debugging,
- this option may provide faster iterations, since the application does not need to be
- written into flash.
- Note that at the moment, ESP-IDF does not contain all the startup code required to
- initialize the CPUs and ROM memory (data/bss). Therefore it is necessary to execute
- a bit of ROM code prior to executing the application. A gdbinit file may look as follows (for ESP32):
- # Connect to a running instance of OpenOCD
- target remote :3333
- # Reset and halt the target
- mon reset halt
- # Run to a specific point in ROM code,
- # where most of initialization is complete.
- thb *0x40007d54
- c
- # Load the application into RAM
- load
- # Run till app_main
- tb app_main
- c
- Execute this gdbinit file as follows:
- xtensa-esp32-elf-gdb build/app-name.elf -x gdbinit
- Example gdbinit files for other targets can be found in tools/test_apps/system/gdb_loadable_elf/
- Recommended sdkconfig.defaults for building loadable ELF files is as follows.
- CONFIG_APP_BUILD_TYPE_ELF_RAM is required, other options help reduce application
- memory footprint.
- CONFIG_APP_BUILD_TYPE_ELF_RAM=y
- CONFIG_VFS_SUPPORT_TERMIOS=
- CONFIG_NEWLIB_NANO_FORMAT=y
- CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT=y
- CONFIG_ESP_DEBUG_STUBS_ENABLE=
- CONFIG_ESP_ERR_TO_NAME_LOOKUP=
- config APP_BUILD_TYPE_APP_2NDBOOT
- bool
- prompt "Default (binary application + 2nd stage bootloader)"
- select APP_BUILD_GENERATE_BINARIES
- select APP_BUILD_BOOTLOADER
- select APP_BUILD_USE_FLASH_SECTIONS
- config APP_BUILD_TYPE_ELF_RAM
- bool
- prompt "ELF file, loadable into RAM (EXPERIMENTAL))"
- endchoice # APP_BUILD_TYPE
- # Hidden options, set according to the choice above
- config APP_BUILD_GENERATE_BINARIES
- bool # Whether to generate .bin files or not
- config APP_BUILD_BOOTLOADER
- bool # Whether to build the bootloader
- config APP_BUILD_USE_FLASH_SECTIONS
- bool # Whether to place code/data into memory-mapped flash sections
- endmenu # Build type
- source "$COMPONENT_KCONFIGS_PROJBUILD_SOURCE_FILE"
- menu "Compiler options"
- choice COMPILER_OPTIMIZATION
- prompt "Optimization Level"
- default COMPILER_OPTIMIZATION_DEFAULT
- help
- This option sets compiler optimization level (gcc -O argument) for the app.
- - The "Default" setting will add the -0g flag to CFLAGS.
- - The "Size" setting will add the -0s flag to CFLAGS.
- - The "Performance" setting will add the -O2 flag to CFLAGS.
- - The "None" setting will add the -O0 flag to CFLAGS.
- The "Size" setting cause the compiled code to be smaller and faster, but
- may lead to difficulties of correlating code addresses to source file
- lines when debugging.
- The "Performance" setting causes the compiled code to be larger and faster,
- but will be easier to correlated code addresses to source file lines.
- "None" with -O0 produces compiled code without optimization.
- Note that custom optimization levels may be unsupported.
- Compiler optimization for the IDF bootloader is set separately,
- see the BOOTLOADER_COMPILER_OPTIMIZATION setting.
- config COMPILER_OPTIMIZATION_DEFAULT
- bool "Debug (-Og)"
- config COMPILER_OPTIMIZATION_SIZE
- bool "Optimize for size (-Os)"
- config COMPILER_OPTIMIZATION_PERF
- bool "Optimize for performance (-O2)"
- config COMPILER_OPTIMIZATION_NONE
- bool "Debug without optimization (-O0)"
- endchoice
- choice COMPILER_OPTIMIZATION_ASSERTION_LEVEL
- prompt "Assertion level"
- default COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE
- help
- Assertions can be:
- - Enabled. Failure will print verbose assertion details. This is the default.
- - Set to "silent" to save code size (failed assertions will abort() but user
- needs to use the aborting address to find the line number with the failed assertion.)
- - Disabled entirely (not recommended for most configurations.) -DNDEBUG is added
- to CPPFLAGS in this case.
- config COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE
- prompt "Enabled"
- bool
- help
- Enable assertions. Assertion content and line number will be printed on failure.
- config COMPILER_OPTIMIZATION_ASSERTIONS_SILENT
- prompt "Silent (saves code size)"
- bool
- help
- Enable silent assertions. Failed assertions will abort(), user needs to
- use the aborting address to find the line number with the failed assertion.
- config COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE
- prompt "Disabled (sets -DNDEBUG)"
- bool
- help
- If assertions are disabled, -DNDEBUG is added to CPPFLAGS.
- endchoice # assertions
- config COMPILER_OPTIMIZATION_ASSERTION_LEVEL
- int
- default 0 if COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE
- default 1 if COMPILER_OPTIMIZATION_ASSERTIONS_SILENT
- default 2 if COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE
- config COMPILER_OPTIMIZATION_CHECKS_SILENT
- bool "Disable messages in ESP_RETURN_ON_* and ESP_EXIT_ON_* macros"
- default n
- help
- If enabled, the error messages will be discarded in following check macros:
- - ESP_RETURN_ON_ERROR
- - ESP_EXIT_ON_ERROR
- - ESP_RETURN_ON_FALSE
- - ESP_EXIT_ON_FALSE
- menuconfig COMPILER_HIDE_PATHS_MACROS
- bool "Replace ESP-IDF and project paths in binaries"
- default y
- depends on IDF_CMAKE
- help
- When expanding the __FILE__ and __BASE_FILE__ macros, replace paths inside ESP-IDF
- with paths relative to the placeholder string "IDF", and convert paths inside the
- project directory to relative paths.
- This allows building the project with assertions or other code that embeds file paths,
- without the binary containing the exact path to the IDF or project directories.
- This option passes -fmacro-prefix-map options to the GCC command line. To replace additional
- paths in your binaries, modify the project CMakeLists.txt file to pass custom -fmacro-prefix-map or
- -ffile-prefix-map arguments.
- menuconfig COMPILER_CXX_EXCEPTIONS
- bool "Enable C++ exceptions"
- default n
- help
- Enabling this option compiles all IDF C++ files with exception support enabled.
- Disabling this option disables C++ exception support in all compiled files, and any libstdc++ code
- which throws an exception will abort instead.
- Enabling this option currently adds an additional ~500 bytes of heap overhead
- when an exception is thrown in user code for the first time.
- config COMPILER_CXX_EXCEPTIONS_EMG_POOL_SIZE
- int "Emergency Pool Size"
- default 0
- depends on COMPILER_CXX_EXCEPTIONS
- help
- Size (in bytes) of the emergency memory pool for C++ exceptions. This pool will be used to allocate
- memory for thrown exceptions when there is not enough memory on the heap.
- config COMPILER_CXX_RTTI
- bool "Enable C++ run-time type info (RTTI)"
- default n
- help
- Enabling this option compiles all C++ files with RTTI support enabled.
- This increases binary size (typically by tens of kB) but allows using
- dynamic_cast conversion and typeid operator.
- choice COMPILER_STACK_CHECK_MODE
- prompt "Stack smashing protection mode"
- default COMPILER_STACK_CHECK_MODE_NONE
- help
- Stack smashing protection mode. Emit extra code to check for buffer overflows, such as stack
- smashing attacks. This is done by adding a guard variable to functions with vulnerable objects.
- The guards are initialized when a function is entered and then checked when the function exits.
- If a guard check fails, program is halted. Protection has the following modes:
- - In NORMAL mode (GCC flag: -fstack-protector) only functions that call alloca, and functions with
- buffers larger than 8 bytes are protected.
- - STRONG mode (GCC flag: -fstack-protector-strong) is like NORMAL, but includes additional functions
- to be protected -- those that have local array definitions, or have references to local frame
- addresses.
- - In OVERALL mode (GCC flag: -fstack-protector-all) all functions are protected.
- Modes have the following impact on code performance and coverage:
- - performance: NORMAL > STRONG > OVERALL
- - coverage: NORMAL < STRONG < OVERALL
- The performance impact includes increasing the amount of stack memory required for each task.
- config COMPILER_STACK_CHECK_MODE_NONE
- bool "None"
- config COMPILER_STACK_CHECK_MODE_NORM
- bool "Normal"
- config COMPILER_STACK_CHECK_MODE_STRONG
- bool "Strong"
- config COMPILER_STACK_CHECK_MODE_ALL
- bool "Overall"
- endchoice
- config COMPILER_STACK_CHECK
- bool
- default !COMPILER_STACK_CHECK_MODE_NONE
- help
- Stack smashing protection.
- config COMPILER_WARN_WRITE_STRINGS
- bool "Enable -Wwrite-strings warning flag"
- default "n"
- help
- Adds -Wwrite-strings flag for the C/C++ compilers.
- For C, this gives string constants the type ``const char[]`` so that
- copying the address of one into a non-const ``char *`` pointer
- produces a warning. This warning helps to find at compile time code
- that tries to write into a string constant.
- For C++, this warns about the deprecated conversion from string
- literals to ``char *``.
- config COMPILER_SAVE_RESTORE_LIBCALLS
- bool "Enable -msave-restore flag to reduce code size"
- depends on IDF_TARGET_ARCH_RISCV
- help
- Adds -msave-restore to C/C++ compilation flags.
- When this flag is enabled, compiler will call library functions to
- save/restore registers in function prologues/epilogues. This results
- in lower overall code size, at the expense of slightly reduced performance.
- This option can be enabled for RISC-V targets only.
- config COMPILER_DISABLE_GCC8_WARNINGS
- bool "Disable new warnings introduced in GCC 6 - 8"
- default "n"
- help
- Enable this option if using GCC 6 or newer, and wanting to disable warnings which don't appear with
- GCC 5.
- config COMPILER_DUMP_RTL_FILES
- bool "Dump RTL files during compilation"
- help
- If enabled, RTL files will be produced during compilation. These files
- can be used by other tools, for example to calculate call graphs.
- endmenu # Compiler Options
- menu "Component config"
- source "$COMPONENT_KCONFIGS_SOURCE_FILE"
- endmenu
- menu "Compatibility options"
- config LEGACY_INCLUDE_COMMON_HEADERS
- bool "Include headers across components as before IDF v4.0"
- default n
- help
- Soc, esp32, and driver components, the most common
- components. Some header of these components are included
- implicitly by headers of other components before IDF v4.0.
- It's not required for high-level components, but still
- included through long header chain everywhere.
- This is harmful to the modularity. So it's changed in IDF
- v4.0.
- You can still include these headers in a legacy way until it
- is totally deprecated by enable this option.
- endmenu #Compatibility options
|