| # 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 |