Kconfig 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490
  1. #
  2. # Please run the following command for opening a page with more information about this configuration file:
  3. # idf.py docs -sp api-reference/kconfig.html
  4. #
  5. mainmenu "Espressif IoT Development Framework Configuration"
  6. orsource "./components/soc/$IDF_TARGET/include/soc/Kconfig.soc_caps.in"
  7. config IDF_CMAKE
  8. bool
  9. default "y"
  10. config IDF_ENV_FPGA
  11. # This option is for internal use only
  12. bool
  13. default "y" if IDF_TARGET_ESP32C6 # TODO: IDF-5630
  14. option env="IDF_ENV_FPGA"
  15. config IDF_TARGET_ARCH_RISCV
  16. bool
  17. default "n"
  18. config IDF_TARGET_ARCH_XTENSA
  19. bool
  20. default "n"
  21. config IDF_TARGET_ARCH
  22. string
  23. default "riscv" if IDF_TARGET_ARCH_RISCV
  24. default "xtensa" if IDF_TARGET_ARCH_XTENSA
  25. config IDF_TARGET
  26. # This option records the IDF target when sdkconfig is generated the first time.
  27. # It is not updated if environment variable $IDF_TARGET changes later, and
  28. # the build system is responsible for detecting the mismatch between
  29. # CONFIG_IDF_TARGET and $IDF_TARGET.
  30. string
  31. default "$IDF_TARGET"
  32. config IDF_TARGET_LINUX
  33. bool
  34. default "y" if IDF_TARGET="linux"
  35. config IDF_TARGET_ESP32
  36. bool
  37. default "y" if IDF_TARGET="esp32"
  38. select IDF_TARGET_ARCH_XTENSA
  39. config IDF_TARGET_ESP32S2
  40. bool
  41. default "y" if IDF_TARGET="esp32s2"
  42. select FREERTOS_UNICORE
  43. select IDF_TARGET_ARCH_XTENSA
  44. config IDF_TARGET_ESP32S3
  45. bool
  46. default "y" if IDF_TARGET="esp32s3"
  47. select IDF_TARGET_ARCH_XTENSA
  48. config IDF_TARGET_ESP32C3
  49. bool
  50. default "y" if IDF_TARGET="esp32c3"
  51. select FREERTOS_UNICORE
  52. select IDF_TARGET_ARCH_RISCV
  53. config IDF_TARGET_ESP32H2
  54. bool
  55. default "y" if IDF_TARGET="esp32h2"
  56. select FREERTOS_UNICORE
  57. select IDF_TARGET_ARCH_RISCV
  58. choice IDF_TARGET_ESP32H2_BETA_VERSION
  59. prompt "ESP32-H2 beta version"
  60. depends on IDF_TARGET_ESP32H2
  61. default IDF_TARGET_ESP32H2_BETA_VERSION_2
  62. help
  63. Currently ESP32-H2 has several beta versions for internal use only.
  64. Select the one that matches your chip model.
  65. config IDF_TARGET_ESP32H2_BETA_VERSION_1
  66. bool
  67. prompt "ESP32-H2 beta1"
  68. config IDF_TARGET_ESP32H2_BETA_VERSION_2
  69. bool
  70. prompt "ESP32-H2 beta2"
  71. endchoice
  72. config IDF_TARGET_ESP32C2
  73. bool
  74. default "y" if IDF_TARGET="esp32c2"
  75. select FREERTOS_UNICORE
  76. select IDF_TARGET_ARCH_RISCV
  77. config IDF_TARGET_ESP32C6
  78. bool
  79. default "y" if IDF_TARGET="esp32c6"
  80. select FREERTOS_UNICORE
  81. select IDF_TARGET_ARCH_RISCV
  82. config IDF_TARGET_LINUX
  83. bool
  84. default "y" if IDF_TARGET="linux"
  85. config IDF_RTOS_RTTHREAD
  86. bool "RT-THREAD SELECT"
  87. default "n"
  88. config IDF_FIRMWARE_CHIP_ID
  89. hex
  90. default 0x0000 if IDF_TARGET_ESP32
  91. default 0x0002 if IDF_TARGET_ESP32S2
  92. default 0x0005 if IDF_TARGET_ESP32C3
  93. default 0x0009 if IDF_TARGET_ESP32S3
  94. default 0x000A if IDF_TARGET_ESP32H2_BETA_VERSION_1
  95. default 0x000C if IDF_TARGET_ESP32C2
  96. default 0x000D if IDF_TARGET_ESP32C6
  97. default 0x000E if IDF_TARGET_ESP32H2_BETA_VERSION_2 # ESP32H2-TODO: IDF-3475
  98. default 0xFFFF
  99. menu "Build type"
  100. choice APP_BUILD_TYPE
  101. prompt "Application build type"
  102. default APP_BUILD_TYPE_APP_2NDBOOT
  103. help
  104. Select the way the application is built.
  105. By default, the application is built as a binary file in a format compatible with
  106. the ESP-IDF bootloader. In addition to this application, 2nd stage bootloader is
  107. also built. Application and bootloader binaries can be written into flash and
  108. loaded/executed from there.
  109. Another option, useful for only very small and limited applications, is to only link
  110. the .elf file of the application, such that it can be loaded directly into RAM over
  111. JTAG. Note that since IRAM and DRAM sizes are very limited, it is not possible to
  112. build any complex application this way. However for kinds of testing and debugging,
  113. this option may provide faster iterations, since the application does not need to be
  114. written into flash.
  115. Note that at the moment, ESP-IDF does not contain all the startup code required to
  116. initialize the CPUs and ROM memory (data/bss). Therefore it is necessary to execute
  117. a bit of ROM code prior to executing the application. A gdbinit file may look as follows (for ESP32):
  118. # Connect to a running instance of OpenOCD
  119. target remote :3333
  120. # Reset and halt the target
  121. mon reset halt
  122. # Run to a specific point in ROM code,
  123. # where most of initialization is complete.
  124. thb *0x40007d54
  125. c
  126. # Load the application into RAM
  127. load
  128. # Run till app_main
  129. tb app_main
  130. c
  131. Execute this gdbinit file as follows:
  132. xtensa-esp32-elf-gdb build/app-name.elf -x gdbinit
  133. Example gdbinit files for other targets can be found in tools/test_apps/system/gdb_loadable_elf/
  134. Recommended sdkconfig.defaults for building loadable ELF files is as follows.
  135. CONFIG_APP_BUILD_TYPE_ELF_RAM is required, other options help reduce application
  136. memory footprint.
  137. CONFIG_APP_BUILD_TYPE_ELF_RAM=y
  138. CONFIG_VFS_SUPPORT_TERMIOS=
  139. CONFIG_NEWLIB_NANO_FORMAT=y
  140. CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT=y
  141. CONFIG_ESP_DEBUG_STUBS_ENABLE=
  142. CONFIG_ESP_ERR_TO_NAME_LOOKUP=
  143. config APP_BUILD_TYPE_APP_2NDBOOT
  144. bool
  145. prompt "Default (binary application + 2nd stage bootloader)"
  146. depends on !IDF_TARGET_LINUX
  147. select APP_BUILD_GENERATE_BINARIES
  148. select APP_BUILD_BOOTLOADER
  149. select APP_BUILD_USE_FLASH_SECTIONS
  150. config APP_BUILD_TYPE_ELF_RAM
  151. bool
  152. prompt "ELF file, loadable into RAM (EXPERIMENTAL))"
  153. endchoice # APP_BUILD_TYPE
  154. # Hidden options, set according to the choice above
  155. config APP_BUILD_GENERATE_BINARIES
  156. bool # Whether to generate .bin files or not
  157. config APP_BUILD_BOOTLOADER
  158. bool # Whether to build the bootloader
  159. config APP_BUILD_USE_FLASH_SECTIONS
  160. bool # Whether to place code/data into memory-mapped flash sections
  161. config APP_REPRODUCIBLE_BUILD
  162. bool "Enable reproducible build"
  163. default n
  164. select COMPILER_HIDE_PATHS_MACROS
  165. help
  166. If enabled, all date, time, and path information would be eliminated. A .gdbinit file would be create
  167. automatically. (or will be append if you have one already)
  168. config APP_NO_BLOBS
  169. bool "No Binary Blobs"
  170. default n
  171. help
  172. If enabled, this disables the linking of binary libraries in the application build. Note
  173. that after enabling this Wi-Fi/Bluetooth will not work.
  174. config APP_COMPATIBLE_PRE_V2_1_BOOTLOADERS
  175. bool "App compatible with bootloaders before ESP-IDF v2.1"
  176. select APP_COMPATIBLE_PRE_V3_1_BOOTLOADERS
  177. depends on IDF_TARGET_ESP32
  178. default n
  179. help
  180. Bootloaders before ESP-IDF v2.1 did less initialisation of the
  181. system clock. This setting needs to be enabled to build an app
  182. which can be booted by these older bootloaders.
  183. If this setting is enabled, the app can be booted by any bootloader
  184. from IDF v1.0 up to the current version.
  185. If this setting is disabled, the app can only be booted by bootloaders
  186. from IDF v2.1 or newer.
  187. Enabling this setting adds approximately 1KB to the app's IRAM usage.
  188. config APP_COMPATIBLE_PRE_V3_1_BOOTLOADERS
  189. bool "App compatible with bootloader and partition table before ESP-IDF v3.1"
  190. depends on IDF_TARGET_ESP32
  191. default n
  192. help
  193. Partition tables before ESP-IDF V3.1 do not contain an MD5 checksum
  194. field, and the bootloader before ESP-IDF v3.1 cannot read a partition
  195. table that contains an MD5 checksum field.
  196. Enable this option only if your app needs to boot on a bootloader and/or
  197. partition table that was generated from a version *before* ESP-IDF v3.1.
  198. If this option and Flash Encryption are enabled at the same time, and any
  199. data partitions in the partition table are marked Encrypted, then the
  200. partition encrypted flag should be manually verified in the app before accessing
  201. the partition (see CVE-2021-27926).
  202. config APP_INIT_CLK
  203. bool
  204. depends on IDF_TARGET_ESP32
  205. default y if APP_COMPATIBLE_PRE_V2_1_BOOTLOADERS
  206. default y if APP_BUILD_TYPE_ELF_RAM
  207. endmenu # Build type
  208. source "$COMPONENT_KCONFIGS_PROJBUILD_SOURCE_FILE"
  209. menu "Compiler options"
  210. choice COMPILER_OPTIMIZATION
  211. prompt "Optimization Level"
  212. default COMPILER_OPTIMIZATION_DEFAULT
  213. help
  214. This option sets compiler optimization level (gcc -O argument) for the app.
  215. - The "Default" setting will add the -0g flag to CFLAGS.
  216. - The "Size" setting will add the -0s flag to CFLAGS.
  217. - The "Performance" setting will add the -O2 flag to CFLAGS.
  218. - The "None" setting will add the -O0 flag to CFLAGS.
  219. The "Size" setting cause the compiled code to be smaller and faster, but
  220. may lead to difficulties of correlating code addresses to source file
  221. lines when debugging.
  222. The "Performance" setting causes the compiled code to be larger and faster,
  223. but will be easier to correlated code addresses to source file lines.
  224. "None" with -O0 produces compiled code without optimization.
  225. Note that custom optimization levels may be unsupported.
  226. Compiler optimization for the IDF bootloader is set separately,
  227. see the BOOTLOADER_COMPILER_OPTIMIZATION setting.
  228. config COMPILER_OPTIMIZATION_DEFAULT
  229. bool "Debug (-Og)"
  230. config COMPILER_OPTIMIZATION_SIZE
  231. bool "Optimize for size (-Os)"
  232. config COMPILER_OPTIMIZATION_PERF
  233. bool "Optimize for performance (-O2)"
  234. config COMPILER_OPTIMIZATION_NONE
  235. bool "Debug without optimization (-O0)"
  236. endchoice
  237. choice COMPILER_OPTIMIZATION_ASSERTION_LEVEL
  238. prompt "Assertion level"
  239. default COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE
  240. help
  241. Assertions can be:
  242. - Enabled. Failure will print verbose assertion details. This is the default.
  243. - Set to "silent" to save code size (failed assertions will abort() but user
  244. needs to use the aborting address to find the line number with the failed assertion.)
  245. - Disabled entirely (not recommended for most configurations.) -DNDEBUG is added
  246. to CPPFLAGS in this case.
  247. config COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE
  248. prompt "Enabled"
  249. bool
  250. help
  251. Enable assertions. Assertion content and line number will be printed on failure.
  252. config COMPILER_OPTIMIZATION_ASSERTIONS_SILENT
  253. prompt "Silent (saves code size)"
  254. bool
  255. help
  256. Enable silent assertions. Failed assertions will abort(), user needs to
  257. use the aborting address to find the line number with the failed assertion.
  258. config COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE
  259. prompt "Disabled (sets -DNDEBUG)"
  260. bool
  261. help
  262. If assertions are disabled, -DNDEBUG is added to CPPFLAGS.
  263. endchoice # assertions
  264. choice COMPILER_FLOAT_LIB_FROM
  265. prompt "Compiler float lib source"
  266. default COMPILER_FLOAT_LIB_FROM_RVFPLIB if ESP_ROM_HAS_RVFPLIB
  267. default COMPILER_FLOAT_LIB_FROM_GCCLIB
  268. help
  269. In the soft-fp part of libgcc, riscv version is written in C,
  270. and handles all edge cases in IEEE754, which makes it larger
  271. and performance is slow.
  272. RVfplib is an optimized RISC-V library for FP arithmetic on 32-bit
  273. integer processors, for single and double-precision FP.
  274. RVfplib is "fast", but it has a few exceptions from IEEE 754 compliance.
  275. config COMPILER_FLOAT_LIB_FROM_GCCLIB
  276. bool "libgcc"
  277. config COMPILER_FLOAT_LIB_FROM_RVFPLIB
  278. depends on ESP_ROM_HAS_RVFPLIB
  279. bool "librvfp"
  280. endchoice # COMPILER_FLOAT_LIB_FROM
  281. config COMPILER_OPTIMIZATION_ASSERTION_LEVEL
  282. int
  283. default 0 if COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE
  284. default 1 if COMPILER_OPTIMIZATION_ASSERTIONS_SILENT
  285. default 2 if COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE
  286. config COMPILER_OPTIMIZATION_CHECKS_SILENT
  287. bool "Disable messages in ESP_RETURN_ON_* and ESP_EXIT_ON_* macros"
  288. default n
  289. help
  290. If enabled, the error messages will be discarded in following check macros:
  291. - ESP_RETURN_ON_ERROR
  292. - ESP_EXIT_ON_ERROR
  293. - ESP_RETURN_ON_FALSE
  294. - ESP_EXIT_ON_FALSE
  295. menuconfig COMPILER_HIDE_PATHS_MACROS
  296. bool "Replace ESP-IDF and project paths in binaries"
  297. default y
  298. help
  299. When expanding the __FILE__ and __BASE_FILE__ macros, replace paths inside ESP-IDF
  300. with paths relative to the placeholder string "IDF", and convert paths inside the
  301. project directory to relative paths.
  302. This allows building the project with assertions or other code that embeds file paths,
  303. without the binary containing the exact path to the IDF or project directories.
  304. This option passes -fmacro-prefix-map options to the GCC command line. To replace additional
  305. paths in your binaries, modify the project CMakeLists.txt file to pass custom -fmacro-prefix-map or
  306. -ffile-prefix-map arguments.
  307. menuconfig COMPILER_CXX_EXCEPTIONS
  308. bool "Enable C++ exceptions"
  309. default n
  310. help
  311. Enabling this option compiles all IDF C++ files with exception support enabled.
  312. Disabling this option disables C++ exception support in all compiled files, and any libstdc++ code
  313. which throws an exception will abort instead.
  314. Enabling this option currently adds an additional ~500 bytes of heap overhead
  315. when an exception is thrown in user code for the first time.
  316. config COMPILER_CXX_EXCEPTIONS_EMG_POOL_SIZE
  317. int "Emergency Pool Size"
  318. default 0
  319. depends on COMPILER_CXX_EXCEPTIONS
  320. help
  321. Size (in bytes) of the emergency memory pool for C++ exceptions. This pool will be used to allocate
  322. memory for thrown exceptions when there is not enough memory on the heap.
  323. config COMPILER_CXX_RTTI
  324. bool "Enable C++ run-time type info (RTTI)"
  325. default n
  326. help
  327. Enabling this option compiles all C++ files with RTTI support enabled.
  328. This increases binary size (typically by tens of kB) but allows using
  329. dynamic_cast conversion and typeid operator.
  330. choice COMPILER_STACK_CHECK_MODE
  331. prompt "Stack smashing protection mode"
  332. default COMPILER_STACK_CHECK_MODE_NONE
  333. help
  334. Stack smashing protection mode. Emit extra code to check for buffer overflows, such as stack
  335. smashing attacks. This is done by adding a guard variable to functions with vulnerable objects.
  336. The guards are initialized when a function is entered and then checked when the function exits.
  337. If a guard check fails, program is halted. Protection has the following modes:
  338. - In NORMAL mode (GCC flag: -fstack-protector) only functions that call alloca, and functions with
  339. buffers larger than 8 bytes are protected.
  340. - STRONG mode (GCC flag: -fstack-protector-strong) is like NORMAL, but includes additional functions
  341. to be protected -- those that have local array definitions, or have references to local frame
  342. addresses.
  343. - In OVERALL mode (GCC flag: -fstack-protector-all) all functions are protected.
  344. Modes have the following impact on code performance and coverage:
  345. - performance: NORMAL > STRONG > OVERALL
  346. - coverage: NORMAL < STRONG < OVERALL
  347. The performance impact includes increasing the amount of stack memory required for each task.
  348. config COMPILER_STACK_CHECK_MODE_NONE
  349. bool "None"
  350. config COMPILER_STACK_CHECK_MODE_NORM
  351. bool "Normal"
  352. config COMPILER_STACK_CHECK_MODE_STRONG
  353. bool "Strong"
  354. config COMPILER_STACK_CHECK_MODE_ALL
  355. bool "Overall"
  356. endchoice
  357. config COMPILER_STACK_CHECK
  358. bool
  359. default !COMPILER_STACK_CHECK_MODE_NONE
  360. help
  361. Stack smashing protection.
  362. config COMPILER_WARN_WRITE_STRINGS
  363. bool "Enable -Wwrite-strings warning flag"
  364. default "n"
  365. help
  366. Adds -Wwrite-strings flag for the C/C++ compilers.
  367. For C, this gives string constants the type ``const char[]`` so that
  368. copying the address of one into a non-const ``char *`` pointer
  369. produces a warning. This warning helps to find at compile time code
  370. that tries to write into a string constant.
  371. For C++, this warns about the deprecated conversion from string
  372. literals to ``char *``.
  373. config COMPILER_SAVE_RESTORE_LIBCALLS
  374. bool "Enable -msave-restore flag to reduce code size"
  375. depends on IDF_TARGET_ARCH_RISCV
  376. help
  377. Adds -msave-restore to C/C++ compilation flags.
  378. When this flag is enabled, compiler will call library functions to
  379. save/restore registers in function prologues/epilogues. This results
  380. in lower overall code size, at the expense of slightly reduced performance.
  381. This option can be enabled for RISC-V targets only.
  382. config COMPILER_DUMP_RTL_FILES
  383. bool "Dump RTL files during compilation"
  384. help
  385. If enabled, RTL files will be produced during compilation. These files
  386. can be used by other tools, for example to calculate call graphs.
  387. endmenu # Compiler Options
  388. menu "Component config"
  389. source "$COMPONENT_KCONFIGS_SOURCE_FILE"
  390. endmenu