This is an automated email from the ASF dual-hosted git repository.
lupyuen pushed a commit to branch releases/12.9
in repository https://gitbox.apache.org/repos/asf/nuttx.git
The following commit(s) were added to refs/heads/releases/12.9 by this push:
new 7c95e3c613 espressif: Simplify the selection of the SPI flash frequency
7c95e3c613 is described below
commit 7c95e3c613820adf9802ba2fea0806333c02a553
Author: Tiago Medicci Serrano <[email protected]>
AuthorDate: Wed Apr 2 17:19:18 2025 -0300
espressif: Simplify the selection of the SPI flash frequency
This commit simplifies the selection of the SPI flash frequency for
Espressif SoCs by using a standardized Kconfig-defined macro.
Signed-off-by: Tiago Medicci Serrano <[email protected]>
---
arch/risc-v/src/common/espressif/Bootloader.mk | 1 +
arch/risc-v/src/common/espressif/Kconfig | 18 ++++++++++++++
arch/xtensa/src/common/espressif/Kconfig | 33 +++++++++++++++++++++++++-
arch/xtensa/src/esp32/Bootloader.mk | 1 +
arch/xtensa/src/esp32s2/Bootloader.mk | 1 +
arch/xtensa/src/esp32s3/Bootloader.mk | 1 +
tools/esp32/Config.mk | 10 +-------
tools/esp32s2/Config.mk | 10 +-------
tools/esp32s3/Config.mk | 10 +-------
tools/espressif/Config.mk | 14 +----------
tools/espressif/build_mcuboot.sh | 2 +-
11 files changed, 59 insertions(+), 42 deletions(-)
diff --git a/arch/risc-v/src/common/espressif/Bootloader.mk
b/arch/risc-v/src/common/espressif/Bootloader.mk
index e14d627ba7..e46f723536 100644
--- a/arch/risc-v/src/common/espressif/Bootloader.mk
+++ b/arch/risc-v/src/common/espressif/Bootloader.mk
@@ -62,6 +62,7 @@ $(BOOTLOADER_CONFIG): $(TOPDIR)/.config $(BOOTLOADER_SRCDIR)
$(if $(CONFIG_ESPRESSIF_FLASH_FREQ_40M),$(call
cfg_en,CONFIG_ESPTOOLPY_FLASHFREQ_40M)) \
$(if $(CONFIG_ESPRESSIF_FLASH_FREQ_26M),$(call
cfg_en,CONFIG_ESPTOOLPY_FLASHFREQ_26M)) \
$(if $(CONFIG_ESPRESSIF_FLASH_FREQ_20M),$(call
cfg_en,CONFIG_ESPTOOLPY_FLASHFREQ_20M)) \
+ $(call
cfg_val,CONFIG_ESPTOOLPY_FLASHFREQ,$(CONFIG_ESPRESSIF_FLASH_FREQ)) \
} > $(BOOTLOADER_CONFIG)
ifeq ($(CONFIG_ESPRESSIF_BOOTLOADER_MCUBOOT),y)
$(Q) { \
diff --git a/arch/risc-v/src/common/espressif/Kconfig
b/arch/risc-v/src/common/espressif/Kconfig
index ea6e872f57..45b94ece08 100644
--- a/arch/risc-v/src/common/espressif/Kconfig
+++ b/arch/risc-v/src/common/espressif/Kconfig
@@ -1488,6 +1488,24 @@ config ESPRESSIF_FLASH_FREQ_20M
endchoice # ESPRESSIF_FLASH_FREQ
+config ESPRESSIF_FLASH_FREQ
+ 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 ESPRESSIF_FLASH_FREQ_120M
+ default '80m' if ESPRESSIF_FLASH_FREQ_80M
+ default '60m' if ESPRESSIF_FLASH_FREQ_60M
+ default '48m' if ESPRESSIF_FLASH_FREQ_64M
+ default '48m' if ESPRESSIF_FLASH_FREQ_48M
+ default '24m' if ESPRESSIF_FLASH_FREQ_32M
+ default '30m' if ESPRESSIF_FLASH_FREQ_30M
+ default '24m' if ESPRESSIF_FLASH_FREQ_24M
+ default '40m' if ESPRESSIF_FLASH_FREQ_40M
+ default '26m' if ESPRESSIF_FLASH_FREQ_26M
+ default '20m' if ESPRESSIF_FLASH_FREQ_20M
+ default '12m' if ESPRESSIF_FLASH_FREQ_16M
+ default '20m' # if no clock can match in bin headers, go with minimal.
+
config ESPRESSIF_SPI_FLASH_USE_ROM_CODE
bool "Use SPI flash driver in ROM"
default n
diff --git a/arch/xtensa/src/common/espressif/Kconfig
b/arch/xtensa/src/common/espressif/Kconfig
index 88f71c879b..8652134582 100644
--- a/arch/xtensa/src/common/espressif/Kconfig
+++ b/arch/xtensa/src/common/espressif/Kconfig
@@ -433,24 +433,55 @@ endchoice # ESPRESSIF_FLASH_MODE
choice ESPRESSIF_FLASH_FREQ
prompt "SPI Flash frequency"
- default ESPRESSIF_FLASH_FREQ_40M
+ default ESPRESSIF_FLASH_FREQ_120M if ESP32S3_FLASH_FREQ_120M
+ default ESPRESSIF_FLASH_FREQ_80M if ESP32_FLASH_FREQ_80M ||
ESP32S3_FLASH_FREQ_80M
+ default ESPRESSIF_FLASH_FREQ_40M if ESP32_FLASH_FREQ_40M ||
ESP32S3_FLASH_FREQ_40M
+ default ESPRESSIF_FLASH_FREQ_26M if ESP32_FLASH_FREQ_26M
+ default ESPRESSIF_FLASH_FREQ_20M if ESP32_FLASH_FREQ_20M ||
ESP32S3_FLASH_FREQ_20M
+ default ESPRESSIF_FLASH_FREQ_20M
---help---
SPI Flash frequency.
+config ESPRESSIF_FLASH_FREQ_120M
+ bool "120 MHz"
+ depends on ESP32S3_FLASH_FREQ_120M
+
config ESPRESSIF_FLASH_FREQ_80M
bool "80 MHz"
+ depends on ESP32_FLASH_FREQ_80M || ESP32S3_FLASH_FREQ_80M
config ESPRESSIF_FLASH_FREQ_40M
bool "40 MHz"
+ depends on ESP32_FLASH_FREQ_40M || ESP32S3_FLASH_FREQ_40M
config ESPRESSIF_FLASH_FREQ_26M
bool "26 MHz"
+ depends on ESP32_FLASH_FREQ_26M
config ESPRESSIF_FLASH_FREQ_20M
bool "20 MHz"
+ depends on ESP32_FLASH_FREQ_20M || ESP32S3_FLASH_FREQ_20M
endchoice # ESPRESSIF_FLASH_FREQ
+config ESPRESSIF_FLASH_FREQ
+ 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 ESPRESSIF_FLASH_FREQ_120M
+ default '80m' if ESPRESSIF_FLASH_FREQ_80M
+ default '60m' if ESPRESSIF_FLASH_FREQ_60M
+ default '48m' if ESPRESSIF_FLASH_FREQ_64M
+ default '48m' if ESPRESSIF_FLASH_FREQ_48M
+ default '24m' if ESPRESSIF_FLASH_FREQ_32M
+ default '30m' if ESPRESSIF_FLASH_FREQ_30M
+ default '24m' if ESPRESSIF_FLASH_FREQ_24M
+ default '40m' if ESPRESSIF_FLASH_FREQ_40M
+ default '26m' if ESPRESSIF_FLASH_FREQ_26M
+ default '20m' if ESPRESSIF_FLASH_FREQ_20M
+ default '12m' if ESPRESSIF_FLASH_FREQ_16M
+ default '20m' # if no clock can match in bin headers, go with minimal.
+
if ESPRESSIF_HAVE_OTA_PARTITION
comment "Application Image OTA Update support"
diff --git a/arch/xtensa/src/esp32/Bootloader.mk
b/arch/xtensa/src/esp32/Bootloader.mk
index 822329fbfd..975eabc897 100644
--- a/arch/xtensa/src/esp32/Bootloader.mk
+++ b/arch/xtensa/src/esp32/Bootloader.mk
@@ -74,6 +74,7 @@ endif
$(if $(CONFIG_ESP32_FLASH_FREQ_40M),$(call
cfg_en,CONFIG_ESPTOOLPY_FLASHFREQ_40M)) \
$(if $(CONFIG_ESP32_FLASH_FREQ_26M),$(call
cfg_en,CONFIG_ESPTOOLPY_FLASHFREQ_26M)) \
$(if $(CONFIG_ESP32_FLASH_FREQ_20M),$(call
cfg_en,CONFIG_ESPTOOLPY_FLASHFREQ_20M)) \
+ $(call
cfg_val,CONFIG_ESPTOOLPY_FLASHFREQ,$(CONFIG_ESPRESSIF_FLASH_FREQ)) \
} > $(BOOTLOADER_CONFIG)
ifeq ($(CONFIG_ESP32_APP_FORMAT_MCUBOOT),y)
$(Q) { \
diff --git a/arch/xtensa/src/esp32s2/Bootloader.mk
b/arch/xtensa/src/esp32s2/Bootloader.mk
index f647c9e536..b83a59025c 100644
--- a/arch/xtensa/src/esp32s2/Bootloader.mk
+++ b/arch/xtensa/src/esp32s2/Bootloader.mk
@@ -77,6 +77,7 @@ endif
$(if $(CONFIG_ESPRESSIF_FLASH_FREQ_40M),$(call
cfg_en,CONFIG_ESPTOOLPY_FLASHFREQ_40M)) \
$(if $(CONFIG_ESPRESSIF_FLASH_FREQ_26M),$(call
cfg_en,CONFIG_ESPTOOLPY_FLASHFREQ_26M)) \
$(if $(CONFIG_ESPRESSIF_FLASH_FREQ_20M),$(call
cfg_en,CONFIG_ESPTOOLPY_FLASHFREQ_20M)) \
+ $(call
cfg_val,CONFIG_ESPTOOLPY_FLASHFREQ,$(CONFIG_ESPRESSIF_FLASH_FREQ)) \
$(if $(CONFIG_ESP32S2_SECURE_BOOT),$(call
cfg_en,CONFIG_SECURE_BOOT)$(call cfg_en,CONFIG_SECURE_BOOT_V2_ENABLED)$(call
cfg_val,CONFIG_ESP_SIGN_KEY_FILE,$(abspath $(TOPDIR)/$(ESPSEC_KEYDIR)/$(subst
",,$(CONFIG_ESP32S2_SECURE_BOOT_APP_SIGNING_KEY))))) \
$(if
$(CONFIG_ESP32S2_SECURE_SIGNED_APPS_SCHEME_RSA_2048),$(call
cfg_en,CONFIG_ESP_USE_MBEDTLS)$(call cfg_en,CONFIG_ESP_SIGN_RSA)$(call
cfg_val,CONFIG_ESP_SIGN_RSA_LEN,2048)) \
$(if
$(CONFIG_ESP32S2_SECURE_SIGNED_APPS_SCHEME_RSA_3072),$(call
cfg_en,CONFIG_ESP_USE_MBEDTLS)$(call cfg_en,CONFIG_ESP_SIGN_RSA)$(call
cfg_val,CONFIG_ESP_SIGN_RSA_LEN,3072)) \
diff --git a/arch/xtensa/src/esp32s3/Bootloader.mk
b/arch/xtensa/src/esp32s3/Bootloader.mk
index c675f76fdb..7e47af0cc9 100644
--- a/arch/xtensa/src/esp32s3/Bootloader.mk
+++ b/arch/xtensa/src/esp32s3/Bootloader.mk
@@ -61,6 +61,7 @@ $(BOOTLOADER_CONFIG): $(TOPDIR)/.config $(BOOTLOADER_DIR)
$(if $(CONFIG_ESP32S3_FLASH_FREQ_80M),$(call
cfg_en,CONFIG_ESPTOOLPY_FLASHFREQ_80M)) \
$(if $(CONFIG_ESP32S3_FLASH_FREQ_40M),$(call
cfg_en,CONFIG_ESPTOOLPY_FLASHFREQ_40M)) \
$(if $(CONFIG_ESP32S3_FLASH_FREQ_20M),$(call
cfg_en,CONFIG_ESPTOOLPY_FLASHFREQ_20M)) \
+ $(call
cfg_val,CONFIG_ESPTOOLPY_FLASHFREQ,$(CONFIG_ESPRESSIF_FLASH_FREQ)) \
} > $(BOOTLOADER_CONFIG)
ifeq ($(CONFIG_ESP32S3_APP_FORMAT_MCUBOOT),y)
$(Q) { \
diff --git a/tools/esp32/Config.mk b/tools/esp32/Config.mk
index 7f155682a1..d3aa9c6545 100644
--- a/tools/esp32/Config.mk
+++ b/tools/esp32/Config.mk
@@ -44,15 +44,7 @@ else ifeq ($(CONFIG_ESP32_FLASH_MODE_QOUT),y)
FLASH_MODE := qout
endif
-ifeq ($(CONFIG_ESP32_FLASH_FREQ_80M),y)
- FLASH_FREQ := 80m
-else ifeq ($(CONFIG_ESP32_FLASH_FREQ_40M),y)
- FLASH_FREQ := 40m
-else ifeq ($(CONFIG_ESP32_FLASH_FREQ_26M),y)
- FLASH_FREQ := 26m
-else ifeq ($(CONFIG_ESP32_FLASH_FREQ_20M),y)
- FLASH_FREQ := 20m
-endif
+FLASH_FREQ := $(CONFIG_ESPRESSIF_FLASH_FREQ)
ifeq ($(CONFIG_ESP32_FLASH_DETECT),y)
ESPTOOL_WRITEFLASH_OPTS := -fs detect -fm dio -ff $(FLASH_FREQ)
diff --git a/tools/esp32s2/Config.mk b/tools/esp32s2/Config.mk
index 78b4cefe44..b79c4d4de2 100644
--- a/tools/esp32s2/Config.mk
+++ b/tools/esp32s2/Config.mk
@@ -44,15 +44,7 @@ else ifeq ($(CONFIG_ESPRESSIF_FLASH_MODE_QOUT),y)
FLASH_MODE := qout
endif
-ifeq ($(CONFIG_ESPRESSIF_FLASH_FREQ_80M),y)
- FLASH_FREQ := 80m
-else ifeq ($(CONFIG_ESPRESSIF_FLASH_FREQ_40M),y)
- FLASH_FREQ := 40m
-else ifeq ($(CONFIG_ESPRESSIF_FLASH_FREQ_26M),y)
- FLASH_FREQ := 26m
-else ifeq ($(CONFIG_ESPRESSIF_FLASH_FREQ_20M),y)
- FLASH_FREQ := 20m
-endif
+FLASH_FREQ := $(CONFIG_ESPRESSIF_FLASH_FREQ)
ifeq ($(CONFIG_ESP32S2_FLASH_DETECT),y)
ESPTOOL_WRITEFLASH_OPTS := -fs detect -fm dio -ff $(FLASH_FREQ)
diff --git a/tools/esp32s3/Config.mk b/tools/esp32s3/Config.mk
index ed8aa5b937..4e3aa20fcf 100644
--- a/tools/esp32s3/Config.mk
+++ b/tools/esp32s3/Config.mk
@@ -44,15 +44,7 @@ else ifeq ($(CONFIG_ESP32S3_FLASH_MODE_QOUT),y)
FLASH_MODE := qout
endif
-ifeq ($(CONFIG_ESP32S3_FLASH_FREQ_120M),y)
- FLASH_FREQ := 120m
-else ifeq ($(CONFIG_ESP32S3_FLASH_FREQ_80M),y)
- FLASH_FREQ := 80m
-else ifeq ($(CONFIG_ESP32S3_FLASH_FREQ_40M),y)
- FLASH_FREQ := 40m
-else ifeq ($(CONFIG_ESP32S3_FLASH_FREQ_20M),y)
- FLASH_FREQ := 20m
-endif
+FLASH_FREQ := $(CONFIG_ESPRESSIF_FLASH_FREQ)
ifeq ($(CONFIG_ESP32S3_FLASH_DETECT),y)
ESPTOOL_WRITEFLASH_OPTS := -fs detect -fm dio -ff $(FLASH_FREQ)
diff --git a/tools/espressif/Config.mk b/tools/espressif/Config.mk
index 568d749ca4..f356a7a439 100644
--- a/tools/espressif/Config.mk
+++ b/tools/espressif/Config.mk
@@ -48,19 +48,7 @@ else ifeq ($(CONFIG_ESPRESSIF_FLASH_MODE_QOUT),y)
FLASH_MODE := qout
endif
-ifeq ($(CONFIG_ESPRESSIF_FLASH_FREQ_80M),y)
- FLASH_FREQ := 80m
-else ifeq ($(CONFIG_ESPRESSIF_FLASH_FREQ_64M),y)
- FLASH_FREQ := 48m
-else ifeq ($(CONFIG_ESPRESSIF_FLASH_FREQ_48M),y)
- FLASH_FREQ := 48m
-else ifeq ($(CONFIG_ESPRESSIF_FLASH_FREQ_40M),y)
- FLASH_FREQ := 40m
-else ifeq ($(CONFIG_ESPRESSIF_FLASH_FREQ_26M),y)
- FLASH_FREQ := 26m
-else ifeq ($(CONFIG_ESPRESSIF_FLASH_FREQ_20M),y)
- FLASH_FREQ := 20m
-endif
+FLASH_FREQ := $(CONFIG_ESPRESSIF_FLASH_FREQ)
ifeq ($(CONFIG_ESPRESSIF_FLASH_DETECT),y)
ESPTOOL_WRITEFLASH_OPTS := -fs detect -fm dio -ff $(FLASH_FREQ)
diff --git a/tools/espressif/build_mcuboot.sh b/tools/espressif/build_mcuboot.sh
index 1cf010f6ec..1e14dea2f9 100755
--- a/tools/espressif/build_mcuboot.sh
+++ b/tools/espressif/build_mcuboot.sh
@@ -65,7 +65,7 @@ build_mcuboot() {
mcuboot_flashmode="dio"
fi
- mcuboot_flashfreq=$(sed -n 's/^CONFIG_ESPTOOLPY_FLASHFREQ_\(.*\)M=1/\1m/p'
"${mcuboot_config}")
+ mcuboot_flashfreq=$(grep -oP '^CONFIG_ESPTOOLPY_FLASHFREQ=\K.*'
"${mcuboot_config}")
if [ -z "${mcuboot_flashfreq}" ]; then
mcuboot_flashfreq="40m"
fi