1 2menu "ESP System Settings" 3 # Insert chip-specific cpu config 4 rsource "./port/soc/$IDF_TARGET/Kconfig.cpu" 5 6 orsource "./port/soc/$IDF_TARGET/Kconfig.cache" 7 8 orsource "./port/soc/$IDF_TARGET/Kconfig.memory" 9 10 orsource "./port/soc/$IDF_TARGET/Kconfig.tracemem" 11 12 choice ESP_SYSTEM_PANIC 13 prompt "Panic handler behaviour" 14 default ESP_SYSTEM_PANIC_PRINT_REBOOT 15 help 16 If FreeRTOS detects unexpected behaviour or an unhandled exception, the panic handler is 17 invoked. Configure the panic handler's action here. 18 19 config ESP_SYSTEM_PANIC_PRINT_HALT 20 bool "Print registers and halt" 21 help 22 Outputs the relevant registers over the serial port and halt the 23 processor. Needs a manual reset to restart. 24 25 config ESP_SYSTEM_PANIC_PRINT_REBOOT 26 bool "Print registers and reboot" 27 help 28 Outputs the relevant registers over the serial port and immediately 29 reset the processor. 30 31 config ESP_SYSTEM_PANIC_SILENT_REBOOT 32 bool "Silent reboot" 33 help 34 Just resets the processor without outputting anything 35 36 config ESP_SYSTEM_PANIC_GDBSTUB 37 bool "GDBStub on panic" 38 select ESP_GDBSTUB_ENABLED 39 help 40 Invoke gdbstub on the serial port, allowing for gdb to attach to it to do a postmortem 41 of the crash. 42 43 config ESP_SYSTEM_GDBSTUB_RUNTIME 44 bool "GDBStub at runtime" 45 select ESP_GDBSTUB_ENABLED 46 depends on !IDF_TARGET_ESP32C2 47 help 48 Invoke gdbstub on the serial port, allowing for gdb to attach to it and to do a debug on runtime. 49 endchoice 50 51 config ESP_SYSTEM_PANIC_REBOOT_DELAY_SECONDS 52 int "Panic reboot delay (Seconds)" 53 default 0 54 range 0 99 55 depends on ESP_SYSTEM_PANIC_PRINT_REBOOT 56 help 57 After the panic handler executes, you can specify a number of seconds to 58 wait before the device reboots. 59 60 config ESP_SYSTEM_SINGLE_CORE_MODE 61 bool 62 default n 63 help 64 Only initialize and use the main core. 65 66 config ESP_SYSTEM_RTC_EXT_XTAL 67 # This is a High Layer Kconfig option, invisible, can be selected by other Kconfig option 68 # e.g. It will be selected on when RTC_CLK_SRC_EXT_CRYS is on 69 bool 70 default n 71 72 config ESP_SYSTEM_RTC_EXT_OSC 73 # This is a High Layer Kconfig option, invisible, can be selected by other Kconfig option 74 # e.g. It will be selected on when ESPX_RTC_CLK_SRC_EXT_OSC is on 75 bool 76 default n 77 78 config ESP_SYSTEM_RTC_EXT_XTAL_BOOTSTRAP_CYCLES 79 int "Bootstrap cycles for external 32kHz crystal" 80 depends on ESP_SYSTEM_RTC_EXT_XTAL 81 default 5 if IDF_TARGET_ESP32 82 default 0 83 range 0 32768 84 help 85 To reduce the startup time of an external RTC crystal, 86 we bootstrap it with a 32kHz square wave for a fixed number of cycles. 87 Setting 0 will disable bootstrapping (if disabled, the crystal may take 88 longer to start up or fail to oscillate under some conditions). 89 90 If this value is too high, a faulty crystal may initially start and then fail. 91 If this value is too low, an otherwise good crystal may not start. 92 93 To accurately determine if the crystal has started, 94 set a larger "Number of cycles for RTC_SLOW_CLK calibration" (about 3000). 95 96 config ESP_SYSTEM_RTC_FAST_MEM_AS_HEAP_DEPCHECK 97 bool 98 default y if IDF_TARGET_ESP32 && FREERTOS_UNICORE 99 default y if IDF_TARGET_ESP32S2 100 default y if IDF_TARGET_ESP32C3 101 default y if IDF_TARGET_ESP32S3 102 default y if IDF_TARGET_ESP32C6 103 default n if IDF_TARGET_ESP32H2 # IDF-5667 104 depends on SOC_RTC_FAST_MEM_SUPPORTED 105 106 config ESP_SYSTEM_ALLOW_RTC_FAST_MEM_AS_HEAP 107 bool "Enable RTC fast memory for dynamic allocations" 108 default y 109 depends on ESP_SYSTEM_RTC_FAST_MEM_AS_HEAP_DEPCHECK 110 help 111 This config option allows to add RTC fast memory region to system heap with capability 112 similar to that of DRAM region but without DMA. This memory will be consumed first per 113 heap initialization order by early startup services and scheduler related code. Speed 114 wise RTC fast memory operates on APB clock and hence does not have much performance impact. 115 116 config ESP_SYSTEM_USE_EH_FRAME 117 bool "Generate and use eh_frame for backtracing" 118 default n 119 depends on IDF_TARGET_ARCH_RISCV 120 help 121 Generate DWARF information for each function of the project. These information will parsed and used to 122 perform backtracing when panics occur. Activating this option will activate asynchronous frame unwinding 123 and generation of both .eh_frame and .eh_frame_hdr sections, resulting in a bigger binary size (20% to 124 100% larger). The main purpose of this option is to be able to have a backtrace parsed and printed by 125 the program itself, regardless of the serial monitor used. 126 This option shall NOT be used for production. 127 128 menu "Memory protection" 129 130 config ESP_SYSTEM_PMP_IDRAM_SPLIT 131 bool "Enable IRAM/DRAM split protection" 132 depends on SOC_CPU_IDRAM_SPLIT_USING_PMP 133 default "y" 134 help 135 If enabled, the CPU watches all the memory access and raises an exception in case 136 of any memory violation. This feature automatically splits 137 the SRAM memory, using PMP, into data and instruction segments and sets Read/Execute permissions 138 for the instruction part (below given splitting address) and Read/Write permissions 139 for the data part (above the splitting address). The memory protection is effective 140 on all access through the IRAM0 and DRAM0 buses. 141 142 config ESP_SYSTEM_MEMPROT_FEATURE 143 bool "Enable memory protection" 144 depends on SOC_MEMPROT_SUPPORTED 145 default "y" 146 help 147 If enabled, the permission control module watches all the memory access and fires the panic handler 148 if a permission violation is detected. This feature automatically splits 149 the SRAM memory into data and instruction segments and sets Read/Execute permissions 150 for the instruction part (below given splitting address) and Read/Write permissions 151 for the data part (above the splitting address). The memory protection is effective 152 on all access through the IRAM0 and DRAM0 buses. 153 154 config ESP_SYSTEM_MEMPROT_FEATURE_LOCK 155 depends on ESP_SYSTEM_MEMPROT_FEATURE 156 bool "Lock memory protection settings" 157 default "y" 158 help 159 Once locked, memory protection settings cannot be changed anymore. 160 The lock is reset only on the chip startup. 161 162 endmenu # Memory protection 163 164 config ESP_SYSTEM_EVENT_QUEUE_SIZE 165 int "System event queue size" 166 default 32 167 help 168 Config system event queue size in different application. 169 170 config ESP_SYSTEM_EVENT_TASK_STACK_SIZE 171 int "Event loop task stack size" 172 default 2304 173 help 174 Config system event task stack size in different application. 175 176 config ESP_MAIN_TASK_STACK_SIZE 177 int "Main task stack size" 178 default 3584 179 help 180 Configure the "main task" stack size. This is the stack of the task 181 which calls app_main(). If app_main() returns then this task is deleted 182 and its stack memory is freed. 183 184 choice ESP_MAIN_TASK_AFFINITY 185 prompt "Main task core affinity" 186 default ESP_MAIN_TASK_AFFINITY_CPU0 187 help 188 Configure the "main task" core affinity. This is the used core of the task 189 which calls app_main(). If app_main() returns then this task is deleted. 190 191 config ESP_MAIN_TASK_AFFINITY_CPU0 192 bool "CPU0" 193 config ESP_MAIN_TASK_AFFINITY_CPU1 194 bool "CPU1" 195 depends on !FREERTOS_UNICORE 196 config ESP_MAIN_TASK_AFFINITY_NO_AFFINITY 197 bool "No affinity" 198 199 endchoice 200 201 config ESP_MAIN_TASK_AFFINITY 202 hex 203 default 0x0 if ESP_MAIN_TASK_AFFINITY_CPU0 204 default 0x1 if ESP_MAIN_TASK_AFFINITY_CPU1 205 default FREERTOS_NO_AFFINITY if ESP_MAIN_TASK_AFFINITY_NO_AFFINITY 206 207 config ESP_MINIMAL_SHARED_STACK_SIZE 208 int "Minimal allowed size for shared stack" 209 default 2048 210 help 211 Minimal value of size, in bytes, accepted to execute a expression 212 with shared stack. 213 214 choice ESP_CONSOLE_UART 215 prompt "Channel for console output" 216 default ESP_CONSOLE_UART_DEFAULT 217 help 218 Select where to send console output (through stdout and stderr). 219 220 - Default is to use UART0 on pre-defined GPIOs. 221 - If "Custom" is selected, UART0 or UART1 can be chosen, 222 and any pins can be selected. 223 - If "None" is selected, there will be no console output on any UART, except 224 for initial output from ROM bootloader. This ROM output can be suppressed by 225 GPIO strapping or EFUSE, refer to chip datasheet for details. 226 - On chips with USB OTG peripheral, "USB CDC" option redirects output to the 227 CDC port. This option uses the CDC driver in the chip ROM. 228 This option is incompatible with TinyUSB stack. 229 - On chips with an USB serial/JTAG debug controller, selecting the option 230 for that redirects output to the CDC/ACM (serial port emulation) component 231 of that device. 232 config ESP_CONSOLE_UART_DEFAULT 233 bool "Default: UART0" 234 config ESP_CONSOLE_USB_CDC 235 bool "USB CDC" 236 # && !TINY_USB is because the ROM CDC driver is currently incompatible with TinyUSB. 237 depends on (IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3) && !TINY_USB 238 config ESP_CONSOLE_USB_SERIAL_JTAG 239 bool "USB Serial/JTAG Controller" 240 select ESPTOOLPY_NO_STUB if IDF_TARGET_ESP32C3 #ESPTOOL-252 241 depends on SOC_USB_SERIAL_JTAG_SUPPORTED 242 config ESP_CONSOLE_UART_CUSTOM 243 bool "Custom UART" 244 config ESP_CONSOLE_NONE 245 bool "None" 246 endchoice 247 248 choice ESP_CONSOLE_SECONDARY 249 depends on SOC_USB_SERIAL_JTAG_SUPPORTED 250 prompt "Channel for console secondary output" 251 default ESP_CONSOLE_SECONDARY_USB_SERIAL_JTAG 252 help 253 This secondary option supports output through other specific port like USB_SERIAL_JTAG 254 when UART0 port as a primary is selected but not connected. This secondary output currently only supports 255 non-blocking mode without using REPL. If you want to output in blocking mode with REPL or 256 input through this secondary port, please change the primary config to this port 257 in `Channel for console output` menu. 258 config ESP_CONSOLE_SECONDARY_NONE 259 bool "No secondary console" 260 config ESP_CONSOLE_SECONDARY_USB_SERIAL_JTAG 261 bool "USB_SERIAL_JTAG PORT" 262 depends on !ESP_CONSOLE_USB_SERIAL_JTAG 263 help 264 This option supports output through USB_SERIAL_JTAG port when the UART0 port is not connected. 265 The output currently only supports non-blocking mode without using the console. 266 If you want to output in blocking mode with REPL or input through USB_SERIAL_JTAG port, 267 please change the primary config to ESP_CONSOLE_USB_SERIAL_JTAG above. 268 endchoice 269 270 config ESP_CONSOLE_USB_SERIAL_JTAG_ENABLED 271 # Internal option, indicates that console USB SERIAL JTAG is used 272 bool 273 default y if ESP_CONSOLE_USB_SERIAL_JTAG || ESP_CONSOLE_SECONDARY_USB_SERIAL_JTAG 274 275 config ESP_CONSOLE_UART 276 # Internal option, indicates that console UART is used (and not USB, for example) 277 bool 278 default y if ESP_CONSOLE_UART_DEFAULT || ESP_CONSOLE_UART_CUSTOM 279 280 config ESP_CONSOLE_MULTIPLE_UART 281 bool 282 default y if !IDF_TARGET_ESP32C3 && !IDF_TARGET_ESP32H2 && !IDF_TARGET_ESP32C2 && !IDF_TARGET_ESP32C6 283 284 choice ESP_CONSOLE_UART_NUM 285 prompt "UART peripheral to use for console output (0-1)" 286 depends on ESP_CONSOLE_UART_CUSTOM && ESP_CONSOLE_MULTIPLE_UART 287 default ESP_CONSOLE_UART_CUSTOM_NUM_0 288 help 289 This UART peripheral is used for console output from the ESP-IDF Bootloader and the app. 290 291 If the configuration is different in the Bootloader binary compared to the app binary, UART 292 is reconfigured after the bootloader exits and the app starts. 293 294 Due to an ESP32 ROM bug, UART2 is not supported for console output 295 via esp_rom_printf. 296 297 config ESP_CONSOLE_UART_CUSTOM_NUM_0 298 bool "UART0" 299 config ESP_CONSOLE_UART_CUSTOM_NUM_1 300 bool "UART1" 301 endchoice 302 303 config ESP_CONSOLE_UART_NUM 304 int 305 default 0 if ESP_CONSOLE_UART_DEFAULT 306 default 0 if !ESP_CONSOLE_MULTIPLE_UART 307 default 0 if ESP_CONSOLE_UART_CUSTOM_NUM_0 308 default 1 if ESP_CONSOLE_UART_CUSTOM_NUM_1 309 default -1 if !ESP_CONSOLE_UART 310 311 config ESP_CONSOLE_UART_TX_GPIO 312 int "UART TX on GPIO#" 313 depends on ESP_CONSOLE_UART_CUSTOM 314 range 0 46 315 default 1 if IDF_TARGET_ESP32 316 default 20 if IDF_TARGET_ESP32C2 317 default 21 if IDF_TARGET_ESP32C3 318 default 16 if IDF_TARGET_ESP32C6 319 default 24 if IDF_TARGET_ESP32H2 320 default 43 321 help 322 This GPIO is used for console UART TX output in the ESP-IDF Bootloader and the app (including 323 boot log output and default standard output and standard error of the app). 324 325 If the configuration is different in the Bootloader binary compared to the app binary, UART 326 is reconfigured after the bootloader exits and the app starts. 327 328 config ESP_CONSOLE_UART_RX_GPIO 329 int "UART RX on GPIO#" 330 depends on ESP_CONSOLE_UART_CUSTOM 331 range 0 46 332 default 3 if IDF_TARGET_ESP32 333 default 19 if IDF_TARGET_ESP32C2 334 default 20 if IDF_TARGET_ESP32C3 335 default 17 if IDF_TARGET_ESP32C6 336 default 23 if IDF_TARGET_ESP32H2 337 default 44 338 help 339 This GPIO is used for UART RX input in the ESP-IDF Bootloader and the app (including 340 default default standard input of the app). 341 342 Note: The default ESP-IDF Bootloader configures this pin but doesn't read anything from the UART. 343 344 If the configuration is different in the Bootloader binary compared to the app binary, UART 345 is reconfigured after the bootloader exits and the app starts. 346 347 348 config ESP_CONSOLE_UART_BAUDRATE 349 int 350 prompt "UART console baud rate" if ESP_CONSOLE_UART_CUSTOM 351 depends on ESP_CONSOLE_UART 352 default 74880 if (IDF_TARGET_ESP32C2 && XTAL_FREQ_26) 353 default 115200 354 range 1200 4000000 if !PM_ENABLE 355 range 1200 1000000 if PM_ENABLE 356 help 357 This baud rate is used by both the ESP-IDF Bootloader and the app (including 358 boot log output and default standard input/output/error of the app). 359 360 The app's maximum baud rate depends on the UART clock source. If Power Management is disabled, 361 the UART clock source is the APB clock and all baud rates in the available range will be sufficiently 362 accurate. If Power Management is enabled, REF_TICK clock source is used so the baud rate is divided 363 from 1MHz. Baud rates above 1Mbps are not possible and values between 500Kbps and 1Mbps may not be 364 accurate. 365 366 If the configuration is different in the Bootloader binary compared to the app binary, UART 367 is reconfigured after the bootloader exits and the app starts. 368 369 config ESP_CONSOLE_USB_CDC_RX_BUF_SIZE 370 int "Size of USB CDC RX buffer" 371 depends on ESP_CONSOLE_USB_CDC 372 default 64 373 range 4 16384 374 help 375 Set the size of USB CDC RX buffer. Increase the buffer size if your application 376 is often receiving data over USB CDC. 377 378 config ESP_CONSOLE_USB_CDC_SUPPORT_ETS_PRINTF 379 bool "Enable esp_rom_printf / ESP_EARLY_LOG via USB CDC" 380 depends on ESP_CONSOLE_USB_CDC 381 default n 382 help 383 If enabled, esp_rom_printf and ESP_EARLY_LOG output will also be sent over USB CDC. 384 Disabling this option saves about 1kB or RAM. 385 386 config ESP_INT_WDT 387 bool "Interrupt watchdog" 388 default y 389 help 390 This watchdog timer can detect if the FreeRTOS tick interrupt has not been called for a certain time, 391 either because a task turned off interrupts and did not turn them on for a long time, or because an 392 interrupt handler did not return. It will try to invoke the panic handler first and failing that 393 reset the SoC. 394 395 config ESP_INT_WDT_TIMEOUT_MS 396 int "Interrupt watchdog timeout (ms)" 397 depends on ESP_INT_WDT 398 default 300 if !(SPIRAM && IDF_TARGET_ESP32) 399 default 800 if (SPIRAM && IDF_TARGET_ESP32) 400 range 10 10000 401 help 402 The timeout of the watchdog, in miliseconds. Make this higher than the FreeRTOS tick rate. 403 404 config ESP_INT_WDT_CHECK_CPU1 405 bool "Also watch CPU1 tick interrupt" 406 depends on ESP_INT_WDT && !FREERTOS_UNICORE 407 default y 408 help 409 Also detect if interrupts on CPU 1 are disabled for too long. 410 411 config ESP_TASK_WDT_EN 412 bool "Enable Task Watchdog Timer" 413 default y 414 select FREERTOS_ENABLE_TASK_SNAPSHOT 415 help 416 The Task Watchdog Timer can be used to make sure individual tasks are still 417 running. Enabling this option will enable the Task Watchdog Timer. It can be 418 either initialized automatically at startup or initialized after startup 419 (see Task Watchdog Timer API Reference) 420 421 config ESP_TASK_WDT_USE_ESP_TIMER 422 # Software implementation of Task Watchdog, handy for targets with only a single 423 # Timer Group, such as the ESP32-C2 424 bool 425 depends on ESP_TASK_WDT_EN 426 default y if IDF_TARGET_ESP32C2 427 default n if !IDF_TARGET_ESP32C2 428 select ESP_TIMER_SUPPORTS_ISR_DISPATCH_METHOD 429 430 config ESP_TASK_WDT_INIT 431 bool "Initialize Task Watchdog Timer on startup" 432 depends on ESP_TASK_WDT_EN 433 default y 434 help 435 Enabling this option will cause the Task Watchdog Timer to be initialized 436 automatically at startup. 437 438 config ESP_TASK_WDT_PANIC 439 bool "Invoke panic handler on Task Watchdog timeout" 440 depends on ESP_TASK_WDT_INIT 441 default n 442 help 443 If this option is enabled, the Task Watchdog Timer will be configured to 444 trigger the panic handler when it times out. This can also be configured 445 at run time (see Task Watchdog Timer API Reference) 446 447 config ESP_TASK_WDT_TIMEOUT_S 448 int "Task Watchdog timeout period (seconds)" 449 depends on ESP_TASK_WDT_INIT 450 range 1 60 451 default 5 452 help 453 Timeout period configuration for the Task Watchdog Timer in seconds. 454 This is also configurable at run time (see Task Watchdog Timer API Reference) 455 456 config ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0 457 bool "Watch CPU0 Idle Task" 458 depends on ESP_TASK_WDT_INIT 459 default y 460 help 461 If this option is enabled, the Task Watchdog Timer will watch the CPU0 462 Idle Task. Having the Task Watchdog watch the Idle Task allows for detection 463 of CPU starvation as the Idle Task not being called is usually a symptom of 464 CPU starvation. Starvation of the Idle Task is detrimental as FreeRTOS household 465 tasks depend on the Idle Task getting some runtime every now and then. 466 467 config ESP_TASK_WDT_CHECK_IDLE_TASK_CPU1 468 bool "Watch CPU1 Idle Task" 469 depends on ESP_TASK_WDT_INIT && !FREERTOS_UNICORE 470 default y 471 help 472 If this option is enabled, the Task Watchdog Timer will wach the CPU1 473 Idle Task. 474 475 config ESP_XT_WDT 476 bool "Initialize XTAL32K watchdog timer on startup" 477 depends on !IDF_TARGET_ESP32 && (ESP_SYSTEM_RTC_EXT_OSC || ESP_SYSTEM_RTC_EXT_XTAL) 478 default n 479 help 480 This watchdog timer can detect oscillation failure of the XTAL32K_CLK. When such a failure 481 is detected the hardware can be set up to automatically switch to BACKUP32K_CLK and generate 482 an interrupt. 483 484 config ESP_XT_WDT_TIMEOUT 485 int "XTAL32K watchdog timeout period" 486 depends on ESP_XT_WDT 487 range 1 255 488 default 200 489 help 490 Timeout period configuration for the XTAL32K watchdog timer based on RTC_CLK. 491 492 config ESP_XT_WDT_BACKUP_CLK_ENABLE 493 bool "Automatically switch to BACKUP32K_CLK when timer expires" 494 depends on ESP_XT_WDT 495 default y 496 help 497 Enable this to automatically switch to BACKUP32K_CLK as the source of RTC_SLOW_CLK when 498 the watchdog timer expires. 499 500 config ESP_PANIC_HANDLER_IRAM 501 bool "Place panic handler code in IRAM" 502 default n 503 help 504 If this option is disabled (default), the panic handler code is placed in flash not IRAM. 505 This means that if ESP-IDF crashes while flash cache is disabled, the panic handler will 506 automatically re-enable flash cache before running GDB Stub or Core Dump. This adds some minor 507 risk, if the flash cache status is also corrupted during the crash. 508 509 If this option is enabled, the panic handler code (including required UART functions) is placed 510 in IRAM. This may be necessary to debug some complex issues with crashes while flash cache is 511 disabled (for example, when writing to SPI flash) or when flash cache is corrupted when an exception 512 is triggered. 513 514 config ESP_DEBUG_STUBS_ENABLE 515 bool "OpenOCD debug stubs" 516 default COMPILER_OPTIMIZATION_LEVEL_DEBUG 517 depends on !ESP32_TRAX && !ESP32S2_TRAX && !ESP32S3_TRAX 518 help 519 Debug stubs are used by OpenOCD to execute pre-compiled onboard code 520 which does some useful debugging stuff, e.g. GCOV data dump. 521 522 config ESP_DEBUG_OCDAWARE 523 bool "Make exception and panic handlers JTAG/OCD aware" 524 default y 525 select FREERTOS_DEBUG_OCDAWARE 526 help 527 The FreeRTOS panic and unhandled exception handers can detect a JTAG OCD debugger and 528 instead of panicking, have the debugger stop on the offending instruction. 529 530 choice ESP_SYSTEM_CHECK_INT_LEVEL 531 prompt "Interrupt level to use for Interrupt Watchdog and other system checks" 532 default ESP_SYSTEM_CHECK_INT_LEVEL_4 533 help 534 Interrupt level to use for Interrupt Watchdog and other system checks. 535 536 config ESP_SYSTEM_CHECK_INT_LEVEL_5 537 bool "Level 5 interrupt" 538 depends on IDF_TARGET_ESP32 539 help 540 Using level 5 interrupt for Interrupt Watchdog and other system checks. 541 542 config ESP_SYSTEM_CHECK_INT_LEVEL_4 543 bool "Level 4 interrupt" 544 depends on !BTDM_CTRL_HLI 545 help 546 Using level 4 interrupt for Interrupt Watchdog and other system checks. 547 endchoice 548 549 # Insert chip-specific system config 550 rsource "./port/soc/$IDF_TARGET/Kconfig.system" 551 552 config ESP_SYSTEM_BROWNOUT_INTR 553 bool 554 default n 555 help 556 This config allows to trigger an interrupt when brownout detected. Software restart will be done 557 at the end of the default callback. 558 Two occasions need to restart the chip with interrupt so far. 559 (1). For ESP32 version 1, brown-out reset function doesn't work (see ESP32 errata 3.4). 560 So that we must restart from interrupt. 561 (2). For special workflow, the chip needs do more things instead of restarting directly. This part 562 needs to be done in callback function of interrupt. 563 564endmenu # ESP System Settings 565 566menu "IPC (Inter-Processor Call)" 567 568 config ESP_IPC_TASK_STACK_SIZE 569 int "Inter-Processor Call (IPC) task stack size" 570 range 512 65536 if !APPTRACE_ENABLE 571 range 2048 65536 if APPTRACE_ENABLE 572 default 2048 if APPTRACE_ENABLE 573 default 1280 if !APPTRACE_ENABLE && IDF_TARGET_ESP32S3 574 default 1024 575 help 576 Configure the IPC tasks stack size. An IPC task runs on each core (in dual core mode), and allows for 577 cross-core function calls. See IPC documentation for more details. The default IPC stack size should be 578 enough for most common simple use cases. However, users can increase/decrease the stack size to their 579 needs. 580 581 config ESP_IPC_USES_CALLERS_PRIORITY 582 bool "IPC runs at caller's priority" 583 default y 584 depends on !FREERTOS_UNICORE 585 help 586 If this option is not enabled then the IPC task will keep behavior same as prior to that of ESP-IDF v4.0, 587 hence IPC task will run at (configMAX_PRIORITIES - 1) priority. 588 589 config ESP_IPC_ISR_ENABLE 590 bool 591 default y if !FREERTOS_UNICORE 592 help 593 The IPC ISR feature is similar to the IPC feature except that the callback function is executed in the 594 context of a High Priority Interrupt. The IPC ISR feature is itended for low latency execution of simple 595 callbacks written in assembly on another CPU. Due to being run in a High Priority Interrupt, the assembly 596 callbacks must be written with particular restrictions (see "IPC" and "High-Level Interrupt" docs for more 597 details). 598 599endmenu # "IPC (Inter-Processor Call) 600