Skip to content

Commit 73e04e8

Browse files
committed
Split out flash and psram settings from sdkconfig
1 parent 6043874 commit 73e04e8

41 files changed

Lines changed: 540 additions & 1414 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

ports/espressif/CMakeLists.txt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,8 @@ cmake_minimum_required(VERSION 3.16)
55
set(ENV{IDF_PATH} ${CMAKE_SOURCE_DIR}/esp-idf)
66

77
# The component list here determines what options we get in menuconfig and what the ninja file can build.
8-
set(COMPONENTS bt driver esp-tls esp_adc_cal esp_event esp_netif esp_psram esp_wifi esptool_py freertos log lwip main mbedtls mdns soc ulp usb wpa_supplicant esp_lcd)
9-
set(EXTRA_COMPONENT_DIRS "esp-protocols/components/mdns")
10-
11-
list(APPEND EXTRA_COMPONENT_DIRS "esp32-camera")
8+
set(COMPONENTS bt driver esp-tls esp_adc_cal esp_event esp_netif esp_psram esp_wifi esptool_py freertos log lwip main mbedtls mdns soc ulp usb wpa_supplicant esp32-camera esp_lcd)
9+
set(EXTRA_COMPONENT_DIRS "esp-protocols/components/mdns" "esp32-camera")
1210

1311
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
1412
project(circuitpython)

ports/espressif/Makefile

Lines changed: 38 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -340,15 +340,25 @@ $(BUILD)/esp-idf:
340340

341341
TARGET_SDKCONFIG = esp-idf-config/sdkconfig-$(IDF_TARGET).defaults
342342

