# Copyright (c) 2024 Espressif Systems (Shanghai) Co., Ltd. # SPDX-License-Identifier: Apache-2.0 if SOC_FAMILY_ESPRESSIF_ESP32 config ESPTOOLPY_OCT_FLASH bool "Use Octal Flash" depends on SOC_SERIES_ESP32S3 default n config ESPTOOLPY_FLASH_MODE_AUTO_DETECT depends on SOC_SERIES_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 bool "QIO" depends on !ESPTOOLPY_OCT_FLASH config ESPTOOLPY_FLASHMODE_QOUT bool "QOUT" depends on !ESPTOOLPY_OCT_FLASH config ESPTOOLPY_FLASHMODE_DIO bool "DIO" depends on !ESPTOOLPY_OCT_FLASH config ESPTOOLPY_FLASHMODE_DOUT bool "DOUT" depends on !ESPTOOLPY_OCT_FLASH config ESPTOOLPY_FLASHMODE_OPI bool "OPI" depends on ESPTOOLPY_OCT_FLASH endchoice # ESPTOOLPY_FLASHMODE 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 bool "DTR Mode" depends on ESPTOOLPY_OCT_FLASH endchoice # ESPTOOLPY_FLASH_SAMPLE_MODE 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 SOC_SERIES_ESP32 default ESPTOOLPY_FLASHFREQ_60M if SOC_SERIES_ESP32C2 default ESPTOOLPY_FLASHFREQ_80M if ESPTOOLPY_FLASHFREQ_80M_DEFAULT config ESPTOOLPY_FLASHFREQ_120M bool "120 MHz" select SPI_FLASH_HPM_ENABLE depends on SOC_SERIES_ESP32S3 && ESPTOOLPY_FLASH_SAMPLE_MODE_STR 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" config ESPTOOLPY_FLASHFREQ_60M bool "60 MHz" config ESPTOOLPY_FLASHFREQ_40M bool "40 MHz" config ESPTOOLPY_FLASHFREQ_26M bool "26 MHz" depends on !SOC_SERIES_ESP32S3 config ESPTOOLPY_FLASHFREQ_20M bool "20 MHz" endchoice # ESPTOOLPY_FLASHFREQ config ESPTOOLPY_FLASHFREQ_80M_DEFAULT bool default y if SOC_SERIES_ESP32S2 || SOC_SERIES_ESP32S3 || SOC_SERIES_ESP32C3 || SOC_SERIES_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 '40m' if ESPTOOLPY_FLASHFREQ_40M default '26m' if ESPTOOLPY_FLASHFREQ_26M default '20m' if ESPTOOLPY_FLASHFREQ_20M 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 # ESPTOOLPY_BEFORE 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 endif # SOC_FAMILY_ESPRESSIF_ESP32