| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344 |
- menu "Hardware Settings"
- menu "Chip revision"
- # Insert chip-specific HW config
- orsource "./port/$IDF_TARGET/Kconfig.hw_support"
- config ESP_REV_NEW_CHIP_TEST
- bool "Internal test mode"
- depends on IDF_CI_BUILD
- default n
- help
- For internal chip testing, a small number of new versions chips didn't
- update the version field in eFuse, you can enable this option to force the
- software recognize the chip version based on the rev selected in menuconfig.
- endmenu
- menu "MAC Config"
- config ESP_MAC_ADDR_UNIVERSE_WIFI_STA
- bool
- config ESP_MAC_ADDR_UNIVERSE_WIFI_AP
- bool
- config ESP_MAC_ADDR_UNIVERSE_BT
- bool
- config ESP_MAC_ADDR_UNIVERSE_ETH
- bool
- config ESP_MAC_ADDR_UNIVERSE_IEEE802154
- bool
- config ESP_MAC_UNIVERSAL_MAC_ADDRESSES_ONE
- bool
- config ESP_MAC_UNIVERSAL_MAC_ADDRESSES_TWO
- bool
- config ESP_MAC_UNIVERSAL_MAC_ADDRESSES_FOUR
- bool
- # Insert chip-specific MAC config
- orsource "./port/$IDF_TARGET/Kconfig.mac"
- config ESP_MAC_IGNORE_MAC_CRC_ERROR
- bool "Ignore MAC CRC error (not recommended)"
- depends on IDF_TARGET_ESP32
- default n
- help
- If you have an invalid MAC CRC (ESP_ERR_INVALID_CRC) problem
- and you still want to use this chip, you can enable this option to bypass such an error.
- This applies to both MAC_FACTORY and CUSTOM_MAC efuses.
- endmenu
- menu "Sleep Config"
- # This is here since this option affect behavior of esp_light_sleep_start
- # regardless of power management configuration.
- config ESP_SLEEP_POWER_DOWN_FLASH
- bool "Power down flash in light sleep when there is no SPIRAM"
- depends on !SPIRAM
- default n
- help
- If enabled, chip will try to power down flash as part of esp_light_sleep_start(), which costs
- more time when chip wakes up. Can only be enabled if there is no SPIRAM configured.
- This option will power down flash under a strict but relatively safe condition. Also, it is possible to
- power down flash under a relaxed condition by using esp_sleep_pd_config() to set ESP_PD_DOMAIN_VDDSDIO
- to ESP_PD_OPTION_OFF. It should be noted that there is a risk in powering down flash, you can refer
- `ESP-IDF Programming Guide/API Reference/System API/Sleep Modes/Power-down of Flash` for more details.
- config ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND
- bool "Pull-up Flash CS pin in light sleep"
- depends on !APP_BUILD_TYPE_PURE_RAM_APP && !ESP_SLEEP_POWER_DOWN_FLASH
- default y
- help
- All IOs will be set to isolate(floating) state by default during sleep.
- Since the power supply of SPI Flash is not lost during lightsleep, if its CS pin is recognized as
- low level(selected state) in the floating state, there will be a large current leakage, and the
- data in Flash may be corrupted by random signals on other SPI pins.
- Select this option will set the CS pin of Flash to PULL-UP state during sleep, but this will
- increase the sleep current about 10 uA.
- If you are developing with esp32xx modules, you must select this option, but if you are developing
- with chips, you can also pull up the CS pin of SPI Flash in the external circuit to save power
- consumption caused by internal pull-up during sleep.
- (!!! Don't deselect this option if you don't have external SPI Flash CS pin pullups.)
- config ESP_SLEEP_PSRAM_LEAKAGE_WORKAROUND
- bool "Pull-up PSRAM CS pin in light sleep"
- depends on SPIRAM
- default y
- help
- All IOs will be set to isolate(floating) state by default during sleep.
- Since the power supply of PSRAM is not lost during lightsleep, if its CS pin is recognized as
- low level(selected state) in the floating state, there will be a large current leakage, and the
- data in PSRAM may be corrupted by random signals on other SPI pins.
- Select this option will set the CS pin of PSRAM to PULL-UP state during sleep, but this will
- increase the sleep current about 10 uA.
- If you are developing with esp32xx modules, you must select this option, but if you are developing
- with chips, you can also pull up the CS pin of PSRAM in the external circuit to save power
- consumption caused by internal pull-up during sleep.
- (!!! Don't deselect this option if you don't have external PSRAM CS pin pullups.)
- config ESP_SLEEP_MSPI_NEED_ALL_IO_PU
- bool "Pull-up all SPI pins in light sleep"
- depends on !ESP_SLEEP_POWER_DOWN_FLASH \
- && (ESP_SLEEP_PSRAM_LEAKAGE_WORKAROUND || ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND)
- default y if IDF_TARGET_ESP32C2 || IDF_TARGET_ESP32S3
- help
- To reduce leakage current, some types of SPI Flash/RAM only need to pull up the CS pin
- during light sleep. But there are also some kinds of SPI Flash/RAM that need to pull up
- all pins. It depends on the SPI Flash/RAM chip used.
- config ESP_SLEEP_RTC_BUS_ISO_WORKAROUND
- bool
- default y if IDF_TARGET_ESP32 || IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3
- config ESP_SLEEP_GPIO_RESET_WORKAROUND
- bool "light sleep GPIO reset workaround"
- default y if IDF_TARGET_ESP32C2 || IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32S3 || \
- IDF_TARGET_ESP32C6 || IDF_TARGET_ESP32H2
- select PM_SLP_DISABLE_GPIO if FREERTOS_USE_TICKLESS_IDLE
- help
- esp32c2, esp32c3, esp32s3, esp32c6 and esp32h2 will reset at wake-up if GPIO is received
- a small electrostatic pulse during light sleep, with specific condition
- - GPIO needs to be configured as input-mode only
- - The pin receives a small electrostatic pulse, and reset occurs when the pulse
- voltage is higher than 6 V
- For GPIO set to input mode only, it is not a good practice to leave it open/floating,
- The hardware design needs to controlled it with determined supply or ground voltage
- is necessary.
- This option provides a software workaround for this issue. Configure to isolate all
- GPIO pins in sleep state.
- config ESP_SLEEP_DEEP_SLEEP_WAKEUP_DELAY
- int "Extra delay in deep sleep wake stub (in us)"
- depends on IDF_TARGET_ESP32 || IDF_TARGET_ESP32S3
- default 2000
- range 0 5000
- help
- When the chip exits deep sleep, the CPU and the flash chip are powered on
- at the same time. CPU will run deep sleep stub first, and then
- proceed to load code from flash. Some flash chips need sufficient
- time to pass between power on and first read operation. By default,
- without any extra delay, this time is approximately 900us, although
- some flash chip types need more than that.
- By default extra delay is set to 2000us. When optimizing startup time
- for applications which require it, this value may be reduced.
- If you are seeing "flash read err, 1000" message printed to the
- console after deep sleep reset, try increasing this value.
- config ESP_SLEEP_CACHE_SAFE_ASSERTION
- bool "Check the cache safety of the sleep wakeup code in sleep process"
- default n
- help
- Enabling it will check the cache safety of the code before the flash power is ready after
- light sleep wakeup, and check PM_SLP_IRAM_OPT related code cache safety. This option is
- only for code quality inspection. Enabling it will increase the time overhead of entering
- and exiting sleep. It is not recommended to enable it in the release version.
- config ESP_SLEEP_DEBUG
- bool "esp sleep debug"
- default n
- help
- Enable esp sleep debug.
- config ESP_SLEEP_GPIO_ENABLE_INTERNAL_RESISTORS
- bool "Allow to enable internal pull-up/downs for the Deep-Sleep wakeup IOs"
- default y
- help
- When using rtc gpio wakeup source during deepsleep without external pull-up/downs, you may want to
- make use of the internal ones.
- config ESP_SLEEP_EVENT_CALLBACKS
- bool "Enable registration of sleep event callbacks"
- depends on FREERTOS_USE_TICKLESS_IDLE
- default n
- help
- If enabled, it allows user to register sleep event callbacks. It is primarily designed for internal
- developers and customers can use PM_LIGHT_SLEEP_CALLBACKS as an alternative.
- NOTE: These callbacks are executed from the IDLE task context hence you cannot have any blocking calls
- in your callbacks.
- NOTE: Enabling these callbacks may change sleep duration calculations based on time spent in
- callback and hence it is highly recommended to keep them as short as possible.
- endmenu
- menu "ESP_SLEEP_WORKAROUND"
- # No visible menu/configs for workaround
- visible if 0
- config ESP_SLEEP_SYSTIMER_STALL_WORKAROUND
- bool "ESP32C3 SYSTIMER Stall Issue Workaround"
- depends on IDF_TARGET_ESP32C3
- help
- Its not able to stall ESP32C3 systimer in sleep.
- To fix related RTOS TICK issue, select it to disable related systimer during sleep.
- TODO: IDF-7036
- endmenu
- menu "RTC Clock Config"
- orsource "./port/$IDF_TARGET/Kconfig.rtc"
- endmenu
- menu "Peripheral Control"
- config PERIPH_CTRL_FUNC_IN_IRAM
- bool "Place peripheral control functions into IRAM"
- default n
- help
- Place peripheral control functions (e.g. periph_module_reset) into IRAM,
- so that these functions can be IRAM-safe and able to be called in the other IRAM interrupt context.
- endmenu
- menu "ETM Configuration"
- depends on SOC_ETM_SUPPORTED
- config ETM_ENABLE_DEBUG_LOG
- bool "Enable debug log"
- default n
- help
- Wether to enable the debug log message for ETM core driver.
- Note that, this option only controls the ETM related driver log, won't affect other drivers.
- endmenu # ETM Configuration
- menu "GDMA Configuration"
- depends on SOC_GDMA_SUPPORTED
- config GDMA_CTRL_FUNC_IN_IRAM
- bool "Place GDMA control functions into IRAM"
- default n
- help
- Place GDMA control functions (like start/stop/append/reset) into IRAM,
- so that these functions can be IRAM-safe and able to be called in the other IRAM interrupt context.
- Enabling this option can improve driver performance as well.
- config GDMA_ISR_IRAM_SAFE
- bool "GDMA ISR IRAM-Safe"
- default n
- help
- This will ensure the GDMA interrupt handler is IRAM-Safe, allow to avoid flash
- cache misses, and also be able to run whilst the cache is disabled.
- (e.g. SPI Flash write).
- config GDMA_ENABLE_DEBUG_LOG
- bool "Enable debug log"
- default n
- help
- Wether to enable the debug log message for GDMA driver.
- Note that, this option only controls the GDMA driver log, won't affect other drivers.
- endmenu # GDMA Configuration
- menu "Main XTAL Config"
- choice XTAL_FREQ_SEL
- prompt "Main XTAL frequency"
- default XTAL_FREQ_40 if SOC_XTAL_SUPPORT_40M
- help
- This option selects the operating frequency of the XTAL (crystal) clock used to drive the ESP target.
- The selected value MUST reflect the frequency of the given hardware.
- Note: The XTAL_FREQ_AUTO option allows the ESP target to automatically estimating XTAL clock's
- operating frequency. However, this feature is only supported on the ESP32. The ESP32 uses the
- internal 8MHZ as a reference when estimating. Due to the internal oscillator's frequency being
- temperature dependent, usage of the XTAL_FREQ_AUTO is not recommended in applications that operate
- in high ambient temperatures or use high-temperature qualified chips and modules.
- config XTAL_FREQ_24
- depends on SOC_XTAL_SUPPORT_24M
- bool "24 MHz"
- config XTAL_FREQ_26
- depends on SOC_XTAL_SUPPORT_26M
- bool "26 MHz"
- config XTAL_FREQ_32
- depends on SOC_XTAL_SUPPORT_32M
- bool "32 MHz"
- config XTAL_FREQ_40
- depends on SOC_XTAL_SUPPORT_40M
- bool "40 MHz"
- config XTAL_FREQ_AUTO
- depends on SOC_XTAL_SUPPORT_AUTO_DETECT
- bool "Autodetect"
- endchoice
- # rtc_xtal_freq_t enum in soc/rtc.h lists the XTAL frequencies can be supported
- # SOC_XTAL_SUPPORT_XXX in soc_caps.h lists the XTAL frequencies already supported
- config XTAL_FREQ
- int
- default 24 if XTAL_FREQ_24
- default 26 if XTAL_FREQ_26
- default 32 if XTAL_FREQ_32
- default 40 if XTAL_FREQ_40
- default 0 if XTAL_FREQ_AUTO
- endmenu
- menu "Crypto DPA Protection"
- depends on SOC_CRYPTO_DPA_PROTECTION_SUPPORTED
- config ESP_CRYPTO_DPA_PROTECTION_AT_STARTUP
- bool "Enable crypto DPA protection at startup"
- default y
- help
- This config controls the DPA (Differential Power Analysis) protection
- knob for the crypto peripherals. DPA protection dynamically adjusts the
- clock frequency of the crypto peripheral. DPA protection helps to make it
- difficult to perform SCA attacks on the crypto peripherals. However,
- there is also associated performance impact based on the security level
- set. Please refer to the TRM for more details.
- choice ESP_CRYPTO_DPA_PROTECTION_LEVEL
- prompt "DPA protection level"
- depends on ESP_CRYPTO_DPA_PROTECTION_AT_STARTUP
- default ESP_CRYPTO_DPA_PROTECTION_LEVEL_LOW
- help
- Configure the DPA protection security level
- config ESP_CRYPTO_DPA_PROTECTION_LEVEL_LOW
- bool "Security level low"
- config ESP_CRYPTO_DPA_PROTECTION_LEVEL_MEDIUM
- bool "Security level medium"
- config ESP_CRYPTO_DPA_PROTECTION_LEVEL_HIGH
- bool "Security level high"
- endchoice
- config ESP_CRYPTO_DPA_PROTECTION_LEVEL
- int
- default 1 if ESP_CRYPTO_DPA_PROTECTION_LEVEL_LOW
- default 2 if ESP_CRYPTO_DPA_PROTECTION_LEVEL_MEDIUM
- default 3 if ESP_CRYPTO_DPA_PROTECTION_LEVEL_HIGH
- endmenu
- # Invisible bringup bypass options for esp_hw_support component
- config ESP_BRINGUP_BYPASS_CPU_CLK_SETTING
- bool
- default y if !SOC_CLK_TREE_SUPPORTED
- default n
- help
- This option is only used for new chip bringup, when
- clock support isn't done yet. So with this option,
- we use xtal on FPGA as the clock source.
- endmenu
|