343+
343344
ifeq ($(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
345346
else
346347
UF2_BOOTLOADER ?= $(CIRCUITPY_USB)
347348
ifeq ($(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
349350
else
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
351353
endif
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
352362
endif
353363

354364
ifeq ($(DEBUG), 1)
@@ -357,15 +367,15 @@ else
357367
DEBUG_SDKCONFIG = esp-idf-config/sdkconfig-opt.defaults
358368
endif
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
361371
ifneq ($(CIRCUITPY_BLEIO),0)
362372
SDKCONFIGS := esp-idf-config/sdkconfig-ble.defaults;$(SDKCONFIGS)
363373
endif
364374
# create the config headers
365375
.PHONY: do-sdkconfig
366376
do-sdkconfig: $(BUILD)/esp-idf/config/sdkconfig.h
367377
QSTR_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
386396
menuconfig: $(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+
392403
BINARY_WIFI_BLOBS = libcoexist.a libcore.a libespnow.a libmesh.a libnet80211.a libpp.a libsmartconfig.a libwapi.a
393404
BINARY_BLOBS = esp-idf/components/esp_phy/lib/$(IDF_TARGET)/libphy.a $(addprefix esp-idf/components/esp_wifi/lib/$(IDF_TARGET)/, $(BINARY_WIFI_BLOBS))
394405
ifeq ($(IDF_TARGET),esp32)
@@ -449,7 +460,26 @@ IDF_CMAKE_TARGETS = \
449460
PARTITION_TABLE_OFFSET = 0x8000
450461
FIRMWARE_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

454484
ESPTOOL_FLAGS ?= --before=default_reset --after=no_reset --baud 921600
455485

ports/espressif/boards/adafruit_esp32s3_camera/mpconfigboard.mk

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ CIRCUITPY_ESP_FLASH_MODE = dio
99
CIRCUITPY_ESP_FLASH_FREQ = 40m
1010
CIRCUITPY_ESP_FLASH_SIZE = 4MB
1111
CIRCUITPY_ESP_PSRAM_SIZE = 2MB
12+
CIRCUITPY_ESP_PSRAM_MODE = qio
13+
CIRCUITPY_ESP_PSRAM_FREQ = 80m
1214
FLASH_SDKCONFIG = esp-idf-config/sdkconfig-4MB-1ota.defaults
1315

1416
CIRCUITPY_AUDIOBUSIO = 0
Lines changed: 4 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,15 @@
1-
# Component config
2-
#
3-
#
4-
# ESP32S3-Specific
51
#
6-
CONFIG_ESP32S3_SPIRAM_SUPPORT=y
7-
8-
#
9-
# SPI RAM config
2+
# Espressif IoT Development Framework Configuration
103
#
11-
CONFIG_SPIRAM_MODE_QUAD=y
12-
# CONFIG_SPIRAM_MODE_OCT is not set
13-
CONFIG_SPIRAM_TYPE_AUTO=y
14-
# CONFIG_SPIRAM_TYPE_ESPPSRAM16 is not set
15-
# CONFIG_SPIRAM_TYPE_ESPPSRAM32 is not set
16-
# CONFIG_SPIRAM_TYPE_ESPPSRAM64 is not set
17-
CONFIG_SPIRAM_SIZE=2097152
18-
194
#
20-
# PSRAM Clock and CS IO for ESP32S3
5+
# Component config
216
#
22-
CONFIG_DEFAULT_PSRAM_CLK_IO=30
23-
CONFIG_DEFAULT_PSRAM_CS_IO=26
24-
# end of PSRAM Clock and CS IO for ESP32S3
25-
26-
# CONFIG_SPIRAM_FETCH_INSTRUCTIONS is not set
27-
# CONFIG_SPIRAM_RODATA is not set
28-
# CONFIG_SPIRAM_SPEED_80M is not set
29-
CONFIG_SPIRAM_SPEED_80M=y
30-
# CONFIG_SPIRAM_SPEED_26M is not set
31-
# CONFIG_SPIRAM_SPEED_20M is not set
32-
CONFIG_SPIRAM=y
33-
CONFIG_SPIRAM_BOOT_INIT=y
34-
# CONFIG_SPIRAM_IGNORE_NOTFOUND is not set
35-
CONFIG_SPIRAM_USE_MEMMAP=y
36-
# CONFIG_SPIRAM_USE_CAPS_ALLOC is not set
37-
# CONFIG_SPIRAM_USE_MALLOC is not set
38-
CONFIG_SPIRAM_MEMTEST=y
39-
# CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY is not set
40-
# end of SPI RAM config
41-
42-
# end of ESP32S3-Specific
43-
447
#
458
# LWIP
469
#
4710
CONFIG_LWIP_LOCAL_HOSTNAME="espressif-esp32s3"
4811
# end of LWIP
4912

50-
# CONFIG_OV7670_SUPPORT is not set
51-
# CONFIG_NT99141_SUPPORT is not set
52-
CONFIG_OV3360_SUPPORT=n
53-
# CONFIG_OV2640_SUPPORT is not set
54-
CONFIG_OV5640_SUPPORT=y
55-
# CONFIG_GC2145_SUPPORT is not set
56-
# CONFIG_GC032A_SUPPORT is not set
57-
# CONFIG_GC0308_SUPPORT is not set
58-
# CONFIG_BF3005_SUPPORT is not set
59-
# CONFIG_BF20A6_SUPPORT is not set
60-
# CONFIG_SC101IOT_SUPPORT is not set
61-
# CONFIG_SC030IOT_SUPPORT is not set
6213
# end of Component config
14+
15+
# end of Espressif IoT Development Framework Configuration

ports/espressif/boards/adafruit_feather_esp32_v2/mpconfigboard.mk

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,5 @@ CIRCUITPY_ESP_FLASH_FREQ = 40m
88
CIRCUITPY_ESP_FLASH_SIZE = 8MB
99

1010
CIRCUITPY_ESP_PSRAM_SIZE = 2MB
11+
CIRCUITPY_ESP_PSRAM_MODE = qio
12+
CIRCUITPY_ESP_PSRAM_FREQ = 40m
Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +0,0 @@
1-
# SPI RAM config
2-
#
3-
# CONFIG_SPIRAM_TYPE_AUTO is not set
4-
CONFIG_SPIRAM_TYPE_ESPPSRAM16=y
5-
# CONFIG_SPIRAM_TYPE_ESPPSRAM32 is not set
6-
# CONFIG_SPIRAM_TYPE_ESPPSRAM64 is not set
7-
CONFIG_SPIRAM_SIZE=2097152
8-
CONFIG_SPIRAM_SPEED_40M=y
9-
CONFIG_SPIRAM=y
10-
CONFIG_SPIRAM_BOOT_INIT=y
11-
CONFIG_SPIRAM_IGNORE_NOTFOUND=y
12-
CONFIG_SPIRAM_USE_MEMMAP=y
13-
# CONFIG_SPIRAM_USE_CAPS_ALLOC is not set
14-
# CONFIG_SPIRAM_USE_MALLOC is not set
15-
CONFIG_SPIRAM_MEMTEST=y
16-
# CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY is not set
17-
# CONFIG_SPIRAM_ALLOW_NOINIT_SEG_EXTERNAL_MEMORY is not set
18-
CONFIG_SPIRAM_CACHE_WORKAROUND=y
19-
20-
# Uncomment (remove ###) to send ESP_LOG output to TX/RX pins
21-
### #
22-
### # ESP System Settings
23-
### #
24-
### CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT=y
25-
### # CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set
26-
### CONFIG_ESP_CONSOLE_UART_CUSTOM=y
27-
### # CONFIG_ESP_CONSOLE_NONE is not set
28-
### CONFIG_ESP_CONSOLE_UART=y
29-
### CONFIG_ESP_CONSOLE_UART_CUSTOM_NUM_0=y
30-
### # CONFIG_ESP_CONSOLE_UART_CUSTOM_NUM_1 is not set
31-
### CONFIG_ESP_CONSOLE_UART_NUM=0
32-
### CONFIG_ESP_CONSOLE_UART_TX_GPIO=8
33-
### CONFIG_ESP_CONSOLE_UART_RX_GPIO=7
34-
### CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200
35-
### # CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_5 is not set
36-
### # end of ESP System Settings

ports/espressif/boards/adafruit_feather_esp32s3_reverse_tft/mpconfigboard.mk

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,11 @@ USB_MANUFACTURER = "Adafruit"
77
IDF_TARGET = esp32s3
88

99
CIRCUITPY_ESP_FLASH_MODE = dio
10-
CIRCUITPY_ESP_FLASH_FREQ = 40m
10+
CIRCUITPY_ESP_FLASH_FREQ = 80m
1111
CIRCUITPY_ESP_FLASH_SIZE = 4MB
1212

13-
CIRCUITPY_ESPCAMERA = 0
1413
CIRCUITPY_ESP_PSRAM_SIZE = 2MB
14+
CIRCUITPY_ESP_PSRAM_MODE = qio
15+
CIRCUITPY_ESP_PSRAM_FREQ = 80m
16+
17+
CIRCUITPY_ESPCAMERA = 0
Lines changed: 4 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,15 @@
11
#
2-
# SPI RAM config
2+
# Espressif IoT Development Framework Configuration
33
#
4-
CONFIG_SPIRAM_MODE_QUAD=y
5-
# CONFIG_SPIRAM_MODE_OCT is not set
6-
CONFIG_SPIRAM_TYPE_AUTO=y
7-
# CONFIG_SPIRAM_TYPE_ESPPSRAM16 is not set
8-
# CONFIG_SPIRAM_TYPE_ESPPSRAM32 is not set
9-
# CONFIG_SPIRAM_TYPE_ESPPSRAM64 is not set
10-
CONFIG_SPIRAM_SIZE=2097152
114
#
12-
# PSRAM Clock and CS IO for ESP32S3
5+
# Component config
136
#
14-
CONFIG_SPIRAM_CLK_IO=30
15-
CONFIG_SPIRAM_CS_IO=26
16-
# end of PSRAM Clock and CS IO for ESP32S3
17-
18-
# CONFIG_SPIRAM_FETCH_INSTRUCTIONS is not set
19-
# CONFIG_SPIRAM_RODATA is not set
20-
# CONFIG_SPIRAM_SPEED_120M is not set
21-
CONFIG_SPIRAM_SPEED_80M=y
22-
# CONFIG_SPIRAM_SPEED_40M is not set
23-
CONFIG_SPIRAM=y
24-
CONFIG_SPIRAM_BOOT_INIT=y
25-
# CONFIG_SPIRAM_IGNORE_NOTFOUND is not set
26-
CONFIG_SPIRAM_USE_MEMMAP=y
27-
# CONFIG_SPIRAM_USE_CAPS_ALLOC is not set
28-
# CONFIG_SPIRAM_USE_MALLOC is not set
29-
CONFIG_SPIRAM_MEMTEST=y
30-
# end of SPI RAM config
31-
32-
# end of ESP32S3-Specific
33-
347
#
358
# LWIP
369
#
3710
CONFIG_LWIP_LOCAL_HOSTNAME="espressif-esp32s3"
3811
# end of LWIP
3912

4013
# end of Component config
14+
15+
# end of Espressif IoT Development Framework Configuration

ports/espressif/boards/adafruit_feather_esp32s3_tft/mpconfigboard.mk

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,12 @@ USB_MANUFACTURER = "Adafruit"
77
IDF_TARGET = esp32s3
88

99
CIRCUITPY_ESP_FLASH_MODE = dio
10-
CIRCUITPY_ESP_FLASH_FREQ = 40m
10+
CIRCUITPY_ESP_FLASH_FREQ = 80m
1111
CIRCUITPY_ESP_FLASH_SIZE = 4MB
1212

1313
OPTIMIZATION_FLAGS = -Os
1414
CIRCUITPY_ESPCAMERA = 0
1515

1616
CIRCUITPY_ESP_PSRAM_SIZE = 2MB
17+
CIRCUITPY_ESP_PSRAM_MODE = qio
18+
CIRCUITPY_ESP_PSRAM_FREQ = 80m
Lines changed: 4 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,15 @@
11
#
2-
# Component config
3-
#
4-
#
5-
# ESP32S3-Specific
2+
# Espressif IoT Development Framework Configuration
63
#
7-
# SPI RAM config
84
#
9-
CONFIG_SPIRAM_MODE_QUAD=y
10-
# CONFIG_SPIRAM_MODE_OCT is not set
11-
CONFIG_SPIRAM_TYPE_AUTO=y
12-
# CONFIG_SPIRAM_TYPE_ESPPSRAM16 is not set
13-
# CONFIG_SPIRAM_TYPE_ESPPSRAM32 is not set
14-
# CONFIG_SPIRAM_TYPE_ESPPSRAM64 is not set
15-
CONFIG_SPIRAM_SIZE=2097152
5+
# Component config
166
#
17-
# PSRAM Clock and CS IO for ESP32S3
18-
#
19-
CONFIG_SPIRAM_CLK_IO=30
20-
CONFIG_SPIRAM_CS_IO=26
21-
# end of PSRAM Clock and CS IO for ESP32S3
22-
23-
# CONFIG_SPIRAM_FETCH_INSTRUCTIONS is not set
24-
# CONFIG_SPIRAM_RODATA is not set
25-
# CONFIG_SPIRAM_SPEED_120M is not set
26-
CONFIG_SPIRAM_SPEED_80M=y
27-
# CONFIG_SPIRAM_SPEED_40M is not set
28-
CONFIG_SPIRAM=y
29-
CONFIG_SPIRAM_BOOT_INIT=y
30-
# CONFIG_SPIRAM_IGNORE_NOTFOUND is not set
31-
CONFIG_SPIRAM_USE_MEMMAP=y
32-
# CONFIG_SPIRAM_USE_CAPS_ALLOC is not set
33-
# CONFIG_SPIRAM_USE_MALLOC is not set
34-
CONFIG_SPIRAM_MEMTEST=y
35-
# end of SPI RAM config
36-
37-
# end of ESP32S3-Specific
38-
397
#
408
# LWIP
419
#
4210
CONFIG_LWIP_LOCAL_HOSTNAME="espressif-esp32s3"
4311
# end of LWIP
4412

4513
# end of Component config
14+
15+
# end of Espressif IoT Development Framework Configuration

0 commit comments

Comments
 (0)