@@ -340,15 +340,25 @@ $(BUILD)/esp-idf:
340340
341341TARGET_SDKCONFIG = esp-idf-config/sdkconfig-$(IDF_TARGET ) .defaults
342342
343+
343344ifeq ($(CIRCUITPY_ESP_FLASH_SIZE ) , 2MB)
344- FLASH_SDKCONFIG ?= esp-idf-config/sdkconfig-$(CIRCUITPY_ESP_FLASH_SIZE)-no-ota-no-uf2.defaults
345+ FLASH_SIZE_SDKCONFIG ?= esp-idf-config/sdkconfig-flash -$(CIRCUITPY_ESP_FLASH_SIZE)-no-ota-no-uf2.defaults
345346else
346347UF2_BOOTLOADER ?= $(CIRCUITPY_USB )
347348ifeq ($(UF2_BOOTLOADER ) , 1)
348- FLASH_SDKCONFIG ?= esp-idf-config/sdkconfig-$(CIRCUITPY_ESP_FLASH_SIZE).defaults
349+ FLASH_SIZE_SDKCONFIG ?= esp-idf-config/sdkconfig-flash -$(CIRCUITPY_ESP_FLASH_SIZE).defaults
349350else
350- FLASH_SDKCONFIG ?= esp-idf-config/sdkconfig-$(CIRCUITPY_ESP_FLASH_SIZE)-no-uf2.defaults
351+ FLASH_SIZE_SDKCONFIG ?= esp-idf-config/sdkconfig-flash-$(CIRCUITPY_ESP_FLASH_SIZE)-no-uf2.defaults
352+ endif
351353endif
354+ FLASH_MODE_SDKCONFIG ?= esp-idf-config/sdkconfig-flash-$(CIRCUITPY_ESP_FLASH_MODE ) .defaults
355+ FLASH_SPEED_SDKCONFIG ?= esp-idf-config/sdkconfig-flash-$(CIRCUITPY_ESP_FLASH_FREQ ) .defaults
356+
357+ ifneq ($(CIRCUITPY_ESP_PSRAM_SIZE ) , 0)
358+ PSRAM_SDKCONFIG = esp-idf-config/sdkconfig-psram.defaults
359+ PSRAM_SIZE_SDKCONFIG = esp-idf-config/sdkconfig-psram-$(CIRCUITPY_ESP_PSRAM_SIZE).defaults
360+ PSRAM_MODE_SDKCONFIG = esp-idf-config/sdkconfig-psram-$(CIRCUITPY_ESP_PSRAM_MODE).defaults
361+ PSRAM_SPEED_SDKCONFIG = esp-idf-config/sdkconfig-psram-$(CIRCUITPY_ESP_PSRAM_FREQ).defaults
352362endif
353363
354364ifeq ($(DEBUG ) , 1)
@@ -357,15 +367,15 @@ else
357367 DEBUG_SDKCONFIG = esp-idf-config/sdkconfig-opt.defaults
358368endif
359369
360- SDKCONFIGS := esp-idf-config/sdkconfig.defaults;$(DEBUG_SDKCONFIG ) ;$(FLASH_SDKCONFIG ) ;$(TARGET_SDKCONFIG ) ;boards/$(BOARD ) /sdkconfig
370+ SDKCONFIGS := esp-idf-config/sdkconfig.defaults;$(DEBUG_SDKCONFIG ) ;$(FLASH_SIZE_SDKCONFIG ) ; $( FLASH_MODE_SDKCONFIG ) ; $( FLASH_SPEED_SDKCONFIG ) ; $( PSRAM_SDKCONFIG ) ; $( PSRAM_SIZE_SDKCONFIG ) ; $( PSRAM_MODE_SDKCONFIG ) ; $( PSRAM_SPEED_SDKCONFIG ) ;$(TARGET_SDKCONFIG ) ;boards/$(BOARD ) /sdkconfig
361371ifneq ($(CIRCUITPY_BLEIO ) ,0)
362372 SDKCONFIGS := esp-idf-config/sdkconfig-ble.defaults;$(SDKCONFIGS)
363373endif
364374# create the config headers
365375.PHONY : do-sdkconfig
366376do-sdkconfig : $(BUILD ) /esp-idf/config/sdkconfig.h
367377QSTR_GLOBAL_REQUIREMENTS += $(BUILD ) /esp-idf/config/sdkconfig.h
368- $(BUILD ) /esp-idf/config/sdkconfig.h : boards/$(BOARD ) /sdkconfig CMakeLists.txt | $(BUILD ) /esp-idf
378+ $(BUILD ) /esp-idf/config/sdkconfig.h : boards/$(BOARD ) /sdkconfig boards/ $( BOARD ) /mpconfigboard.mk CMakeLists.txt | $(BUILD ) /esp-idf
369379 IDF_PATH=$(IDF_PATH ) cmake -S . -B $(BUILD ) /esp-idf -DSDKCONFIG=$(BUILD ) /esp-idf/sdkconfig -DSDKCONFIG_DEFAULTS=" $( SDKCONFIGS) " -DCMAKE_TOOLCHAIN_FILE=$(IDF_PATH ) /tools/cmake/toolchain-$(IDF_TARGET ) .cmake -DIDF_TARGET=$(IDF_TARGET ) -GNinja
370380
371381# build a lib
@@ -385,10 +395,11 @@ $(BUILD)/esp-idf/partition_table/partition-table.bin: $(BUILD)/esp-idf/config/sd
385395# run menuconfig and then remove standard settings
386396menuconfig : $(BUILD ) /esp-idf/config $(BUILD ) /esp-idf/config/sdkconfig.h
387397 $(Q ) ninja -C $(BUILD ) /esp-idf menuconfig
388- # Newer versions of the idf will have save-defconfig that will only include non-default values.
389- # We should use that when available. For now, we sort out everything.
390398 python tools/update_sdkconfig.py --board=$(BOARD ) --debug=$(DEBUG )
391399
400+ update-all-sdkconfigs : $(BUILD ) /esp-idf/config/sdkconfig.h
401+ python tools/update_sdkconfig.py --update_all --board=$(BOARD ) --debug=$(DEBUG )
402+
392403BINARY_WIFI_BLOBS = libcoexist.a libcore.a libespnow.a libmesh.a libnet80211.a libpp.a libsmartconfig.a libwapi.a
393404BINARY_BLOBS = esp-idf/components/esp_phy/lib/$(IDF_TARGET ) /libphy.a $(addprefix esp-idf/components/esp_wifi/lib/$(IDF_TARGET ) /, $(BINARY_WIFI_BLOBS ) )
394405ifeq ($(IDF_TARGET ) ,esp32)
@@ -449,7 +460,26 @@ IDF_CMAKE_TARGETS = \
449460PARTITION_TABLE_OFFSET = 0x8000
450461FIRMWARE_OFFSET = 0x10000
451462
452- FLASH_FLAGS = --flash_mode $(CIRCUITPY_ESP_FLASH_MODE ) --flash_freq $(CIRCUITPY_ESP_FLASH_FREQ ) --flash_size $(CIRCUITPY_ESP_FLASH_SIZE )
463+ # Map the flash's run mode to flashing mode (only dual is supported by the early bootloaders).
464+ # https://github.com/espressif/esp-idf/blob/82cceabc6e6a0a2d8c40e2249bc59917cc5e577a/components/esptool_py/Kconfig.projbuild#L74-L87
465+ ifeq ($(CIRCUITPY_ESP_FLASH_MODE ) ,dout)
466+ ESPTOOLPY_FLASHMODE = "dout"
467+ endif
468+ ifeq ($(CIRCUITPY_ESP_FLASH_MODE ) ,opi)
469+ ESPTOOLPY_FLASHMODE = "dout"
470+ endif
471+ # Most modes can flash with dio
472+ ESPTOOLPY_FLASHMODE ?= "dio"
473+
474+ # Cap the flash speed to 80m.
475+ # https://github.com/espressif/esp-idf/blob/82cceabc6e6a0a2d8c40e2249bc59917cc5e577a/components/esptool_py/Kconfig.projbuild#L74-L87
476+ ifeq ($(CIRCUITPY_ESP_FLASH_FREQ ) ,120m)
477+ ESPTOOLPY_FLASHFREQ = "80m"
478+ else
479+ ESPTOOLPY_FLASHFREQ = $(CIRCUITPY_ESP_FLASH_FREQ)
480+ endif
481+
482+ FLASH_FLAGS = --flash_mode $(ESPTOOLPY_FLASHMODE ) --flash_freq $(ESPTOOLPY_FLASHFREQ ) --flash_size $(CIRCUITPY_ESP_FLASH_SIZE )
453483
454484ESPTOOL_FLAGS ?= --before=default_reset --after=no_reset --baud 921600
455485
0 commit comments