menu "Serial flasher config" depends on !APP_BUILD_TYPE_PURE_RAM_APP config ESPTOOLPY_NO_STUB bool "Disable download stub" default "y" if IDF_ENV_FPGA default "n" help The flasher tool sends a precompiled download stub first by default. That stub allows things like compressed downloads and more. Usually you should not need to disable that feature config ESPTOOLPY_OCT_FLASH depends on IDF_TARGET_ESP32S3 bool "Enable Octal Flash" default n config ESPTOOLPY_FLASH_MODE_AUTO_DETECT depends on IDF_TARGET_ESP32S3 bool "Choose flash mode automatically (please read help)" default y help This config option helps decide whether flash is Quad or Octal, but please note some limitations: 1. If the flash chip is an Octal one, even if one of "QIO", "QOUT", "DIO", "DOUT" options is selected in `ESPTOOLPY_FLASHMODE`, our code will automatically change the mode to "OPI" and the sample mode will be STR. 2. If the flash chip is a Quad one, even if "OPI" is selected in `ESPTOOLPY_FLASHMODE`, our code will automatically change the mode to "DIO". 3. Please do not rely on this option when you are pretty sure that you are using Octal flash, please enable `ESPTOOLPY_OCT_FLASH` option, then you can choose `DTR` sample mode in `ESPTOOLPY_FLASH_SAMPLE_MODE`. Otherwise, only `STR` mode is available. 4. Enabling this feature reduces available internal RAM size (around 900 bytes). If your IRAM space is insufficient and you're aware of your flash type, disable this option and select corresponding flash type options. choice ESPTOOLPY_FLASHMODE prompt "Flash SPI mode" default ESPTOOLPY_FLASHMODE_DIO default ESPTOOLPY_FLASHMODE_OPI if ESPTOOLPY_OCT_FLASH help Mode the flash chip is flashed in, as well as the default mode for the binary to run in. config ESPTOOLPY_FLASHMODE_QIO depends on !ESPTOOLPY_OCT_FLASH bool "QIO" config ESPTOOLPY_FLASHMODE_QOUT depends on !ESPTOOLPY_OCT_FLASH bool "QOUT" config ESPTOOLPY_FLASHMODE_DIO depends on !ESPTOOLPY_OCT_FLASH bool "DIO" config ESPTOOLPY_FLASHMODE_DOUT depends on !ESPTOOLPY_OCT_FLASH bool "DOUT" config ESPTOOLPY_FLASHMODE_OPI depends on ESPTOOLPY_OCT_FLASH bool "OPI" endchoice choice ESPTOOLPY_FLASH_SAMPLE_MODE prompt "Flash Sampling Mode" default ESPTOOLPY_FLASH_SAMPLE_MODE_DTR if ESPTOOLPY_OCT_FLASH default ESPTOOLPY_FLASH_SAMPLE_MODE_STR if !ESPTOOLPY_OCT_FLASH config ESPTOOLPY_FLASH_SAMPLE_MODE_STR bool "STR Mode" config ESPTOOLPY_FLASH_SAMPLE_MODE_DTR depends on ESPTOOLPY_OCT_FLASH bool "DTR Mode" endchoice # Note: we use esptool.py to flash bootloader in # dio mode for QIO/QOUT, bootloader then upgrades # itself to quad mode during initialisation config ESPTOOLPY_FLASHMODE string default "dio" if ESPTOOLPY_FLASHMODE_QIO default "dio" if ESPTOOLPY_FLASHMODE_QOUT default "dio" if ESPTOOLPY_FLASHMODE_DIO default "dout" if ESPTOOLPY_FLASHMODE_DOUT # The 1st and 2nd bootloader doesn't support opi mode, # using fastrd instead. For now the ESPTOOL doesn't support # fasted (see ESPTOOL-274), using dout instead. In ROM the flash mode # information get from efuse, so don't care this dout choice. default "dout" if ESPTOOLPY_FLASHMODE_OPI choice ESPTOOLPY_FLASHFREQ prompt "Flash SPI speed" default ESPTOOLPY_FLASHFREQ_40M if IDF_TARGET_ESP32 default ESPTOOLPY_FLASHFREQ_80M if ESPTOOLPY_FLASHFREQ_80M_DEFAULT default ESPTOOLPY_FLASHFREQ_60M if IDF_TARGET_ESP32C2 default ESPTOOLPY_FLASHFREQ_48M if IDF_TARGET_ESP32H4 config ESPTOOLPY_FLASHFREQ_120M bool "120 MHz" select SPI_FLASH_HPM_ENABLE depends on SOC_MEMSPI_SRC_FREQ_120M && \ (ESPTOOLPY_FLASH_SAMPLE_MODE_STR || IDF_EXPERIMENTAL_FEATURES) help - Flash 120 MHz SDR mode is stable. - Flash 120 MHz DDR mode is an experimental feature, it works when the temperature is stable. Risks: If your chip powers on at a certain temperature, then after the temperature increases or decreases by approximately 20 Celsius degrees (depending on the chip), the program will crash randomly. config ESPTOOLPY_FLASHFREQ_80M bool "80 MHz" depends on SOC_MEMSPI_SRC_FREQ_80M_SUPPORTED config ESPTOOLPY_FLASHFREQ_64M bool "64 MHz" depends on SOC_MEMSPI_SRC_FREQ_64M_SUPPORTED config ESPTOOLPY_FLASHFREQ_60M bool "60 MHz" depends on SOC_MEMSPI_SRC_FREQ_60M_SUPPORTED config ESPTOOLPY_FLASHFREQ_48M bool "48 MHz" depends on SOC_MEMSPI_SRC_FREQ_48M_SUPPORTED config ESPTOOLPY_FLASHFREQ_40M bool "40 MHz" depends on SOC_MEMSPI_SRC_FREQ_40M_SUPPORTED config ESPTOOLPY_FLASHFREQ_32M bool "32 MHz" depends on SOC_MEMSPI_SRC_FREQ_32M_SUPPORTED config ESPTOOLPY_FLASHFREQ_30M bool "30 MHz" depends on SOC_MEMSPI_SRC_FREQ_30M_SUPPORTED config ESPTOOLPY_FLASHFREQ_26M bool "26 MHz" depends on SOC_MEMSPI_SRC_FREQ_26M_SUPPORTED config ESPTOOLPY_FLASHFREQ_24M bool "24 MHz" depends on SOC_MEMSPI_SRC_FREQ_24M_SUPPORTED config ESPTOOLPY_FLASHFREQ_20M bool "20 MHz" depends on SOC_MEMSPI_SRC_FREQ_20M_SUPPORTED config ESPTOOLPY_FLASHFREQ_16M bool "16 MHz" depends on SOC_MEMSPI_SRC_FREQ_16M_SUPPORTED config ESPTOOLPY_FLASHFREQ_15M bool "15 MHz" depends on SOC_MEMSPI_SRC_FREQ_15M_SUPPORTED endchoice config ESPTOOLPY_FLASHFREQ_80M_DEFAULT bool default y if IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 || IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32C6 help This is an invisible item, used to define the targets that defaults to use 80MHz Flash SPI speed. config ESPTOOLPY_FLASHFREQ string # On some of the ESP chips, max boot frequency would be equal to (or even lower than) 80m. # We currently define this to `80m`. default '80m' if ESPTOOLPY_FLASHFREQ_120M default '80m' if ESPTOOLPY_FLASHFREQ_80M default '60m' if ESPTOOLPY_FLASHFREQ_60M default '48m' if ESPTOOLPY_FLASHFREQ_64M # For 0xf in esptool default '48m' if ESPTOOLPY_FLASHFREQ_48M default '24m' if ESPTOOLPY_FLASHFREQ_32M # For 0x0 in esptool default '30m' if ESPTOOLPY_FLASHFREQ_30M default '24m' if ESPTOOLPY_FLASHFREQ_24M default '40m' if ESPTOOLPY_FLASHFREQ_40M default '26m' if ESPTOOLPY_FLASHFREQ_26M default '20m' if ESPTOOLPY_FLASHFREQ_20M default '12m' if ESPTOOLPY_FLASHFREQ_16M # For 0x2 in esptool default '20m' # if no clock can match in bin headers, go with minimal. choice ESPTOOLPY_FLASHSIZE prompt "Flash size" default ESPTOOLPY_FLASHSIZE_2MB help SPI flash size, in megabytes config ESPTOOLPY_FLASHSIZE_1MB bool "1 MB" config ESPTOOLPY_FLASHSIZE_2MB bool "2 MB" config ESPTOOLPY_FLASHSIZE_4MB bool "4 MB" config ESPTOOLPY_FLASHSIZE_8MB bool "8 MB" config ESPTOOLPY_FLASHSIZE_16MB bool "16 MB" config ESPTOOLPY_FLASHSIZE_32MB bool "32 MB" config ESPTOOLPY_FLASHSIZE_64MB bool "64 MB" config ESPTOOLPY_FLASHSIZE_128MB bool "128 MB" endchoice config ESPTOOLPY_FLASHSIZE string default "1MB" if ESPTOOLPY_FLASHSIZE_1MB default "2MB" if ESPTOOLPY_FLASHSIZE_2MB default "4MB" if ESPTOOLPY_FLASHSIZE_4MB default "8MB" if ESPTOOLPY_FLASHSIZE_8MB default "16MB" if ESPTOOLPY_FLASHSIZE_16MB default "32MB" if ESPTOOLPY_FLASHSIZE_32MB default "64MB" if ESPTOOLPY_FLASHSIZE_64MB default "128MB" if ESPTOOLPY_FLASHSIZE_128MB config ESPTOOLPY_HEADER_FLASHSIZE_UPDATE bool "Detect flash size when flashing bootloader" default n help If this option is set, flashing the project will automatically detect the flash size of the target chip and update the bootloader image before it is flashed. Enabling this option turns off the image protection against corruption by a SHA256 digest. Updating the bootloader image before flashing would invalidate the digest. choice ESPTOOLPY_BEFORE prompt "Before flashing" default ESPTOOLPY_BEFORE_RESET help Configure whether esptool.py should reset the ESP32 before flashing. Automatic resetting depends on the RTS & DTR signals being wired from the serial port to the ESP32. Most USB development boards do this internally. config ESPTOOLPY_BEFORE_RESET bool "Reset to bootloader" config ESPTOOLPY_BEFORE_NORESET bool "No reset" endchoice config ESPTOOLPY_BEFORE string default "default_reset" if ESPTOOLPY_BEFORE_RESET default "no_reset" if ESPTOOLPY_BEFORE_NORESET choice ESPTOOLPY_AFTER prompt "After flashing" default ESPTOOLPY_AFTER_RESET help Configure whether esptool.py should reset the ESP32 after flashing. Automatic resetting depends on the RTS & DTR signals being wired from the serial port to the ESP32. Most USB development boards do this internally. config ESPTOOLPY_AFTER_RESET bool "Reset after flashing" config ESPTOOLPY_AFTER_NORESET bool "Stay in bootloader" endchoice config ESPTOOLPY_AFTER string default "hard_reset" if ESPTOOLPY_AFTER_RESET default "no_reset" if ESPTOOLPY_AFTER_NORESET config ESPTOOLPY_MONITOR_BAUD int default ESP_CONSOLE_UART_BAUDRATE if ESP_CONSOLE_UART default 115200 if !ESP_CONSOLE_UART endmenu