From 628eb26c0739c002661f29b7aa760802669b82b4 Mon Sep 17 00:00:00 2001 From: hathach Date: Fri, 30 Jun 2023 15:54:36 +0700 Subject: [PATCH] add Adafruit QT PY S3 with 4MB flash 2 MB PSRAM also re-order Adafruit boards a bit --- boards.txt | 2490 +++++++++-------- .../bootloader-tinyuf2.bin | Bin 0 -> 22240 bytes .../partitions-4MB-tinyuf2.csv | 11 + .../adafruit_qtpy_esp32s3_n4r2/pins_arduino.h | 64 + .../adafruit_qtpy_esp32s3_n4r2/tinyuf2.bin | Bin 0 -> 173584 bytes .../adafruit_qtpy_esp32s3_n4r2/variant.cpp | 39 + .../pins_arduino.h | 7 + 7 files changed, 1466 insertions(+), 1145 deletions(-) create mode 100644 variants/adafruit_qtpy_esp32s3_n4r2/bootloader-tinyuf2.bin create mode 100644 variants/adafruit_qtpy_esp32s3_n4r2/partitions-4MB-tinyuf2.csv create mode 100644 variants/adafruit_qtpy_esp32s3_n4r2/pins_arduino.h create mode 100644 variants/adafruit_qtpy_esp32s3_n4r2/tinyuf2.bin create mode 100644 variants/adafruit_qtpy_esp32s3_n4r2/variant.cpp diff --git a/boards.txt b/boards.txt index e52e6dc2e93..a66ec14bac7 100644 --- a/boards.txt +++ b/boards.txt @@ -8300,7 +8300,7 @@ adafruit_metro_esp32s2.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM adafruit_metro_esp32s2.menu.PSRAM.disabled=Disabled adafruit_metro_esp32s2.menu.PSRAM.disabled.build.defines= -adafruit_metro_esp32s2.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FFAT) +adafruit_metro_esp32s2.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FATFS) adafruit_metro_esp32s2.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 adafruit_metro_esp32s2.menu.PartitionScheme.tinyuf2.build.custom_partitions=partitions-4MB-tinyuf2 adafruit_metro_esp32s2.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 @@ -8471,7 +8471,7 @@ adafruit_magtag29_esp32s2.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM adafruit_magtag29_esp32s2.menu.PSRAM.disabled=Disabled adafruit_magtag29_esp32s2.menu.PSRAM.disabled.build.defines= -adafruit_magtag29_esp32s2.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FFAT) +adafruit_magtag29_esp32s2.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FATFS) adafruit_magtag29_esp32s2.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 adafruit_magtag29_esp32s2.menu.PartitionScheme.tinyuf2.build.custom_partitions=partitions-4MB-tinyuf2 adafruit_magtag29_esp32s2.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 @@ -8642,7 +8642,7 @@ adafruit_funhouse_esp32s2.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM adafruit_funhouse_esp32s2.menu.PSRAM.disabled=Disabled adafruit_funhouse_esp32s2.menu.PSRAM.disabled.build.defines= -adafruit_funhouse_esp32s2.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FFAT) +adafruit_funhouse_esp32s2.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FATFS) adafruit_funhouse_esp32s2.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 adafruit_funhouse_esp32s2.menu.PartitionScheme.tinyuf2.build.custom_partitions=partitions-4MB-tinyuf2 adafruit_funhouse_esp32s2.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 @@ -8813,7 +8813,7 @@ adafruit_feather_esp32s2.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM adafruit_feather_esp32s2.menu.PSRAM.disabled=Disabled adafruit_feather_esp32s2.menu.PSRAM.disabled.build.defines= -adafruit_feather_esp32s2.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FFAT) +adafruit_feather_esp32s2.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FATFS) adafruit_feather_esp32s2.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 adafruit_feather_esp32s2.menu.PartitionScheme.tinyuf2.build.custom_partitions=partitions-4MB-tinyuf2 adafruit_feather_esp32s2.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 @@ -8984,7 +8984,7 @@ adafruit_feather_esp32s2_tft.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM adafruit_feather_esp32s2_tft.menu.PSRAM.disabled=Disabled adafruit_feather_esp32s2_tft.menu.PSRAM.disabled.build.defines= -adafruit_feather_esp32s2_tft.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FFAT) +adafruit_feather_esp32s2_tft.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FATFS) adafruit_feather_esp32s2_tft.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 adafruit_feather_esp32s2_tft.menu.PartitionScheme.tinyuf2.build.custom_partitions=partitions-4MB-tinyuf2 adafruit_feather_esp32s2_tft.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 @@ -9155,7 +9155,7 @@ adafruit_feather_esp32s2_reversetft.menu.PSRAM.enabled.build.defines=-DBOARD_HAS adafruit_feather_esp32s2_reversetft.menu.PSRAM.disabled=Disabled adafruit_feather_esp32s2_reversetft.menu.PSRAM.disabled.build.defines= -adafruit_feather_esp32s2_reversetft.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FFAT) +adafruit_feather_esp32s2_reversetft.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FATFS) adafruit_feather_esp32s2_reversetft.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 adafruit_feather_esp32s2_reversetft.menu.PartitionScheme.tinyuf2.build.custom_partitions=partitions-4MB-tinyuf2 adafruit_feather_esp32s2_reversetft.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 @@ -9253,1302 +9253,1302 @@ adafruit_feather_esp32s2_reversetft.menu.EraseFlash.all=Enabled adafruit_feather_esp32s2_reversetft.menu.EraseFlash.all.upload.erase_cmd=-e ############################################################## -# Adafruit QT Py ESP32-S2 +# Adafruit Feather ESP32 V2 -adafruit_qtpy_esp32s2.name=Adafruit QT Py ESP32-S2 -adafruit_qtpy_esp32s2.vid.0=0x239A -adafruit_qtpy_esp32s2.pid.0=0x8111 -adafruit_qtpy_esp32s2.vid.1=0x239A -adafruit_qtpy_esp32s2.pid.1=0x0111 -adafruit_qtpy_esp32s2.vid.2=0x239A -adafruit_qtpy_esp32s2.pid.2=0x8112 +adafruit_feather_esp32_v2.name=Adafruit Feather ESP32 V2 -adafruit_qtpy_esp32s2.bootloader.tool=esptool_py -adafruit_qtpy_esp32s2.bootloader.tool.default=esptool_py +adafruit_feather_esp32_v2.bootloader.tool=esptool_py +adafruit_feather_esp32_v2.bootloader.tool.default=esptool_py -adafruit_qtpy_esp32s2.upload.tool=esptool_py -adafruit_qtpy_esp32s2.upload.tool.default=esptool_py -adafruit_qtpy_esp32s2.upload.tool.network=esp_ota +adafruit_feather_esp32_v2.upload.tool=esptool_py +adafruit_feather_esp32_v2.upload.tool.default=esptool_py +adafruit_feather_esp32_v2.upload.tool.network=esp_ota -adafruit_qtpy_esp32s2.upload.maximum_size=1310720 -adafruit_qtpy_esp32s2.upload.maximum_data_size=327680 -adafruit_qtpy_esp32s2.upload.flags= -adafruit_qtpy_esp32s2.upload.extra_flags= -adafruit_qtpy_esp32s2.upload.use_1200bps_touch=true -adafruit_qtpy_esp32s2.upload.wait_for_upload_port=true +adafruit_feather_esp32_v2.upload.maximum_size=1310720 +adafruit_feather_esp32_v2.upload.maximum_data_size=327680 +adafruit_feather_esp32_v2.upload.flags= +adafruit_feather_esp32_v2.upload.extra_flags= -adafruit_qtpy_esp32s2.serial.disableDTR=false -adafruit_qtpy_esp32s2.serial.disableRTS=false +adafruit_feather_esp32_v2.serial.disableDTR=true +adafruit_feather_esp32_v2.serial.disableRTS=true -adafruit_qtpy_esp32s2.build.tarch=xtensa -adafruit_qtpy_esp32s2.build.bootloader_addr=0x1000 -adafruit_qtpy_esp32s2.build.target=esp32s2 -adafruit_qtpy_esp32s2.build.mcu=esp32s2 -adafruit_qtpy_esp32s2.build.core=esp32 -adafruit_qtpy_esp32s2.build.variant=adafruit_qtpy_esp32s2 -adafruit_qtpy_esp32s2.build.board=ADAFRUIT_QTPY_ESP32S2 +adafruit_feather_esp32_v2.build.tarch=xtensa +adafruit_feather_esp32_v2.build.bootloader_addr=0x1000 +adafruit_feather_esp32_v2.build.target=esp32 +adafruit_feather_esp32_v2.build.mcu=esp32 +adafruit_feather_esp32_v2.build.core=esp32 +adafruit_feather_esp32_v2.build.variant=adafruit_feather_esp32_v2 +adafruit_feather_esp32_v2.build.board=ADAFRUIT_FEATHER_ESP32_V2 -adafruit_qtpy_esp32s2.build.cdc_on_boot=1 -adafruit_qtpy_esp32s2.build.msc_on_boot=0 -adafruit_qtpy_esp32s2.build.dfu_on_boot=0 -adafruit_qtpy_esp32s2.build.f_cpu=240000000L -adafruit_qtpy_esp32s2.build.flash_size=4MB -adafruit_qtpy_esp32s2.build.flash_freq=80m -adafruit_qtpy_esp32s2.build.flash_mode=dio -adafruit_qtpy_esp32s2.build.boot=qio -adafruit_qtpy_esp32s2.build.partitions=default -adafruit_qtpy_esp32s2.build.defines= +adafruit_feather_esp32_v2.build.f_cpu=240000000L +adafruit_feather_esp32_v2.build.flash_size=8MB +adafruit_feather_esp32_v2.build.flash_freq=80m +adafruit_feather_esp32_v2.build.flash_mode=dio +adafruit_feather_esp32_v2.build.boot=dio +adafruit_feather_esp32_v2.build.partitions=default +adafruit_feather_esp32_v2.build.defines= +adafruit_feather_esp32_v2.build.loop_core= +adafruit_feather_esp32_v2.build.event_core= -adafruit_qtpy_esp32s2.menu.CDCOnBoot.cdc=Enabled -adafruit_qtpy_esp32s2.menu.CDCOnBoot.cdc.build.cdc_on_boot=1 -adafruit_qtpy_esp32s2.menu.CDCOnBoot.default=Disabled -adafruit_qtpy_esp32s2.menu.CDCOnBoot.default.build.cdc_on_boot=0 +adafruit_feather_esp32_v2.menu.LoopCore.1=Core 1 +adafruit_feather_esp32_v2.menu.LoopCore.1.build.loop_core=-DARDUINO_RUNNING_CORE=1 +adafruit_feather_esp32_v2.menu.LoopCore.0=Core 0 +adafruit_feather_esp32_v2.menu.LoopCore.0.build.loop_core=-DARDUINO_RUNNING_CORE=0 -adafruit_qtpy_esp32s2.menu.MSCOnBoot.default=Disabled -adafruit_qtpy_esp32s2.menu.MSCOnBoot.default.build.msc_on_boot=0 -adafruit_qtpy_esp32s2.menu.MSCOnBoot.msc=Enabled -adafruit_qtpy_esp32s2.menu.MSCOnBoot.msc.build.msc_on_boot=1 +adafruit_feather_esp32_v2.menu.EventsCore.1=Core 1 +adafruit_feather_esp32_v2.menu.EventsCore.1.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=1 +adafruit_feather_esp32_v2.menu.EventsCore.0=Core 0 +adafruit_feather_esp32_v2.menu.EventsCore.0.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=0 -adafruit_qtpy_esp32s2.menu.DFUOnBoot.default=Disabled -adafruit_qtpy_esp32s2.menu.DFUOnBoot.default.build.dfu_on_boot=0 -adafruit_qtpy_esp32s2.menu.DFUOnBoot.dfu=Enabled -adafruit_qtpy_esp32s2.menu.DFUOnBoot.dfu.build.dfu_on_boot=1 +adafruit_feather_esp32_v2.menu.PSRAM.enabled=Enabled +adafruit_feather_esp32_v2.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM -mfix-esp32-psram-cache-issue -mfix-esp32-psram-cache-strategy=memw +adafruit_feather_esp32_v2.menu.PSRAM.disabled=Disabled +adafruit_feather_esp32_v2.menu.PSRAM.disabled.build.defines= -adafruit_qtpy_esp32s2.menu.UploadMode.cdc=Internal USB -adafruit_qtpy_esp32s2.menu.UploadMode.cdc.upload.use_1200bps_touch=true -adafruit_qtpy_esp32s2.menu.UploadMode.cdc.upload.wait_for_upload_port=true -adafruit_qtpy_esp32s2.menu.UploadMode.default=UART0 -adafruit_qtpy_esp32s2.menu.UploadMode.default.upload.use_1200bps_touch=false -adafruit_qtpy_esp32s2.menu.UploadMode.default.upload.wait_for_upload_port=false +adafruit_feather_esp32_v2.menu.PartitionScheme.default_8MB=Default (3MB APP/1.5MB SPIFFS) +adafruit_feather_esp32_v2.menu.PartitionScheme.default_8MB.build.partitions=default_8MB +adafruit_feather_esp32_v2.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336 -adafruit_qtpy_esp32s2.menu.PSRAM.enabled=Enabled -adafruit_qtpy_esp32s2.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM -adafruit_qtpy_esp32s2.menu.PSRAM.disabled=Disabled -adafruit_qtpy_esp32s2.menu.PSRAM.disabled.build.defines= +adafruit_feather_esp32_v2.menu.CPUFreq.240=240MHz (WiFi/BT) +adafruit_feather_esp32_v2.menu.CPUFreq.240.build.f_cpu=240000000L +adafruit_feather_esp32_v2.menu.CPUFreq.160=160MHz (WiFi/BT) +adafruit_feather_esp32_v2.menu.CPUFreq.160.build.f_cpu=160000000L +adafruit_feather_esp32_v2.menu.CPUFreq.80=80MHz (WiFi/BT) +adafruit_feather_esp32_v2.menu.CPUFreq.80.build.f_cpu=80000000L +adafruit_feather_esp32_v2.menu.CPUFreq.40=40MHz +adafruit_feather_esp32_v2.menu.CPUFreq.40.build.f_cpu=40000000L +adafruit_feather_esp32_v2.menu.CPUFreq.20=20MHz +adafruit_feather_esp32_v2.menu.CPUFreq.20.build.f_cpu=20000000L +adafruit_feather_esp32_v2.menu.CPUFreq.10=10MHz +adafruit_feather_esp32_v2.menu.CPUFreq.10.build.f_cpu=10000000L -adafruit_qtpy_esp32s2.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FFAT) -adafruit_qtpy_esp32s2.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 -adafruit_qtpy_esp32s2.menu.PartitionScheme.tinyuf2.build.custom_partitions=partitions-4MB-tinyuf2 -adafruit_qtpy_esp32s2.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 -adafruit_qtpy_esp32s2.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" -adafruit_qtpy_esp32s2.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) -adafruit_qtpy_esp32s2.menu.PartitionScheme.default.build.partitions=default -adafruit_qtpy_esp32s2.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) -adafruit_qtpy_esp32s2.menu.PartitionScheme.defaultffat.build.partitions=default_ffat -adafruit_qtpy_esp32s2.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS) -adafruit_qtpy_esp32s2.menu.PartitionScheme.minimal.build.partitions=minimal -adafruit_qtpy_esp32s2.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS) -adafruit_qtpy_esp32s2.menu.PartitionScheme.no_ota.build.partitions=no_ota -adafruit_qtpy_esp32s2.menu.PartitionScheme.no_ota.upload.maximum_size=2097152 -adafruit_qtpy_esp32s2.menu.PartitionScheme.noota_3g=No OTA (1MB APP/3MB SPIFFS) -adafruit_qtpy_esp32s2.menu.PartitionScheme.noota_3g.build.partitions=noota_3g -adafruit_qtpy_esp32s2.menu.PartitionScheme.noota_3g.upload.maximum_size=1048576 -adafruit_qtpy_esp32s2.menu.PartitionScheme.noota_ffat=No OTA (2MB APP/2MB FATFS) -adafruit_qtpy_esp32s2.menu.PartitionScheme.noota_ffat.build.partitions=noota_ffat -adafruit_qtpy_esp32s2.menu.PartitionScheme.noota_ffat.upload.maximum_size=2097152 -adafruit_qtpy_esp32s2.menu.PartitionScheme.noota_3gffat=No OTA (1MB APP/3MB FATFS) -adafruit_qtpy_esp32s2.menu.PartitionScheme.noota_3gffat.build.partitions=noota_3gffat -adafruit_qtpy_esp32s2.menu.PartitionScheme.noota_3gffat.upload.maximum_size=1048576 -adafruit_qtpy_esp32s2.menu.PartitionScheme.huge_app=Huge APP (3MB No OTA/1MB SPIFFS) -adafruit_qtpy_esp32s2.menu.PartitionScheme.huge_app.build.partitions=huge_app -adafruit_qtpy_esp32s2.menu.PartitionScheme.huge_app.upload.maximum_size=3145728 -adafruit_qtpy_esp32s2.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS) -adafruit_qtpy_esp32s2.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs -adafruit_qtpy_esp32s2.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080 +adafruit_feather_esp32_v2.menu.FlashFreq.80=80MHz +adafruit_feather_esp32_v2.menu.FlashFreq.80.build.flash_freq=80m +adafruit_feather_esp32_v2.menu.FlashFreq.40=40MHz +adafruit_feather_esp32_v2.menu.FlashFreq.40.build.flash_freq=40m -adafruit_qtpy_esp32s2.menu.CPUFreq.240=240MHz (WiFi) -adafruit_qtpy_esp32s2.menu.CPUFreq.240.build.f_cpu=240000000L -adafruit_qtpy_esp32s2.menu.CPUFreq.160=160MHz (WiFi) -adafruit_qtpy_esp32s2.menu.CPUFreq.160.build.f_cpu=160000000L -adafruit_qtpy_esp32s2.menu.CPUFreq.80=80MHz (WiFi) -adafruit_qtpy_esp32s2.menu.CPUFreq.80.build.f_cpu=80000000L -adafruit_qtpy_esp32s2.menu.CPUFreq.40=40MHz -adafruit_qtpy_esp32s2.menu.CPUFreq.40.build.f_cpu=40000000L -adafruit_qtpy_esp32s2.menu.CPUFreq.20=20MHz -adafruit_qtpy_esp32s2.menu.CPUFreq.20.build.f_cpu=20000000L -adafruit_qtpy_esp32s2.menu.CPUFreq.10=10MHz -adafruit_qtpy_esp32s2.menu.CPUFreq.10.build.f_cpu=10000000L +adafruit_feather_esp32_v2.menu.FlashSize.8M=8MB (64Mb) +adafruit_feather_esp32_v2.menu.FlashSize.8M.build.flash_size=8MB -adafruit_qtpy_esp32s2.menu.FlashMode.qio=QIO -adafruit_qtpy_esp32s2.menu.FlashMode.qio.build.flash_mode=dio -adafruit_qtpy_esp32s2.menu.FlashMode.qio.build.boot=qio -adafruit_qtpy_esp32s2.menu.FlashMode.dio=DIO -adafruit_qtpy_esp32s2.menu.FlashMode.dio.build.flash_mode=dio -adafruit_qtpy_esp32s2.menu.FlashMode.dio.build.boot=dio -adafruit_qtpy_esp32s2.menu.FlashMode.qout=QOUT -adafruit_qtpy_esp32s2.menu.FlashMode.qout.build.flash_mode=dout -adafruit_qtpy_esp32s2.menu.FlashMode.qout.build.boot=qout -adafruit_qtpy_esp32s2.menu.FlashMode.dout=DOUT -adafruit_qtpy_esp32s2.menu.FlashMode.dout.build.flash_mode=dout -adafruit_qtpy_esp32s2.menu.FlashMode.dout.build.boot=dout +adafruit_feather_esp32_v2.menu.UploadSpeed.921600=921600 +adafruit_feather_esp32_v2.menu.UploadSpeed.921600.upload.speed=921600 +adafruit_feather_esp32_v2.menu.UploadSpeed.115200=115200 +adafruit_feather_esp32_v2.menu.UploadSpeed.115200.upload.speed=115200 +adafruit_feather_esp32_v2.menu.UploadSpeed.256000.windows=256000 +adafruit_feather_esp32_v2.menu.UploadSpeed.256000.upload.speed=256000 +adafruit_feather_esp32_v2.menu.UploadSpeed.230400.windows.upload.speed=256000 +adafruit_feather_esp32_v2.menu.UploadSpeed.230400=230400 +adafruit_feather_esp32_v2.menu.UploadSpeed.230400.upload.speed=230400 +adafruit_feather_esp32_v2.menu.UploadSpeed.460800.linux=460800 +adafruit_feather_esp32_v2.menu.UploadSpeed.460800.macosx=460800 +adafruit_feather_esp32_v2.menu.UploadSpeed.460800.upload.speed=460800 +adafruit_feather_esp32_v2.menu.UploadSpeed.512000.windows=512000 +adafruit_feather_esp32_v2.menu.UploadSpeed.512000.upload.speed=512000 -adafruit_qtpy_esp32s2.menu.FlashFreq.80=80MHz -adafruit_qtpy_esp32s2.menu.FlashFreq.80.build.flash_freq=80m -adafruit_qtpy_esp32s2.menu.FlashFreq.40=40MHz -adafruit_qtpy_esp32s2.menu.FlashFreq.40.build.flash_freq=40m +adafruit_feather_esp32_v2.menu.DebugLevel.none=None +adafruit_feather_esp32_v2.menu.DebugLevel.none.build.code_debug=0 +adafruit_feather_esp32_v2.menu.DebugLevel.error=Error +adafruit_feather_esp32_v2.menu.DebugLevel.error.build.code_debug=1 +adafruit_feather_esp32_v2.menu.DebugLevel.warn=Warn +adafruit_feather_esp32_v2.menu.DebugLevel.warn.build.code_debug=2 +adafruit_feather_esp32_v2.menu.DebugLevel.info=Info +adafruit_feather_esp32_v2.menu.DebugLevel.info.build.code_debug=3 +adafruit_feather_esp32_v2.menu.DebugLevel.debug=Debug +adafruit_feather_esp32_v2.menu.DebugLevel.debug.build.code_debug=4 +adafruit_feather_esp32_v2.menu.DebugLevel.verbose=Verbose +adafruit_feather_esp32_v2.menu.DebugLevel.verbose.build.code_debug=5 -adafruit_qtpy_esp32s2.menu.FlashSize.4M=4MB (32Mb) -adafruit_qtpy_esp32s2.menu.FlashSize.4M.build.flash_size=4MB +adafruit_feather_esp32_v2.menu.EraseFlash.none=Disabled +adafruit_feather_esp32_v2.menu.EraseFlash.none.upload.erase_cmd= +adafruit_feather_esp32_v2.menu.EraseFlash.all=Enabled +adafruit_feather_esp32_v2.menu.EraseFlash.all.upload.erase_cmd=-e -adafruit_qtpy_esp32s2.menu.UploadSpeed.921600=921600 -adafruit_qtpy_esp32s2.menu.UploadSpeed.921600.upload.speed=921600 -adafruit_qtpy_esp32s2.menu.UploadSpeed.115200=115200 -adafruit_qtpy_esp32s2.menu.UploadSpeed.115200.upload.speed=115200 -adafruit_qtpy_esp32s2.menu.UploadSpeed.256000.windows=256000 -adafruit_qtpy_esp32s2.menu.UploadSpeed.256000.upload.speed=256000 -adafruit_qtpy_esp32s2.menu.UploadSpeed.230400.windows.upload.speed=256000 -adafruit_qtpy_esp32s2.menu.UploadSpeed.230400=230400 -adafruit_qtpy_esp32s2.menu.UploadSpeed.230400.upload.speed=230400 -adafruit_qtpy_esp32s2.menu.UploadSpeed.460800.linux=460800 -adafruit_qtpy_esp32s2.menu.UploadSpeed.460800.macosx=460800 -adafruit_qtpy_esp32s2.menu.UploadSpeed.460800.upload.speed=460800 -adafruit_qtpy_esp32s2.menu.UploadSpeed.512000.windows=512000 -adafruit_qtpy_esp32s2.menu.UploadSpeed.512000.upload.speed=512000 +############################################################## +# Adafruit Feather ESP32-S3 2MB PSRAM -adafruit_qtpy_esp32s2.menu.DebugLevel.none=None -adafruit_qtpy_esp32s2.menu.DebugLevel.none.build.code_debug=0 -adafruit_qtpy_esp32s2.menu.DebugLevel.error=Error -adafruit_qtpy_esp32s2.menu.DebugLevel.error.build.code_debug=1 -adafruit_qtpy_esp32s2.menu.DebugLevel.warn=Warn -adafruit_qtpy_esp32s2.menu.DebugLevel.warn.build.code_debug=2 -adafruit_qtpy_esp32s2.menu.DebugLevel.info=Info -adafruit_qtpy_esp32s2.menu.DebugLevel.info.build.code_debug=3 -adafruit_qtpy_esp32s2.menu.DebugLevel.debug=Debug -adafruit_qtpy_esp32s2.menu.DebugLevel.debug.build.code_debug=4 -adafruit_qtpy_esp32s2.menu.DebugLevel.verbose=Verbose -adafruit_qtpy_esp32s2.menu.DebugLevel.verbose.build.code_debug=5 +adafruit_feather_esp32s3.name=Adafruit Feather ESP32-S3 2MB PSRAM +adafruit_feather_esp32s3.vid.0=0x239A +adafruit_feather_esp32s3.pid.0=0x811B +adafruit_feather_esp32s3.vid.1=0x239A +adafruit_feather_esp32s3.pid.1=0x011B +adafruit_feather_esp32s3.vid.2=0x239A +adafruit_feather_esp32s3.pid.2=0x811C -adafruit_qtpy_esp32s2.menu.EraseFlash.none=Disabled -adafruit_qtpy_esp32s2.menu.EraseFlash.none.upload.erase_cmd= -adafruit_qtpy_esp32s2.menu.EraseFlash.all=Enabled -adafruit_qtpy_esp32s2.menu.EraseFlash.all.upload.erase_cmd=-e +adafruit_feather_esp32s3.bootloader.tool=esptool_py +adafruit_feather_esp32s3.bootloader.tool.default=esptool_py -############################################################## -# Adafruit QT Py ESP32-C3 +adafruit_feather_esp32s3.upload.tool=esptool_py +adafruit_feather_esp32s3.upload.tool.default=esptool_py +adafruit_feather_esp32s3.upload.tool.network=esp_ota -adafruit_qtpy_esp32c3.name=Adafruit QT Py ESP32-C3 -adafruit_qtpy_esp32c3.vid.0=0x303a -adafruit_qtpy_esp32c3.pid.0=0x1001 - -adafruit_qtpy_esp32c3.bootloader.tool=esptool_py -adafruit_qtpy_esp32c3.bootloader.tool.default=esptool_py - -adafruit_qtpy_esp32c3.upload.tool=esptool_py -adafruit_qtpy_esp32c3.upload.tool.default=esptool_py -adafruit_qtpy_esp32c3.upload.tool.network=esp_ota +adafruit_feather_esp32s3.upload.maximum_size=1310720 +adafruit_feather_esp32s3.upload.maximum_data_size=327680 +adafruit_feather_esp32s3.upload.flags= +adafruit_feather_esp32s3.upload.extra_flags= +adafruit_feather_esp32s3.upload.use_1200bps_touch=true +adafruit_feather_esp32s3.upload.wait_for_upload_port=true -adafruit_qtpy_esp32c3.upload.maximum_size=1310720 -adafruit_qtpy_esp32c3.upload.maximum_data_size=327680 -adafruit_qtpy_esp32c3.upload.flags= -adafruit_qtpy_esp32c3.upload.extra_flags= -adafruit_qtpy_esp32c3.upload.use_1200bps_touch=false -adafruit_qtpy_esp32c3.upload.wait_for_upload_port=false +adafruit_feather_esp32s3.serial.disableDTR=false +adafruit_feather_esp32s3.serial.disableRTS=false -adafruit_qtpy_esp32c3.serial.disableDTR=false -adafruit_qtpy_esp32c3.serial.disableRTS=false +adafruit_feather_esp32s3.build.tarch=xtensa +adafruit_feather_esp32s3.build.bootloader_addr=0x0 +adafruit_feather_esp32s3.build.target=esp32s3 +adafruit_feather_esp32s3.build.mcu=esp32s3 +adafruit_feather_esp32s3.build.core=esp32 +adafruit_feather_esp32s3.build.variant=adafruit_feather_esp32s3 +adafruit_feather_esp32s3.build.board=ADAFRUIT_FEATHER_ESP32S3 -adafruit_qtpy_esp32c3.build.tarch=riscv32 -adafruit_qtpy_esp32c3.build.bootloader_addr=0x0 -adafruit_qtpy_esp32c3.build.target=esp -adafruit_qtpy_esp32c3.build.mcu=esp32c3 -adafruit_qtpy_esp32c3.build.core=esp32 -adafruit_qtpy_esp32c3.build.variant=adafruit_qtpy_esp32c3 -adafruit_qtpy_esp32c3.build.board=ADAFRUIT_QTPY_ESP32C3 +adafruit_feather_esp32s3.build.usb_mode=0 +adafruit_feather_esp32s3.build.cdc_on_boot=1 +adafruit_feather_esp32s3.build.msc_on_boot=0 +adafruit_feather_esp32s3.build.dfu_on_boot=0 +adafruit_feather_esp32s3.build.f_cpu=240000000L +adafruit_feather_esp32s3.build.flash_size=4MB +adafruit_feather_esp32s3.build.flash_freq=80m +adafruit_feather_esp32s3.build.flash_mode=dio +adafruit_feather_esp32s3.build.boot=qio +adafruit_feather_esp32s3.build.partitions=default +adafruit_feather_esp32s3.build.defines= +adafruit_feather_esp32s3.build.loop_core= +adafruit_feather_esp32s3.build.event_core= +adafruit_feather_esp32s3.build.flash_type=qio +adafruit_feather_esp32s3.build.psram_type=qspi +adafruit_feather_esp32s3.build.memory_type={build.flash_type}_{build.psram_type} -adafruit_qtpy_esp32c3.build.cdc_on_boot=1 -adafruit_qtpy_esp32c3.build.f_cpu=160000000L -adafruit_qtpy_esp32c3.build.flash_size=4MB -adafruit_qtpy_esp32c3.build.flash_freq=80m -adafruit_qtpy_esp32c3.build.flash_mode=dio -adafruit_qtpy_esp32c3.build.boot=qio -adafruit_qtpy_esp32c3.build.partitions=default -adafruit_qtpy_esp32c3.build.defines= +adafruit_feather_esp32s3.menu.LoopCore.1=Core 1 +adafruit_feather_esp32s3.menu.LoopCore.1.build.loop_core=-DARDUINO_RUNNING_CORE=1 +adafruit_feather_esp32s3.menu.LoopCore.0=Core 0 +adafruit_feather_esp32s3.menu.LoopCore.0.build.loop_core=-DARDUINO_RUNNING_CORE=0 -adafruit_qtpy_esp32c3.menu.CDCOnBoot.cdc=Enabled -adafruit_qtpy_esp32c3.menu.CDCOnBoot.cdc.build.cdc_on_boot=1 -adafruit_qtpy_esp32c3.menu.CDCOnBoot.default=Disabled -adafruit_qtpy_esp32c3.menu.CDCOnBoot.default.build.cdc_on_boot=0 +adafruit_feather_esp32s3.menu.EventsCore.1=Core 1 +adafruit_feather_esp32s3.menu.EventsCore.1.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=1 +adafruit_feather_esp32s3.menu.EventsCore.0=Core 0 +adafruit_feather_esp32s3.menu.EventsCore.0.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=0 -adafruit_qtpy_esp32c3.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) -adafruit_qtpy_esp32c3.menu.PartitionScheme.default.build.partitions=default -adafruit_qtpy_esp32c3.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) -adafruit_qtpy_esp32c3.menu.PartitionScheme.defaultffat.build.partitions=default_ffat -adafruit_qtpy_esp32c3.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS) -adafruit_qtpy_esp32c3.menu.PartitionScheme.minimal.build.partitions=minimal -adafruit_qtpy_esp32c3.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS) -adafruit_qtpy_esp32c3.menu.PartitionScheme.no_ota.build.partitions=no_ota -adafruit_qtpy_esp32c3.menu.PartitionScheme.no_ota.upload.maximum_size=2097152 -adafruit_qtpy_esp32c3.menu.PartitionScheme.noota_3g=No OTA (1MB APP/3MB SPIFFS) -adafruit_qtpy_esp32c3.menu.PartitionScheme.noota_3g.build.partitions=noota_3g -adafruit_qtpy_esp32c3.menu.PartitionScheme.noota_3g.upload.maximum_size=1048576 -adafruit_qtpy_esp32c3.menu.PartitionScheme.noota_ffat=No OTA (2MB APP/2MB FATFS) -adafruit_qtpy_esp32c3.menu.PartitionScheme.noota_ffat.build.partitions=noota_ffat -adafruit_qtpy_esp32c3.menu.PartitionScheme.noota_ffat.upload.maximum_size=2097152 -adafruit_qtpy_esp32c3.menu.PartitionScheme.noota_3gffat=No OTA (1MB APP/3MB FATFS) -adafruit_qtpy_esp32c3.menu.PartitionScheme.noota_3gffat.build.partitions=noota_3gffat -adafruit_qtpy_esp32c3.menu.PartitionScheme.noota_3gffat.upload.maximum_size=1048576 -adafruit_qtpy_esp32c3.menu.PartitionScheme.huge_app=Huge APP (3MB No OTA/1MB SPIFFS) -adafruit_qtpy_esp32c3.menu.PartitionScheme.huge_app.build.partitions=huge_app -adafruit_qtpy_esp32c3.menu.PartitionScheme.huge_app.upload.maximum_size=3145728 -adafruit_qtpy_esp32c3.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS) -adafruit_qtpy_esp32c3.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs -adafruit_qtpy_esp32c3.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080 +adafruit_feather_esp32s3.menu.USBMode.default=USB-OTG (TinyUSB) +adafruit_feather_esp32s3.menu.USBMode.default.build.usb_mode=0 +adafruit_feather_esp32s3.menu.USBMode.hwcdc=Hardware CDC and JTAG +adafruit_feather_esp32s3.menu.USBMode.hwcdc.build.usb_mode=1 -adafruit_qtpy_esp32c3.menu.CPUFreq.160=160MHz (WiFi) -adafruit_qtpy_esp32c3.menu.CPUFreq.160.build.f_cpu=160000000L -adafruit_qtpy_esp32c3.menu.CPUFreq.80=80MHz (WiFi) -adafruit_qtpy_esp32c3.menu.CPUFreq.80.build.f_cpu=80000000L -adafruit_qtpy_esp32c3.menu.CPUFreq.40=40MHz -adafruit_qtpy_esp32c3.menu.CPUFreq.40.build.f_cpu=40000000L -adafruit_qtpy_esp32c3.menu.CPUFreq.20=20MHz -adafruit_qtpy_esp32c3.menu.CPUFreq.20.build.f_cpu=20000000L -adafruit_qtpy_esp32c3.menu.CPUFreq.10=10MHz -adafruit_qtpy_esp32c3.menu.CPUFreq.10.build.f_cpu=10000000L +adafruit_feather_esp32s3.menu.CDCOnBoot.cdc=Enabled +adafruit_feather_esp32s3.menu.CDCOnBoot.cdc.build.cdc_on_boot=1 +adafruit_feather_esp32s3.menu.CDCOnBoot.default=Disabled +adafruit_feather_esp32s3.menu.CDCOnBoot.default.build.cdc_on_boot=0 -adafruit_qtpy_esp32c3.menu.FlashMode.qio=QIO -adafruit_qtpy_esp32c3.menu.FlashMode.qio.build.flash_mode=dio -adafruit_qtpy_esp32c3.menu.FlashMode.qio.build.boot=qio -adafruit_qtpy_esp32c3.menu.FlashMode.dio=DIO -adafruit_qtpy_esp32c3.menu.FlashMode.dio.build.flash_mode=dio -adafruit_qtpy_esp32c3.menu.FlashMode.dio.build.boot=dio -adafruit_qtpy_esp32c3.menu.FlashMode.qout=QOUT -adafruit_qtpy_esp32c3.menu.FlashMode.qout.build.flash_mode=dout -adafruit_qtpy_esp32c3.menu.FlashMode.qout.build.boot=qout -adafruit_qtpy_esp32c3.menu.FlashMode.dout=DOUT -adafruit_qtpy_esp32c3.menu.FlashMode.dout.build.flash_mode=dout -adafruit_qtpy_esp32c3.menu.FlashMode.dout.build.boot=dout +adafruit_feather_esp32s3.menu.MSCOnBoot.default=Disabled +adafruit_feather_esp32s3.menu.MSCOnBoot.default.build.msc_on_boot=0 +adafruit_feather_esp32s3.menu.MSCOnBoot.msc=Enabled (Requires USB-OTG Mode) +adafruit_feather_esp32s3.menu.MSCOnBoot.msc.build.msc_on_boot=1 -adafruit_qtpy_esp32c3.menu.FlashFreq.80=80MHz -adafruit_qtpy_esp32c3.menu.FlashFreq.80.build.flash_freq=80m -adafruit_qtpy_esp32c3.menu.FlashFreq.40=40MHz -adafruit_qtpy_esp32c3.menu.FlashFreq.40.build.flash_freq=40m +adafruit_feather_esp32s3.menu.DFUOnBoot.default=Disabled +adafruit_feather_esp32s3.menu.DFUOnBoot.default.build.dfu_on_boot=0 +adafruit_feather_esp32s3.menu.DFUOnBoot.dfu=Enabled (Requires USB-OTG Mode) +adafruit_feather_esp32s3.menu.DFUOnBoot.dfu.build.dfu_on_boot=1 -adafruit_qtpy_esp32c3.menu.FlashSize.4M=4MB (32Mb) -adafruit_qtpy_esp32c3.menu.FlashSize.4M.build.flash_size=4MB +adafruit_feather_esp32s3.menu.UploadMode.cdc=USB-OTG CDC (TinyUSB) +adafruit_feather_esp32s3.menu.UploadMode.cdc.upload.use_1200bps_touch=true +adafruit_feather_esp32s3.menu.UploadMode.cdc.upload.wait_for_upload_port=true +adafruit_feather_esp32s3.menu.UploadMode.default=UART0 / Hardware CDC +adafruit_feather_esp32s3.menu.UploadMode.default.upload.use_1200bps_touch=false +adafruit_feather_esp32s3.menu.UploadMode.default.upload.wait_for_upload_port=false -adafruit_qtpy_esp32c3.menu.UploadSpeed.921600=921600 -adafruit_qtpy_esp32c3.menu.UploadSpeed.921600.upload.speed=921600 -adafruit_qtpy_esp32c3.menu.UploadSpeed.115200=115200 -adafruit_qtpy_esp32c3.menu.UploadSpeed.115200.upload.speed=115200 -adafruit_qtpy_esp32c3.menu.UploadSpeed.256000.windows=256000 -adafruit_qtpy_esp32c3.menu.UploadSpeed.256000.upload.speed=256000 -adafruit_qtpy_esp32c3.menu.UploadSpeed.230400.windows.upload.speed=256000 -adafruit_qtpy_esp32c3.menu.UploadSpeed.230400=230400 -adafruit_qtpy_esp32c3.menu.UploadSpeed.230400.upload.speed=230400 -adafruit_qtpy_esp32c3.menu.UploadSpeed.460800.linux=460800 -adafruit_qtpy_esp32c3.menu.UploadSpeed.460800.macosx=460800 -adafruit_qtpy_esp32c3.menu.UploadSpeed.460800.upload.speed=460800 -adafruit_qtpy_esp32c3.menu.UploadSpeed.512000.windows=512000 -adafruit_qtpy_esp32c3.menu.UploadSpeed.512000.upload.speed=512000 +adafruit_feather_esp32s3.menu.PSRAM.enabled=QSPI PSRAM +adafruit_feather_esp32s3.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM +adafruit_feather_esp32s3.menu.PSRAM.enabled.build.psram_type=qspi +adafruit_feather_esp32s3.menu.PSRAM.disabled=Disabled +adafruit_feather_esp32s3.menu.PSRAM.disabled.build.defines= +adafruit_feather_esp32s3.menu.PSRAM.disabled.build.psram_type=qspi +adafruit_feather_esp32s3.menu.PSRAM.opi=OPI PSRAM +adafruit_feather_esp32s3.menu.PSRAM.opi.build.defines=-DBOARD_HAS_PSRAM +adafruit_feather_esp32s3.menu.PSRAM.opi.build.psram_type=opi -adafruit_qtpy_esp32c3.menu.DebugLevel.none=None -adafruit_qtpy_esp32c3.menu.DebugLevel.none.build.code_debug=0 -adafruit_qtpy_esp32c3.menu.DebugLevel.error=Error -adafruit_qtpy_esp32c3.menu.DebugLevel.error.build.code_debug=1 -adafruit_qtpy_esp32c3.menu.DebugLevel.warn=Warn -adafruit_qtpy_esp32c3.menu.DebugLevel.warn.build.code_debug=2 -adafruit_qtpy_esp32c3.menu.DebugLevel.info=Info -adafruit_qtpy_esp32c3.menu.DebugLevel.info.build.code_debug=3 -adafruit_qtpy_esp32c3.menu.DebugLevel.debug=Debug -adafruit_qtpy_esp32c3.menu.DebugLevel.debug.build.code_debug=4 -adafruit_qtpy_esp32c3.menu.DebugLevel.verbose=Verbose -adafruit_qtpy_esp32c3.menu.DebugLevel.verbose.build.code_debug=5 +adafruit_feather_esp32s3.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FATFS) +adafruit_feather_esp32s3.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 +adafruit_feather_esp32s3.menu.PartitionScheme.tinyuf2.build.custom_partitions=partitions-4MB-tinyuf2 +adafruit_feather_esp32s3.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 +adafruit_feather_esp32s3.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" +adafruit_feather_esp32s3.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) +adafruit_feather_esp32s3.menu.PartitionScheme.default.build.partitions=default +adafruit_feather_esp32s3.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) +adafruit_feather_esp32s3.menu.PartitionScheme.defaultffat.build.partitions=default_ffat +adafruit_feather_esp32s3.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS) +adafruit_feather_esp32s3.menu.PartitionScheme.minimal.build.partitions=minimal +adafruit_feather_esp32s3.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS) +adafruit_feather_esp32s3.menu.PartitionScheme.no_ota.build.partitions=no_ota +adafruit_feather_esp32s3.menu.PartitionScheme.no_ota.upload.maximum_size=2097152 +adafruit_feather_esp32s3.menu.PartitionScheme.noota_3g=No OTA (1MB APP/3MB SPIFFS) +adafruit_feather_esp32s3.menu.PartitionScheme.noota_3g.build.partitions=noota_3g +adafruit_feather_esp32s3.menu.PartitionScheme.noota_3g.upload.maximum_size=1048576 +adafruit_feather_esp32s3.menu.PartitionScheme.noota_ffat=No OTA (2MB APP/2MB FATFS) +adafruit_feather_esp32s3.menu.PartitionScheme.noota_ffat.build.partitions=noota_ffat +adafruit_feather_esp32s3.menu.PartitionScheme.noota_ffat.upload.maximum_size=2097152 +adafruit_feather_esp32s3.menu.PartitionScheme.noota_3gffat=No OTA (1MB APP/3MB FATFS) +adafruit_feather_esp32s3.menu.PartitionScheme.noota_3gffat.build.partitions=noota_3gffat +adafruit_feather_esp32s3.menu.PartitionScheme.noota_3gffat.upload.maximum_size=1048576 +adafruit_feather_esp32s3.menu.PartitionScheme.huge_app=Huge APP (3MB No OTA/1MB SPIFFS) +adafruit_feather_esp32s3.menu.PartitionScheme.huge_app.build.partitions=huge_app +adafruit_feather_esp32s3.menu.PartitionScheme.huge_app.upload.maximum_size=3145728 +adafruit_feather_esp32s3.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS) +adafruit_feather_esp32s3.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs +adafruit_feather_esp32s3.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080 -adafruit_qtpy_esp32c3.menu.EraseFlash.none=Disabled -adafruit_qtpy_esp32c3.menu.EraseFlash.none.upload.erase_cmd= -adafruit_qtpy_esp32c3.menu.EraseFlash.all=Enabled -adafruit_qtpy_esp32c3.menu.EraseFlash.all.upload.erase_cmd=-e +adafruit_feather_esp32s3.menu.CPUFreq.240=240MHz (WiFi) +adafruit_feather_esp32s3.menu.CPUFreq.240.build.f_cpu=240000000L +adafruit_feather_esp32s3.menu.CPUFreq.160=160MHz (WiFi) +adafruit_feather_esp32s3.menu.CPUFreq.160.build.f_cpu=160000000L +adafruit_feather_esp32s3.menu.CPUFreq.80=80MHz (WiFi) +adafruit_feather_esp32s3.menu.CPUFreq.80.build.f_cpu=80000000L +adafruit_feather_esp32s3.menu.CPUFreq.40=40MHz +adafruit_feather_esp32s3.menu.CPUFreq.40.build.f_cpu=40000000L +adafruit_feather_esp32s3.menu.CPUFreq.20=20MHz +adafruit_feather_esp32s3.menu.CPUFreq.20.build.f_cpu=20000000L +adafruit_feather_esp32s3.menu.CPUFreq.10=10MHz +adafruit_feather_esp32s3.menu.CPUFreq.10.build.f_cpu=10000000L -############################################################## -# Adafruit QT Py ESP32 +adafruit_feather_esp32s3.menu.FlashMode.qio=QIO 80MHz +adafruit_feather_esp32s3.menu.FlashMode.qio.build.flash_mode=dio +adafruit_feather_esp32s3.menu.FlashMode.qio.build.boot=qio +adafruit_feather_esp32s3.menu.FlashMode.qio.build.boot_freq=80m +adafruit_feather_esp32s3.menu.FlashMode.qio.build.flash_freq=80m +adafruit_feather_esp32s3.menu.FlashMode.qio120=QIO 120MHz +adafruit_feather_esp32s3.menu.FlashMode.qio120.build.flash_mode=dio +adafruit_feather_esp32s3.menu.FlashMode.qio120.build.boot=qio +adafruit_feather_esp32s3.menu.FlashMode.qio120.build.boot_freq=120m +adafruit_feather_esp32s3.menu.FlashMode.qio120.build.flash_freq=80m +adafruit_feather_esp32s3.menu.FlashMode.dio=DIO 80MHz +adafruit_feather_esp32s3.menu.FlashMode.dio.build.flash_mode=dio +adafruit_feather_esp32s3.menu.FlashMode.dio.build.boot=dio +adafruit_feather_esp32s3.menu.FlashMode.dio.build.boot_freq=80m +adafruit_feather_esp32s3.menu.FlashMode.dio.build.flash_freq=80m +adafruit_feather_esp32s3.menu.FlashMode.opi=OPI 80MHz +adafruit_feather_esp32s3.menu.FlashMode.opi.build.flash_mode=dout +adafruit_feather_esp32s3.menu.FlashMode.opi.build.boot=opi +adafruit_feather_esp32s3.menu.FlashMode.opi.build.boot_freq=80m +adafruit_feather_esp32s3.menu.FlashMode.opi.build.flash_freq=80m -adafruit_qtpy_esp32_pico.name=Adafruit QT Py ESP32 +adafruit_feather_esp32s3.menu.FlashSize.4M=4MB (32Mb) +adafruit_feather_esp32s3.menu.FlashSize.4M.build.flash_size=4MB -adafruit_qtpy_esp32_pico.bootloader.tool=esptool_py -adafruit_qtpy_esp32_pico.bootloader.tool.default=esptool_py - -adafruit_qtpy_esp32_pico.upload.tool=esptool_py -adafruit_qtpy_esp32_pico.upload.tool.default=esptool_py -adafruit_qtpy_esp32_pico.upload.tool.network=esp_ota +adafruit_feather_esp32s3.menu.UploadSpeed.921600=921600 +adafruit_feather_esp32s3.menu.UploadSpeed.921600.upload.speed=921600 +adafruit_feather_esp32s3.menu.UploadSpeed.115200=115200 +adafruit_feather_esp32s3.menu.UploadSpeed.115200.upload.speed=115200 +adafruit_feather_esp32s3.menu.UploadSpeed.256000.windows=256000 +adafruit_feather_esp32s3.menu.UploadSpeed.256000.upload.speed=256000 +adafruit_feather_esp32s3.menu.UploadSpeed.230400.windows.upload.speed=256000 +adafruit_feather_esp32s3.menu.UploadSpeed.230400=230400 +adafruit_feather_esp32s3.menu.UploadSpeed.230400.upload.speed=230400 +adafruit_feather_esp32s3.menu.UploadSpeed.460800.linux=460800 +adafruit_feather_esp32s3.menu.UploadSpeed.460800.macosx=460800 +adafruit_feather_esp32s3.menu.UploadSpeed.460800.upload.speed=460800 +adafruit_feather_esp32s3.menu.UploadSpeed.512000.windows=512000 +adafruit_feather_esp32s3.menu.UploadSpeed.512000.upload.speed=512000 -adafruit_qtpy_esp32_pico.upload.maximum_size=1310720 -adafruit_qtpy_esp32_pico.upload.maximum_data_size=327680 -adafruit_qtpy_esp32_pico.upload.flags= -adafruit_qtpy_esp32_pico.upload.extra_flags= +adafruit_feather_esp32s3.menu.DebugLevel.none=None +adafruit_feather_esp32s3.menu.DebugLevel.none.build.code_debug=0 +adafruit_feather_esp32s3.menu.DebugLevel.error=Error +adafruit_feather_esp32s3.menu.DebugLevel.error.build.code_debug=1 +adafruit_feather_esp32s3.menu.DebugLevel.warn=Warn +adafruit_feather_esp32s3.menu.DebugLevel.warn.build.code_debug=2 +adafruit_feather_esp32s3.menu.DebugLevel.info=Info +adafruit_feather_esp32s3.menu.DebugLevel.info.build.code_debug=3 +adafruit_feather_esp32s3.menu.DebugLevel.debug=Debug +adafruit_feather_esp32s3.menu.DebugLevel.debug.build.code_debug=4 +adafruit_feather_esp32s3.menu.DebugLevel.verbose=Verbose +adafruit_feather_esp32s3.menu.DebugLevel.verbose.build.code_debug=5 -adafruit_qtpy_esp32_pico.serial.disableDTR=true -adafruit_qtpy_esp32_pico.serial.disableRTS=true +adafruit_feather_esp32s3.menu.EraseFlash.none=Disabled +adafruit_feather_esp32s3.menu.EraseFlash.none.upload.erase_cmd= +adafruit_feather_esp32s3.menu.EraseFlash.all=Enabled +adafruit_feather_esp32s3.menu.EraseFlash.all.upload.erase_cmd=-e -adafruit_qtpy_esp32_pico.build.tarch=xtensa -adafruit_qtpy_esp32_pico.build.bootloader_addr=0x1000 -adafruit_qtpy_esp32_pico.build.target=esp32 -adafruit_qtpy_esp32_pico.build.mcu=esp32 -adafruit_qtpy_esp32_pico.build.core=esp32 -adafruit_qtpy_esp32_pico.build.variant=adafruit_qtpy_esp32 -adafruit_qtpy_esp32_pico.build.board=ADAFRUIT_QTPY_ESP32_PICO +############################################################## +# Adafruit Feather ESP32-S3 No PSRAM -adafruit_qtpy_esp32_pico.build.f_cpu=240000000L -adafruit_qtpy_esp32_pico.build.flash_size=8MB -adafruit_qtpy_esp32_pico.build.flash_freq=80m -adafruit_qtpy_esp32_pico.build.flash_mode=dio -adafruit_qtpy_esp32_pico.build.boot=dio -adafruit_qtpy_esp32_pico.build.partitions=default -adafruit_qtpy_esp32_pico.build.defines= -adafruit_qtpy_esp32_pico.build.loop_core= -adafruit_qtpy_esp32_pico.build.event_core= +adafruit_feather_esp32s3_nopsram.name=Adafruit Feather ESP32-S3 No PSRAM +adafruit_feather_esp32s3_nopsram.vid.0=0x239A +adafruit_feather_esp32s3_nopsram.pid.0=0x8113 +adafruit_feather_esp32s3_nopsram.vid.1=0x239A +adafruit_feather_esp32s3_nopsram.pid.1=0x0113 +adafruit_feather_esp32s3_nopsram.vid.2=0x239A +adafruit_feather_esp32s3_nopsram.pid.2=0x8114 -adafruit_qtpy_esp32_pico.menu.LoopCore.1=Core 1 -adafruit_qtpy_esp32_pico.menu.LoopCore.1.build.loop_core=-DARDUINO_RUNNING_CORE=1 -adafruit_qtpy_esp32_pico.menu.LoopCore.0=Core 0 -adafruit_qtpy_esp32_pico.menu.LoopCore.0.build.loop_core=-DARDUINO_RUNNING_CORE=0 +adafruit_feather_esp32s3_nopsram.bootloader.tool=esptool_py +adafruit_feather_esp32s3_nopsram.bootloader.tool.default=esptool_py -adafruit_qtpy_esp32_pico.menu.EventsCore.1=Core 1 -adafruit_qtpy_esp32_pico.menu.EventsCore.1.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=1 -adafruit_qtpy_esp32_pico.menu.EventsCore.0=Core 0 -adafruit_qtpy_esp32_pico.menu.EventsCore.0.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=0 +adafruit_feather_esp32s3_nopsram.upload.tool=esptool_py +adafruit_feather_esp32s3_nopsram.upload.tool.default=esptool_py +adafruit_feather_esp32s3_nopsram.upload.tool.network=esp_ota -adafruit_qtpy_esp32_pico.menu.PSRAM.enabled=Enabled -adafruit_qtpy_esp32_pico.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM -mfix-esp32-psram-cache-issue -mfix-esp32-psram-cache-strategy=memw -adafruit_qtpy_esp32_pico.menu.PSRAM.disabled=Disabled -adafruit_qtpy_esp32_pico.menu.PSRAM.disabled.build.defines= +adafruit_feather_esp32s3_nopsram.upload.maximum_size=1310720 +adafruit_feather_esp32s3_nopsram.upload.maximum_data_size=327680 +adafruit_feather_esp32s3_nopsram.upload.flags= +adafruit_feather_esp32s3_nopsram.upload.extra_flags= +adafruit_feather_esp32s3_nopsram.upload.use_1200bps_touch=true +adafruit_feather_esp32s3_nopsram.upload.wait_for_upload_port=true -adafruit_qtpy_esp32_pico.menu.PartitionScheme.default_8MB=Default (3MB APP/1.5MB SPIFFS) -adafruit_qtpy_esp32_pico.menu.PartitionScheme.default_8MB.build.partitions=default_8MB -adafruit_qtpy_esp32_pico.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336 +adafruit_feather_esp32s3_nopsram.serial.disableDTR=false +adafruit_feather_esp32s3_nopsram.serial.disableRTS=false -adafruit_qtpy_esp32_pico.menu.CPUFreq.240=240MHz (WiFi/BT) -adafruit_qtpy_esp32_pico.menu.CPUFreq.240.build.f_cpu=240000000L -adafruit_qtpy_esp32_pico.menu.CPUFreq.160=160MHz (WiFi/BT) -adafruit_qtpy_esp32_pico.menu.CPUFreq.160.build.f_cpu=160000000L -adafruit_qtpy_esp32_pico.menu.CPUFreq.80=80MHz (WiFi/BT) -adafruit_qtpy_esp32_pico.menu.CPUFreq.80.build.f_cpu=80000000L -adafruit_qtpy_esp32_pico.menu.CPUFreq.40=40MHz -adafruit_qtpy_esp32_pico.menu.CPUFreq.40.build.f_cpu=40000000L -adafruit_qtpy_esp32_pico.menu.CPUFreq.20=20MHz -adafruit_qtpy_esp32_pico.menu.CPUFreq.20.build.f_cpu=20000000L -adafruit_qtpy_esp32_pico.menu.CPUFreq.10=10MHz -adafruit_qtpy_esp32_pico.menu.CPUFreq.10.build.f_cpu=10000000L +adafruit_feather_esp32s3_nopsram.build.tarch=xtensa +adafruit_feather_esp32s3_nopsram.build.bootloader_addr=0x0 +adafruit_feather_esp32s3_nopsram.build.target=esp32s3 +adafruit_feather_esp32s3_nopsram.build.mcu=esp32s3 +adafruit_feather_esp32s3_nopsram.build.core=esp32 +adafruit_feather_esp32s3_nopsram.build.variant=adafruit_feather_esp32s3_nopsram +adafruit_feather_esp32s3_nopsram.build.board=ADAFRUIT_FEATHER_ESP32S3_NOPSRAM -adafruit_qtpy_esp32_pico.menu.FlashFreq.80=80MHz -adafruit_qtpy_esp32_pico.menu.FlashFreq.80.build.flash_freq=80m -adafruit_qtpy_esp32_pico.menu.FlashFreq.40=40MHz -adafruit_qtpy_esp32_pico.menu.FlashFreq.40.build.flash_freq=40m +adafruit_feather_esp32s3_nopsram.build.usb_mode=0 +adafruit_feather_esp32s3_nopsram.build.cdc_on_boot=1 +adafruit_feather_esp32s3_nopsram.build.msc_on_boot=0 +adafruit_feather_esp32s3_nopsram.build.dfu_on_boot=0 +adafruit_feather_esp32s3_nopsram.build.f_cpu=240000000L +adafruit_feather_esp32s3_nopsram.build.flash_size=8MB +adafruit_feather_esp32s3_nopsram.build.flash_freq=80m +adafruit_feather_esp32s3_nopsram.build.flash_mode=dio +adafruit_feather_esp32s3_nopsram.build.boot=qio +adafruit_feather_esp32s3_nopsram.build.partitions=default +adafruit_feather_esp32s3_nopsram.build.defines= +adafruit_feather_esp32s3_nopsram.build.loop_core= +adafruit_feather_esp32s3_nopsram.build.event_core= +adafruit_feather_esp32s3_nopsram.build.flash_type=qio +adafruit_feather_esp32s3_nopsram.build.psram_type=qspi +adafruit_feather_esp32s3_nopsram.build.memory_type={build.flash_type}_{build.psram_type} -adafruit_qtpy_esp32_pico.menu.FlashSize.8M=8MB (64Mb) -adafruit_qtpy_esp32_pico.menu.FlashSize.8M.build.flash_size=8MB +adafruit_feather_esp32s3_nopsram.menu.LoopCore.1=Core 1 +adafruit_feather_esp32s3_nopsram.menu.LoopCore.1.build.loop_core=-DARDUINO_RUNNING_CORE=1 +adafruit_feather_esp32s3_nopsram.menu.LoopCore.0=Core 0 +adafruit_feather_esp32s3_nopsram.menu.LoopCore.0.build.loop_core=-DARDUINO_RUNNING_CORE=0 -adafruit_qtpy_esp32_pico.menu.UploadSpeed.921600=921600 -adafruit_qtpy_esp32_pico.menu.UploadSpeed.921600.upload.speed=921600 -adafruit_qtpy_esp32_pico.menu.UploadSpeed.115200=115200 -adafruit_qtpy_esp32_pico.menu.UploadSpeed.115200.upload.speed=115200 -adafruit_qtpy_esp32_pico.menu.UploadSpeed.256000.windows=256000 -adafruit_qtpy_esp32_pico.menu.UploadSpeed.256000.upload.speed=256000 -adafruit_qtpy_esp32_pico.menu.UploadSpeed.230400.windows.upload.speed=256000 -adafruit_qtpy_esp32_pico.menu.UploadSpeed.230400=230400 -adafruit_qtpy_esp32_pico.menu.UploadSpeed.230400.upload.speed=230400 -adafruit_qtpy_esp32_pico.menu.UploadSpeed.460800.linux=460800 -adafruit_qtpy_esp32_pico.menu.UploadSpeed.460800.macosx=460800 -adafruit_qtpy_esp32_pico.menu.UploadSpeed.460800.upload.speed=460800 -adafruit_qtpy_esp32_pico.menu.UploadSpeed.512000.windows=512000 -adafruit_qtpy_esp32_pico.menu.UploadSpeed.512000.upload.speed=512000 +adafruit_feather_esp32s3_nopsram.menu.EventsCore.1=Core 1 +adafruit_feather_esp32s3_nopsram.menu.EventsCore.1.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=1 +adafruit_feather_esp32s3_nopsram.menu.EventsCore.0=Core 0 +adafruit_feather_esp32s3_nopsram.menu.EventsCore.0.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=0 -adafruit_qtpy_esp32_pico.menu.DebugLevel.none=None -adafruit_qtpy_esp32_pico.menu.DebugLevel.none.build.code_debug=0 -adafruit_qtpy_esp32_pico.menu.DebugLevel.error=Error -adafruit_qtpy_esp32_pico.menu.DebugLevel.error.build.code_debug=1 -adafruit_qtpy_esp32_pico.menu.DebugLevel.warn=Warn -adafruit_qtpy_esp32_pico.menu.DebugLevel.warn.build.code_debug=2 -adafruit_qtpy_esp32_pico.menu.DebugLevel.info=Info -adafruit_qtpy_esp32_pico.menu.DebugLevel.info.build.code_debug=3 -adafruit_qtpy_esp32_pico.menu.DebugLevel.debug=Debug -adafruit_qtpy_esp32_pico.menu.DebugLevel.debug.build.code_debug=4 -adafruit_qtpy_esp32_pico.menu.DebugLevel.verbose=Verbose -adafruit_qtpy_esp32_pico.menu.DebugLevel.verbose.build.code_debug=5 +adafruit_feather_esp32s3_nopsram.menu.USBMode.default=USB-OTG (TinyUSB) +adafruit_feather_esp32s3_nopsram.menu.USBMode.default.build.usb_mode=0 +adafruit_feather_esp32s3_nopsram.menu.USBMode.hwcdc=Hardware CDC and JTAG +adafruit_feather_esp32s3_nopsram.menu.USBMode.hwcdc.build.usb_mode=1 -adafruit_qtpy_esp32_pico.menu.EraseFlash.none=Disabled -adafruit_qtpy_esp32_pico.menu.EraseFlash.none.upload.erase_cmd= -adafruit_qtpy_esp32_pico.menu.EraseFlash.all=Enabled -adafruit_qtpy_esp32_pico.menu.EraseFlash.all.upload.erase_cmd=-e +adafruit_feather_esp32s3_nopsram.menu.CDCOnBoot.cdc=Enabled +adafruit_feather_esp32s3_nopsram.menu.CDCOnBoot.cdc.build.cdc_on_boot=1 +adafruit_feather_esp32s3_nopsram.menu.CDCOnBoot.default=Disabled +adafruit_feather_esp32s3_nopsram.menu.CDCOnBoot.default.build.cdc_on_boot=0 -############################################################## -# Adafruit Feather ESP32 V2 +adafruit_feather_esp32s3_nopsram.menu.MSCOnBoot.default=Disabled +adafruit_feather_esp32s3_nopsram.menu.MSCOnBoot.default.build.msc_on_boot=0 +adafruit_feather_esp32s3_nopsram.menu.MSCOnBoot.msc=Enabled (Requires USB-OTG Mode) +adafruit_feather_esp32s3_nopsram.menu.MSCOnBoot.msc.build.msc_on_boot=1 -adafruit_feather_esp32_v2.name=Adafruit Feather ESP32 V2 +adafruit_feather_esp32s3_nopsram.menu.DFUOnBoot.default=Disabled +adafruit_feather_esp32s3_nopsram.menu.DFUOnBoot.default.build.dfu_on_boot=0 +adafruit_feather_esp32s3_nopsram.menu.DFUOnBoot.dfu=Enabled (Requires USB-OTG Mode) +adafruit_feather_esp32s3_nopsram.menu.DFUOnBoot.dfu.build.dfu_on_boot=1 -adafruit_feather_esp32_v2.bootloader.tool=esptool_py -adafruit_feather_esp32_v2.bootloader.tool.default=esptool_py +adafruit_feather_esp32s3_nopsram.menu.UploadMode.cdc=USB-OTG CDC (TinyUSB) +adafruit_feather_esp32s3_nopsram.menu.UploadMode.cdc.upload.use_1200bps_touch=true +adafruit_feather_esp32s3_nopsram.menu.UploadMode.cdc.upload.wait_for_upload_port=true +adafruit_feather_esp32s3_nopsram.menu.UploadMode.default=UART0 / Hardware CDC +adafruit_feather_esp32s3_nopsram.menu.UploadMode.default.upload.use_1200bps_touch=false +adafruit_feather_esp32s3_nopsram.menu.UploadMode.default.upload.wait_for_upload_port=false -adafruit_feather_esp32_v2.upload.tool=esptool_py -adafruit_feather_esp32_v2.upload.tool.default=esptool_py -adafruit_feather_esp32_v2.upload.tool.network=esp_ota +adafruit_feather_esp32s3_nopsram.menu.PartitionScheme.tinyuf2=TinyUF2 8MB (2MB APP/3.7MB FATFS) +adafruit_feather_esp32s3_nopsram.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 +adafruit_feather_esp32s3_nopsram.menu.PartitionScheme.tinyuf2.build.custom_partitions=partitions-8MB-tinyuf2 +adafruit_feather_esp32s3_nopsram.menu.PartitionScheme.tinyuf2.upload.maximum_size=2097152 +adafruit_feather_esp32s3_nopsram.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x410000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" +adafruit_feather_esp32s3_nopsram.menu.PartitionScheme.default_8MB=Default (3MB APP/1.5MB SPIFFS) +adafruit_feather_esp32s3_nopsram.menu.PartitionScheme.default_8MB.build.partitions=default_8MB +adafruit_feather_esp32s3_nopsram.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336 -adafruit_feather_esp32_v2.upload.maximum_size=1310720 -adafruit_feather_esp32_v2.upload.maximum_data_size=327680 -adafruit_feather_esp32_v2.upload.flags= -adafruit_feather_esp32_v2.upload.extra_flags= +adafruit_feather_esp32s3_nopsram.menu.CPUFreq.240=240MHz (WiFi) +adafruit_feather_esp32s3_nopsram.menu.CPUFreq.240.build.f_cpu=240000000L +adafruit_feather_esp32s3_nopsram.menu.CPUFreq.160=160MHz (WiFi) +adafruit_feather_esp32s3_nopsram.menu.CPUFreq.160.build.f_cpu=160000000L +adafruit_feather_esp32s3_nopsram.menu.CPUFreq.80=80MHz (WiFi) +adafruit_feather_esp32s3_nopsram.menu.CPUFreq.80.build.f_cpu=80000000L +adafruit_feather_esp32s3_nopsram.menu.CPUFreq.40=40MHz +adafruit_feather_esp32s3_nopsram.menu.CPUFreq.40.build.f_cpu=40000000L +adafruit_feather_esp32s3_nopsram.menu.CPUFreq.20=20MHz +adafruit_feather_esp32s3_nopsram.menu.CPUFreq.20.build.f_cpu=20000000L +adafruit_feather_esp32s3_nopsram.menu.CPUFreq.10=10MHz +adafruit_feather_esp32s3_nopsram.menu.CPUFreq.10.build.f_cpu=10000000L -adafruit_feather_esp32_v2.serial.disableDTR=true -adafruit_feather_esp32_v2.serial.disableRTS=true +adafruit_feather_esp32s3_nopsram.menu.FlashMode.qio=QIO 80MHz +adafruit_feather_esp32s3_nopsram.menu.FlashMode.qio.build.flash_mode=dio +adafruit_feather_esp32s3_nopsram.menu.FlashMode.qio.build.boot=qio +adafruit_feather_esp32s3_nopsram.menu.FlashMode.qio.build.boot_freq=80m +adafruit_feather_esp32s3_nopsram.menu.FlashMode.qio.build.flash_freq=80m +adafruit_feather_esp32s3_nopsram.menu.FlashMode.qio120=QIO 120MHz +adafruit_feather_esp32s3_nopsram.menu.FlashMode.qio120.build.flash_mode=dio +adafruit_feather_esp32s3_nopsram.menu.FlashMode.qio120.build.boot=qio +adafruit_feather_esp32s3_nopsram.menu.FlashMode.qio120.build.boot_freq=120m +adafruit_feather_esp32s3_nopsram.menu.FlashMode.qio120.build.flash_freq=80m +adafruit_feather_esp32s3_nopsram.menu.FlashMode.dio=DIO 80MHz +adafruit_feather_esp32s3_nopsram.menu.FlashMode.dio.build.flash_mode=dio +adafruit_feather_esp32s3_nopsram.menu.FlashMode.dio.build.boot=dio +adafruit_feather_esp32s3_nopsram.menu.FlashMode.dio.build.boot_freq=80m +adafruit_feather_esp32s3_nopsram.menu.FlashMode.dio.build.flash_freq=80m +adafruit_feather_esp32s3_nopsram.menu.FlashMode.opi=OPI 80MHz +adafruit_feather_esp32s3_nopsram.menu.FlashMode.opi.build.flash_mode=dout +adafruit_feather_esp32s3_nopsram.menu.FlashMode.opi.build.boot=opi +adafruit_feather_esp32s3_nopsram.menu.FlashMode.opi.build.boot_freq=80m +adafruit_feather_esp32s3_nopsram.menu.FlashMode.opi.build.flash_freq=80m -adafruit_feather_esp32_v2.build.tarch=xtensa -adafruit_feather_esp32_v2.build.bootloader_addr=0x1000 -adafruit_feather_esp32_v2.build.target=esp32 -adafruit_feather_esp32_v2.build.mcu=esp32 -adafruit_feather_esp32_v2.build.core=esp32 -adafruit_feather_esp32_v2.build.variant=adafruit_feather_esp32_v2 -adafruit_feather_esp32_v2.build.board=ADAFRUIT_FEATHER_ESP32_V2 +adafruit_feather_esp32s3_nopsram.menu.FlashSize.8M=8MB (64Mb) +adafruit_feather_esp32s3_nopsram.menu.FlashSize.8M.build.flash_size=8MB -adafruit_feather_esp32_v2.build.f_cpu=240000000L -adafruit_feather_esp32_v2.build.flash_size=8MB -adafruit_feather_esp32_v2.build.flash_freq=80m -adafruit_feather_esp32_v2.build.flash_mode=dio -adafruit_feather_esp32_v2.build.boot=dio -adafruit_feather_esp32_v2.build.partitions=default -adafruit_feather_esp32_v2.build.defines= -adafruit_feather_esp32_v2.build.loop_core= -adafruit_feather_esp32_v2.build.event_core= - -adafruit_feather_esp32_v2.menu.LoopCore.1=Core 1 -adafruit_feather_esp32_v2.menu.LoopCore.1.build.loop_core=-DARDUINO_RUNNING_CORE=1 -adafruit_feather_esp32_v2.menu.LoopCore.0=Core 0 -adafruit_feather_esp32_v2.menu.LoopCore.0.build.loop_core=-DARDUINO_RUNNING_CORE=0 +adafruit_feather_esp32s3_nopsram.menu.UploadSpeed.921600=921600 +adafruit_feather_esp32s3_nopsram.menu.UploadSpeed.921600.upload.speed=921600 +adafruit_feather_esp32s3_nopsram.menu.UploadSpeed.115200=115200 +adafruit_feather_esp32s3_nopsram.menu.UploadSpeed.115200.upload.speed=115200 +adafruit_feather_esp32s3_nopsram.menu.UploadSpeed.256000.windows=256000 +adafruit_feather_esp32s3_nopsram.menu.UploadSpeed.256000.upload.speed=256000 +adafruit_feather_esp32s3_nopsram.menu.UploadSpeed.230400.windows.upload.speed=256000 +adafruit_feather_esp32s3_nopsram.menu.UploadSpeed.230400=230400 +adafruit_feather_esp32s3_nopsram.menu.UploadSpeed.230400.upload.speed=230400 +adafruit_feather_esp32s3_nopsram.menu.UploadSpeed.460800.linux=460800 +adafruit_feather_esp32s3_nopsram.menu.UploadSpeed.460800.macosx=460800 +adafruit_feather_esp32s3_nopsram.menu.UploadSpeed.460800.upload.speed=460800 +adafruit_feather_esp32s3_nopsram.menu.UploadSpeed.512000.windows=512000 +adafruit_feather_esp32s3_nopsram.menu.UploadSpeed.512000.upload.speed=512000 -adafruit_feather_esp32_v2.menu.EventsCore.1=Core 1 -adafruit_feather_esp32_v2.menu.EventsCore.1.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=1 -adafruit_feather_esp32_v2.menu.EventsCore.0=Core 0 -adafruit_feather_esp32_v2.menu.EventsCore.0.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=0 +adafruit_feather_esp32s3_nopsram.menu.DebugLevel.none=None +adafruit_feather_esp32s3_nopsram.menu.DebugLevel.none.build.code_debug=0 +adafruit_feather_esp32s3_nopsram.menu.DebugLevel.error=Error +adafruit_feather_esp32s3_nopsram.menu.DebugLevel.error.build.code_debug=1 +adafruit_feather_esp32s3_nopsram.menu.DebugLevel.warn=Warn +adafruit_feather_esp32s3_nopsram.menu.DebugLevel.warn.build.code_debug=2 +adafruit_feather_esp32s3_nopsram.menu.DebugLevel.info=Info +adafruit_feather_esp32s3_nopsram.menu.DebugLevel.info.build.code_debug=3 +adafruit_feather_esp32s3_nopsram.menu.DebugLevel.debug=Debug +adafruit_feather_esp32s3_nopsram.menu.DebugLevel.debug.build.code_debug=4 +adafruit_feather_esp32s3_nopsram.menu.DebugLevel.verbose=Verbose +adafruit_feather_esp32s3_nopsram.menu.DebugLevel.verbose.build.code_debug=5 -adafruit_feather_esp32_v2.menu.PSRAM.enabled=Enabled -adafruit_feather_esp32_v2.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM -mfix-esp32-psram-cache-issue -mfix-esp32-psram-cache-strategy=memw -adafruit_feather_esp32_v2.menu.PSRAM.disabled=Disabled -adafruit_feather_esp32_v2.menu.PSRAM.disabled.build.defines= +adafruit_feather_esp32s3_nopsram.menu.EraseFlash.none=Disabled +adafruit_feather_esp32s3_nopsram.menu.EraseFlash.none.upload.erase_cmd= +adafruit_feather_esp32s3_nopsram.menu.EraseFlash.all=Enabled +adafruit_feather_esp32s3_nopsram.menu.EraseFlash.all.upload.erase_cmd=-e -adafruit_feather_esp32_v2.menu.PartitionScheme.default_8MB=Default (3MB APP/1.5MB SPIFFS) -adafruit_feather_esp32_v2.menu.PartitionScheme.default_8MB.build.partitions=default_8MB -adafruit_feather_esp32_v2.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336 +############################################################## +# Adafruit Feather ESP32-S3 TFT -adafruit_feather_esp32_v2.menu.CPUFreq.240=240MHz (WiFi/BT) -adafruit_feather_esp32_v2.menu.CPUFreq.240.build.f_cpu=240000000L -adafruit_feather_esp32_v2.menu.CPUFreq.160=160MHz (WiFi/BT) -adafruit_feather_esp32_v2.menu.CPUFreq.160.build.f_cpu=160000000L -adafruit_feather_esp32_v2.menu.CPUFreq.80=80MHz (WiFi/BT) -adafruit_feather_esp32_v2.menu.CPUFreq.80.build.f_cpu=80000000L -adafruit_feather_esp32_v2.menu.CPUFreq.40=40MHz -adafruit_feather_esp32_v2.menu.CPUFreq.40.build.f_cpu=40000000L -adafruit_feather_esp32_v2.menu.CPUFreq.20=20MHz -adafruit_feather_esp32_v2.menu.CPUFreq.20.build.f_cpu=20000000L -adafruit_feather_esp32_v2.menu.CPUFreq.10=10MHz -adafruit_feather_esp32_v2.menu.CPUFreq.10.build.f_cpu=10000000L +adafruit_feather_esp32s3_tft.name=Adafruit Feather ESP32-S3 TFT +adafruit_feather_esp32s3_tft.vid.0=0x239A +adafruit_feather_esp32s3_tft.pid.0=0x811D +adafruit_feather_esp32s3_tft.vid.1=0x239A +adafruit_feather_esp32s3_tft.pid.1=0x011D +adafruit_feather_esp32s3_tft.vid.2=0x239A +adafruit_feather_esp32s3_tft.pid.2=0x811E -adafruit_feather_esp32_v2.menu.FlashFreq.80=80MHz -adafruit_feather_esp32_v2.menu.FlashFreq.80.build.flash_freq=80m -adafruit_feather_esp32_v2.menu.FlashFreq.40=40MHz -adafruit_feather_esp32_v2.menu.FlashFreq.40.build.flash_freq=40m +adafruit_feather_esp32s3_tft.bootloader.tool=esptool_py +adafruit_feather_esp32s3_tft.bootloader.tool.default=esptool_py -adafruit_feather_esp32_v2.menu.FlashSize.8M=8MB (64Mb) -adafruit_feather_esp32_v2.menu.FlashSize.8M.build.flash_size=8MB +adafruit_feather_esp32s3_tft.upload.tool=esptool_py +adafruit_feather_esp32s3_tft.upload.tool.default=esptool_py +adafruit_feather_esp32s3_tft.upload.tool.network=esp_ota -adafruit_feather_esp32_v2.menu.UploadSpeed.921600=921600 -adafruit_feather_esp32_v2.menu.UploadSpeed.921600.upload.speed=921600 -adafruit_feather_esp32_v2.menu.UploadSpeed.115200=115200 -adafruit_feather_esp32_v2.menu.UploadSpeed.115200.upload.speed=115200 -adafruit_feather_esp32_v2.menu.UploadSpeed.256000.windows=256000 -adafruit_feather_esp32_v2.menu.UploadSpeed.256000.upload.speed=256000 -adafruit_feather_esp32_v2.menu.UploadSpeed.230400.windows.upload.speed=256000 -adafruit_feather_esp32_v2.menu.UploadSpeed.230400=230400 -adafruit_feather_esp32_v2.menu.UploadSpeed.230400.upload.speed=230400 -adafruit_feather_esp32_v2.menu.UploadSpeed.460800.linux=460800 -adafruit_feather_esp32_v2.menu.UploadSpeed.460800.macosx=460800 -adafruit_feather_esp32_v2.menu.UploadSpeed.460800.upload.speed=460800 -adafruit_feather_esp32_v2.menu.UploadSpeed.512000.windows=512000 -adafruit_feather_esp32_v2.menu.UploadSpeed.512000.upload.speed=512000 +adafruit_feather_esp32s3_tft.upload.maximum_size=1310720 +adafruit_feather_esp32s3_tft.upload.maximum_data_size=327680 +adafruit_feather_esp32s3_tft.upload.flags= +adafruit_feather_esp32s3_tft.upload.extra_flags= +adafruit_feather_esp32s3_tft.upload.use_1200bps_touch=true +adafruit_feather_esp32s3_tft.upload.wait_for_upload_port=true -adafruit_feather_esp32_v2.menu.DebugLevel.none=None -adafruit_feather_esp32_v2.menu.DebugLevel.none.build.code_debug=0 -adafruit_feather_esp32_v2.menu.DebugLevel.error=Error -adafruit_feather_esp32_v2.menu.DebugLevel.error.build.code_debug=1 -adafruit_feather_esp32_v2.menu.DebugLevel.warn=Warn -adafruit_feather_esp32_v2.menu.DebugLevel.warn.build.code_debug=2 -adafruit_feather_esp32_v2.menu.DebugLevel.info=Info -adafruit_feather_esp32_v2.menu.DebugLevel.info.build.code_debug=3 -adafruit_feather_esp32_v2.menu.DebugLevel.debug=Debug -adafruit_feather_esp32_v2.menu.DebugLevel.debug.build.code_debug=4 -adafruit_feather_esp32_v2.menu.DebugLevel.verbose=Verbose -adafruit_feather_esp32_v2.menu.DebugLevel.verbose.build.code_debug=5 +adafruit_feather_esp32s3_tft.serial.disableDTR=false +adafruit_feather_esp32s3_tft.serial.disableRTS=false -adafruit_feather_esp32_v2.menu.EraseFlash.none=Disabled -adafruit_feather_esp32_v2.menu.EraseFlash.none.upload.erase_cmd= -adafruit_feather_esp32_v2.menu.EraseFlash.all=Enabled -adafruit_feather_esp32_v2.menu.EraseFlash.all.upload.erase_cmd=-e +adafruit_feather_esp32s3_tft.build.tarch=xtensa +adafruit_feather_esp32s3_tft.build.bootloader_addr=0x0 +adafruit_feather_esp32s3_tft.build.target=esp32s3 +adafruit_feather_esp32s3_tft.build.mcu=esp32s3 +adafruit_feather_esp32s3_tft.build.core=esp32 +adafruit_feather_esp32s3_tft.build.variant=adafruit_feather_esp32s3_tft +adafruit_feather_esp32s3_tft.build.board=ADAFRUIT_FEATHER_ESP32S3_TFT -############################################################## -# Adafruit Feather ESP32-S3 2MB PSRAM +adafruit_feather_esp32s3_tft.build.usb_mode=0 +adafruit_feather_esp32s3_tft.build.cdc_on_boot=1 +adafruit_feather_esp32s3_tft.build.msc_on_boot=0 +adafruit_feather_esp32s3_tft.build.dfu_on_boot=0 +adafruit_feather_esp32s3_tft.build.f_cpu=240000000L +adafruit_feather_esp32s3_tft.build.flash_size=4MB +adafruit_feather_esp32s3_tft.build.flash_freq=80m +adafruit_feather_esp32s3_tft.build.flash_mode=dio +adafruit_feather_esp32s3_tft.build.boot=qio +adafruit_feather_esp32s3_tft.build.partitions=default +adafruit_feather_esp32s3_tft.build.defines= +adafruit_feather_esp32s3_tft.build.loop_core= +adafruit_feather_esp32s3_tft.build.event_core= +adafruit_feather_esp32s3_tft.build.flash_type=qio +adafruit_feather_esp32s3_tft.build.psram_type=qspi +adafruit_feather_esp32s3_tft.build.memory_type={build.flash_type}_{build.psram_type} -adafruit_feather_esp32s3.name=Adafruit Feather ESP32-S3 2MB PSRAM -adafruit_feather_esp32s3.vid.0=0x239A -adafruit_feather_esp32s3.pid.0=0x811B -adafruit_feather_esp32s3.vid.1=0x239A -adafruit_feather_esp32s3.pid.1=0x011B -adafruit_feather_esp32s3.vid.2=0x239A -adafruit_feather_esp32s3.pid.2=0x811C +adafruit_feather_esp32s3_tft.menu.LoopCore.1=Core 1 +adafruit_feather_esp32s3_tft.menu.LoopCore.1.build.loop_core=-DARDUINO_RUNNING_CORE=1 +adafruit_feather_esp32s3_tft.menu.LoopCore.0=Core 0 +adafruit_feather_esp32s3_tft.menu.LoopCore.0.build.loop_core=-DARDUINO_RUNNING_CORE=0 -adafruit_feather_esp32s3.bootloader.tool=esptool_py -adafruit_feather_esp32s3.bootloader.tool.default=esptool_py +adafruit_feather_esp32s3_tft.menu.EventsCore.1=Core 1 +adafruit_feather_esp32s3_tft.menu.EventsCore.1.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=1 +adafruit_feather_esp32s3_tft.menu.EventsCore.0=Core 0 +adafruit_feather_esp32s3_tft.menu.EventsCore.0.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=0 -adafruit_feather_esp32s3.upload.tool=esptool_py -adafruit_feather_esp32s3.upload.tool.default=esptool_py -adafruit_feather_esp32s3.upload.tool.network=esp_ota +adafruit_feather_esp32s3_tft.menu.USBMode.default=USB-OTG (TinyUSB) +adafruit_feather_esp32s3_tft.menu.USBMode.default.build.usb_mode=0 +adafruit_feather_esp32s3_tft.menu.USBMode.hwcdc=Hardware CDC and JTAG +adafruit_feather_esp32s3_tft.menu.USBMode.hwcdc.build.usb_mode=1 -adafruit_feather_esp32s3.upload.maximum_size=1310720 -adafruit_feather_esp32s3.upload.maximum_data_size=327680 -adafruit_feather_esp32s3.upload.flags= -adafruit_feather_esp32s3.upload.extra_flags= -adafruit_feather_esp32s3.upload.use_1200bps_touch=true -adafruit_feather_esp32s3.upload.wait_for_upload_port=true +adafruit_feather_esp32s3_tft.menu.CDCOnBoot.cdc=Enabled +adafruit_feather_esp32s3_tft.menu.CDCOnBoot.cdc.build.cdc_on_boot=1 +adafruit_feather_esp32s3_tft.menu.CDCOnBoot.default=Disabled +adafruit_feather_esp32s3_tft.menu.CDCOnBoot.default.build.cdc_on_boot=0 -adafruit_feather_esp32s3.serial.disableDTR=false -adafruit_feather_esp32s3.serial.disableRTS=false +adafruit_feather_esp32s3_tft.menu.MSCOnBoot.default=Disabled +adafruit_feather_esp32s3_tft.menu.MSCOnBoot.default.build.msc_on_boot=0 +adafruit_feather_esp32s3_tft.menu.MSCOnBoot.msc=Enabled (Requires USB-OTG Mode) +adafruit_feather_esp32s3_tft.menu.MSCOnBoot.msc.build.msc_on_boot=1 -adafruit_feather_esp32s3.build.tarch=xtensa -adafruit_feather_esp32s3.build.bootloader_addr=0x0 -adafruit_feather_esp32s3.build.target=esp32s3 -adafruit_feather_esp32s3.build.mcu=esp32s3 -adafruit_feather_esp32s3.build.core=esp32 -adafruit_feather_esp32s3.build.variant=adafruit_feather_esp32s3 -adafruit_feather_esp32s3.build.board=ADAFRUIT_FEATHER_ESP32S3 +adafruit_feather_esp32s3_tft.menu.DFUOnBoot.default=Disabled +adafruit_feather_esp32s3_tft.menu.DFUOnBoot.default.build.dfu_on_boot=0 +adafruit_feather_esp32s3_tft.menu.DFUOnBoot.dfu=Enabled (Requires USB-OTG Mode) +adafruit_feather_esp32s3_tft.menu.DFUOnBoot.dfu.build.dfu_on_boot=1 -adafruit_feather_esp32s3.build.usb_mode=0 -adafruit_feather_esp32s3.build.cdc_on_boot=1 -adafruit_feather_esp32s3.build.msc_on_boot=0 -adafruit_feather_esp32s3.build.dfu_on_boot=0 -adafruit_feather_esp32s3.build.f_cpu=240000000L -adafruit_feather_esp32s3.build.flash_size=4MB -adafruit_feather_esp32s3.build.flash_freq=80m -adafruit_feather_esp32s3.build.flash_mode=dio -adafruit_feather_esp32s3.build.boot=qio -adafruit_feather_esp32s3.build.partitions=default -adafruit_feather_esp32s3.build.defines= -adafruit_feather_esp32s3.build.loop_core= -adafruit_feather_esp32s3.build.event_core= -adafruit_feather_esp32s3.build.flash_type=qio -adafruit_feather_esp32s3.build.psram_type=qspi -adafruit_feather_esp32s3.build.memory_type={build.flash_type}_{build.psram_type} +adafruit_feather_esp32s3_tft.menu.UploadMode.cdc=USB-OTG CDC (TinyUSB) +adafruit_feather_esp32s3_tft.menu.UploadMode.cdc.upload.use_1200bps_touch=true +adafruit_feather_esp32s3_tft.menu.UploadMode.cdc.upload.wait_for_upload_port=true +adafruit_feather_esp32s3_tft.menu.UploadMode.default=UART0 / Hardware CDC +adafruit_feather_esp32s3_tft.menu.UploadMode.default.upload.use_1200bps_touch=false +adafruit_feather_esp32s3_tft.menu.UploadMode.default.upload.wait_for_upload_port=false -adafruit_feather_esp32s3.menu.LoopCore.1=Core 1 -adafruit_feather_esp32s3.menu.LoopCore.1.build.loop_core=-DARDUINO_RUNNING_CORE=1 -adafruit_feather_esp32s3.menu.LoopCore.0=Core 0 -adafruit_feather_esp32s3.menu.LoopCore.0.build.loop_core=-DARDUINO_RUNNING_CORE=0 +adafruit_feather_esp32s3_tft.menu.PSRAM.enabled=QSPI PSRAM +adafruit_feather_esp32s3_tft.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM +adafruit_feather_esp32s3_tft.menu.PSRAM.enabled.build.psram_type=qspi +adafruit_feather_esp32s3_tft.menu.PSRAM.disabled=Disabled +adafruit_feather_esp32s3_tft.menu.PSRAM.disabled.build.defines= +adafruit_feather_esp32s3_tft.menu.PSRAM.disabled.build.psram_type=qspi +adafruit_feather_esp32s3_tft.menu.PSRAM.opi=OPI PSRAM +adafruit_feather_esp32s3_tft.menu.PSRAM.opi.build.defines=-DBOARD_HAS_PSRAM +adafruit_feather_esp32s3_tft.menu.PSRAM.opi.build.psram_type=opi -adafruit_feather_esp32s3.menu.EventsCore.1=Core 1 -adafruit_feather_esp32s3.menu.EventsCore.1.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=1 -adafruit_feather_esp32s3.menu.EventsCore.0=Core 0 -adafruit_feather_esp32s3.menu.EventsCore.0.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=0 +adafruit_feather_esp32s3_tft.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FATFS) +adafruit_feather_esp32s3_tft.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 +adafruit_feather_esp32s3_tft.menu.PartitionScheme.tinyuf2.build.custom_partitions=partitions-4MB-tinyuf2 +adafruit_feather_esp32s3_tft.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 +adafruit_feather_esp32s3_tft.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" +adafruit_feather_esp32s3_tft.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) +adafruit_feather_esp32s3_tft.menu.PartitionScheme.default.build.partitions=default +adafruit_feather_esp32s3_tft.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) +adafruit_feather_esp32s3_tft.menu.PartitionScheme.defaultffat.build.partitions=default_ffat +adafruit_feather_esp32s3_tft.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS) +adafruit_feather_esp32s3_tft.menu.PartitionScheme.minimal.build.partitions=minimal +adafruit_feather_esp32s3_tft.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS) +adafruit_feather_esp32s3_tft.menu.PartitionScheme.no_ota.build.partitions=no_ota +adafruit_feather_esp32s3_tft.menu.PartitionScheme.no_ota.upload.maximum_size=2097152 +adafruit_feather_esp32s3_tft.menu.PartitionScheme.noota_3g=No OTA (1MB APP/3MB SPIFFS) +adafruit_feather_esp32s3_tft.menu.PartitionScheme.noota_3g.build.partitions=noota_3g +adafruit_feather_esp32s3_tft.menu.PartitionScheme.noota_3g.upload.maximum_size=1048576 +adafruit_feather_esp32s3_tft.menu.PartitionScheme.noota_ffat=No OTA (2MB APP/2MB FATFS) +adafruit_feather_esp32s3_tft.menu.PartitionScheme.noota_ffat.build.partitions=noota_ffat +adafruit_feather_esp32s3_tft.menu.PartitionScheme.noota_ffat.upload.maximum_size=2097152 +adafruit_feather_esp32s3_tft.menu.PartitionScheme.noota_3gffat=No OTA (1MB APP/3MB FATFS) +adafruit_feather_esp32s3_tft.menu.PartitionScheme.noota_3gffat.build.partitions=noota_3gffat +adafruit_feather_esp32s3_tft.menu.PartitionScheme.noota_3gffat.upload.maximum_size=1048576 +adafruit_feather_esp32s3_tft.menu.PartitionScheme.huge_app=Huge APP (3MB No OTA/1MB SPIFFS) +adafruit_feather_esp32s3_tft.menu.PartitionScheme.huge_app.build.partitions=huge_app +adafruit_feather_esp32s3_tft.menu.PartitionScheme.huge_app.upload.maximum_size=3145728 +adafruit_feather_esp32s3_tft.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS) +adafruit_feather_esp32s3_tft.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs +adafruit_feather_esp32s3_tft.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080 -adafruit_feather_esp32s3.menu.USBMode.default=USB-OTG (TinyUSB) -adafruit_feather_esp32s3.menu.USBMode.default.build.usb_mode=0 -adafruit_feather_esp32s3.menu.USBMode.hwcdc=Hardware CDC and JTAG -adafruit_feather_esp32s3.menu.USBMode.hwcdc.build.usb_mode=1 +adafruit_feather_esp32s3_tft.menu.CPUFreq.240=240MHz (WiFi) +adafruit_feather_esp32s3_tft.menu.CPUFreq.240.build.f_cpu=240000000L +adafruit_feather_esp32s3_tft.menu.CPUFreq.160=160MHz (WiFi) +adafruit_feather_esp32s3_tft.menu.CPUFreq.160.build.f_cpu=160000000L +adafruit_feather_esp32s3_tft.menu.CPUFreq.80=80MHz (WiFi) +adafruit_feather_esp32s3_tft.menu.CPUFreq.80.build.f_cpu=80000000L +adafruit_feather_esp32s3_tft.menu.CPUFreq.40=40MHz +adafruit_feather_esp32s3_tft.menu.CPUFreq.40.build.f_cpu=40000000L +adafruit_feather_esp32s3_tft.menu.CPUFreq.20=20MHz +adafruit_feather_esp32s3_tft.menu.CPUFreq.20.build.f_cpu=20000000L +adafruit_feather_esp32s3_tft.menu.CPUFreq.10=10MHz +adafruit_feather_esp32s3_tft.menu.CPUFreq.10.build.f_cpu=10000000L -adafruit_feather_esp32s3.menu.CDCOnBoot.cdc=Enabled -adafruit_feather_esp32s3.menu.CDCOnBoot.cdc.build.cdc_on_boot=1 -adafruit_feather_esp32s3.menu.CDCOnBoot.default=Disabled -adafruit_feather_esp32s3.menu.CDCOnBoot.default.build.cdc_on_boot=0 +adafruit_feather_esp32s3_tft.menu.FlashMode.qio=QIO 80MHz +adafruit_feather_esp32s3_tft.menu.FlashMode.qio.build.flash_mode=dio +adafruit_feather_esp32s3_tft.menu.FlashMode.qio.build.boot=qio +adafruit_feather_esp32s3_tft.menu.FlashMode.qio.build.boot_freq=80m +adafruit_feather_esp32s3_tft.menu.FlashMode.qio.build.flash_freq=80m +adafruit_feather_esp32s3_tft.menu.FlashMode.qio120=QIO 120MHz +adafruit_feather_esp32s3_tft.menu.FlashMode.qio120.build.flash_mode=dio +adafruit_feather_esp32s3_tft.menu.FlashMode.qio120.build.boot=qio +adafruit_feather_esp32s3_tft.menu.FlashMode.qio120.build.boot_freq=120m +adafruit_feather_esp32s3_tft.menu.FlashMode.qio120.build.flash_freq=80m +adafruit_feather_esp32s3_tft.menu.FlashMode.dio=DIO 80MHz +adafruit_feather_esp32s3_tft.menu.FlashMode.dio.build.flash_mode=dio +adafruit_feather_esp32s3_tft.menu.FlashMode.dio.build.boot=dio +adafruit_feather_esp32s3_tft.menu.FlashMode.dio.build.boot_freq=80m +adafruit_feather_esp32s3_tft.menu.FlashMode.dio.build.flash_freq=80m +adafruit_feather_esp32s3_tft.menu.FlashMode.opi=OPI 80MHz +adafruit_feather_esp32s3_tft.menu.FlashMode.opi.build.flash_mode=dout +adafruit_feather_esp32s3_tft.menu.FlashMode.opi.build.boot=opi +adafruit_feather_esp32s3_tft.menu.FlashMode.opi.build.boot_freq=80m +adafruit_feather_esp32s3_tft.menu.FlashMode.opi.build.flash_freq=80m -adafruit_feather_esp32s3.menu.MSCOnBoot.default=Disabled -adafruit_feather_esp32s3.menu.MSCOnBoot.default.build.msc_on_boot=0 -adafruit_feather_esp32s3.menu.MSCOnBoot.msc=Enabled (Requires USB-OTG Mode) -adafruit_feather_esp32s3.menu.MSCOnBoot.msc.build.msc_on_boot=1 +adafruit_feather_esp32s3_tft.menu.FlashSize.4M=4MB (32Mb) +adafruit_feather_esp32s3_tft.menu.FlashSize.4M.build.flash_size=4MB -adafruit_feather_esp32s3.menu.DFUOnBoot.default=Disabled -adafruit_feather_esp32s3.menu.DFUOnBoot.default.build.dfu_on_boot=0 -adafruit_feather_esp32s3.menu.DFUOnBoot.dfu=Enabled (Requires USB-OTG Mode) -adafruit_feather_esp32s3.menu.DFUOnBoot.dfu.build.dfu_on_boot=1 +adafruit_feather_esp32s3_tft.menu.UploadSpeed.921600=921600 +adafruit_feather_esp32s3_tft.menu.UploadSpeed.921600.upload.speed=921600 +adafruit_feather_esp32s3_tft.menu.UploadSpeed.115200=115200 +adafruit_feather_esp32s3_tft.menu.UploadSpeed.115200.upload.speed=115200 +adafruit_feather_esp32s3_tft.menu.UploadSpeed.256000.windows=256000 +adafruit_feather_esp32s3_tft.menu.UploadSpeed.256000.upload.speed=256000 +adafruit_feather_esp32s3_tft.menu.UploadSpeed.230400.windows.upload.speed=256000 +adafruit_feather_esp32s3_tft.menu.UploadSpeed.230400=230400 +adafruit_feather_esp32s3_tft.menu.UploadSpeed.230400.upload.speed=230400 +adafruit_feather_esp32s3_tft.menu.UploadSpeed.460800.linux=460800 +adafruit_feather_esp32s3_tft.menu.UploadSpeed.460800.macosx=460800 +adafruit_feather_esp32s3_tft.menu.UploadSpeed.460800.upload.speed=460800 +adafruit_feather_esp32s3_tft.menu.UploadSpeed.512000.windows=512000 +adafruit_feather_esp32s3_tft.menu.UploadSpeed.512000.upload.speed=512000 -adafruit_feather_esp32s3.menu.UploadMode.cdc=USB-OTG CDC (TinyUSB) -adafruit_feather_esp32s3.menu.UploadMode.cdc.upload.use_1200bps_touch=true -adafruit_feather_esp32s3.menu.UploadMode.cdc.upload.wait_for_upload_port=true -adafruit_feather_esp32s3.menu.UploadMode.default=UART0 / Hardware CDC -adafruit_feather_esp32s3.menu.UploadMode.default.upload.use_1200bps_touch=false -adafruit_feather_esp32s3.menu.UploadMode.default.upload.wait_for_upload_port=false +adafruit_feather_esp32s3_tft.menu.DebugLevel.none=None +adafruit_feather_esp32s3_tft.menu.DebugLevel.none.build.code_debug=0 +adafruit_feather_esp32s3_tft.menu.DebugLevel.error=Error +adafruit_feather_esp32s3_tft.menu.DebugLevel.error.build.code_debug=1 +adafruit_feather_esp32s3_tft.menu.DebugLevel.warn=Warn +adafruit_feather_esp32s3_tft.menu.DebugLevel.warn.build.code_debug=2 +adafruit_feather_esp32s3_tft.menu.DebugLevel.info=Info +adafruit_feather_esp32s3_tft.menu.DebugLevel.info.build.code_debug=3 +adafruit_feather_esp32s3_tft.menu.DebugLevel.debug=Debug +adafruit_feather_esp32s3_tft.menu.DebugLevel.debug.build.code_debug=4 +adafruit_feather_esp32s3_tft.menu.DebugLevel.verbose=Verbose +adafruit_feather_esp32s3_tft.menu.DebugLevel.verbose.build.code_debug=5 -adafruit_feather_esp32s3.menu.PSRAM.enabled=QSPI PSRAM -adafruit_feather_esp32s3.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM -adafruit_feather_esp32s3.menu.PSRAM.enabled.build.psram_type=qspi -adafruit_feather_esp32s3.menu.PSRAM.disabled=Disabled -adafruit_feather_esp32s3.menu.PSRAM.disabled.build.defines= -adafruit_feather_esp32s3.menu.PSRAM.disabled.build.psram_type=qspi -adafruit_feather_esp32s3.menu.PSRAM.opi=OPI PSRAM -adafruit_feather_esp32s3.menu.PSRAM.opi.build.defines=-DBOARD_HAS_PSRAM -adafruit_feather_esp32s3.menu.PSRAM.opi.build.psram_type=opi +adafruit_feather_esp32s3_tft.menu.EraseFlash.none=Disabled +adafruit_feather_esp32s3_tft.menu.EraseFlash.none.upload.erase_cmd= +adafruit_feather_esp32s3_tft.menu.EraseFlash.all=Enabled +adafruit_feather_esp32s3_tft.menu.EraseFlash.all.upload.erase_cmd=-e -adafruit_feather_esp32s3.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FFAT) -adafruit_feather_esp32s3.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 -adafruit_feather_esp32s3.menu.PartitionScheme.tinyuf2.build.custom_partitions=partitions-4MB-tinyuf2 -adafruit_feather_esp32s3.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 -adafruit_feather_esp32s3.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" -adafruit_feather_esp32s3.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) -adafruit_feather_esp32s3.menu.PartitionScheme.default.build.partitions=default -adafruit_feather_esp32s3.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) -adafruit_feather_esp32s3.menu.PartitionScheme.defaultffat.build.partitions=default_ffat -adafruit_feather_esp32s3.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS) -adafruit_feather_esp32s3.menu.PartitionScheme.minimal.build.partitions=minimal -adafruit_feather_esp32s3.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS) -adafruit_feather_esp32s3.menu.PartitionScheme.no_ota.build.partitions=no_ota -adafruit_feather_esp32s3.menu.PartitionScheme.no_ota.upload.maximum_size=2097152 -adafruit_feather_esp32s3.menu.PartitionScheme.noota_3g=No OTA (1MB APP/3MB SPIFFS) -adafruit_feather_esp32s3.menu.PartitionScheme.noota_3g.build.partitions=noota_3g -adafruit_feather_esp32s3.menu.PartitionScheme.noota_3g.upload.maximum_size=1048576 -adafruit_feather_esp32s3.menu.PartitionScheme.noota_ffat=No OTA (2MB APP/2MB FATFS) -adafruit_feather_esp32s3.menu.PartitionScheme.noota_ffat.build.partitions=noota_ffat -adafruit_feather_esp32s3.menu.PartitionScheme.noota_ffat.upload.maximum_size=2097152 -adafruit_feather_esp32s3.menu.PartitionScheme.noota_3gffat=No OTA (1MB APP/3MB FATFS) -adafruit_feather_esp32s3.menu.PartitionScheme.noota_3gffat.build.partitions=noota_3gffat -adafruit_feather_esp32s3.menu.PartitionScheme.noota_3gffat.upload.maximum_size=1048576 -adafruit_feather_esp32s3.menu.PartitionScheme.huge_app=Huge APP (3MB No OTA/1MB SPIFFS) -adafruit_feather_esp32s3.menu.PartitionScheme.huge_app.build.partitions=huge_app -adafruit_feather_esp32s3.menu.PartitionScheme.huge_app.upload.maximum_size=3145728 -adafruit_feather_esp32s3.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS) -adafruit_feather_esp32s3.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs -adafruit_feather_esp32s3.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080 +############################################################## +# Adafruit Feather ESP32-S3 Reverse TFT -adafruit_feather_esp32s3.menu.CPUFreq.240=240MHz (WiFi) -adafruit_feather_esp32s3.menu.CPUFreq.240.build.f_cpu=240000000L -adafruit_feather_esp32s3.menu.CPUFreq.160=160MHz (WiFi) -adafruit_feather_esp32s3.menu.CPUFreq.160.build.f_cpu=160000000L -adafruit_feather_esp32s3.menu.CPUFreq.80=80MHz (WiFi) -adafruit_feather_esp32s3.menu.CPUFreq.80.build.f_cpu=80000000L -adafruit_feather_esp32s3.menu.CPUFreq.40=40MHz -adafruit_feather_esp32s3.menu.CPUFreq.40.build.f_cpu=40000000L -adafruit_feather_esp32s3.menu.CPUFreq.20=20MHz -adafruit_feather_esp32s3.menu.CPUFreq.20.build.f_cpu=20000000L -adafruit_feather_esp32s3.menu.CPUFreq.10=10MHz -adafruit_feather_esp32s3.menu.CPUFreq.10.build.f_cpu=10000000L +adafruit_feather_esp32s3_reversetft.name=Adafruit Feather ESP32-S3 Reverse TFT +adafruit_feather_esp32s3_reversetft.vid.0=0x239A +adafruit_feather_esp32s3_reversetft.pid.0=0x8123 +adafruit_feather_esp32s3_reversetft.vid.1=0x239A +adafruit_feather_esp32s3_reversetft.pid.1=0x0123 +adafruit_feather_esp32s3_reversetft.vid.2=0x239A +adafruit_feather_esp32s3_reversetft.pid.2=0x8124 -adafruit_feather_esp32s3.menu.FlashMode.qio=QIO 80MHz -adafruit_feather_esp32s3.menu.FlashMode.qio.build.flash_mode=dio -adafruit_feather_esp32s3.menu.FlashMode.qio.build.boot=qio -adafruit_feather_esp32s3.menu.FlashMode.qio.build.boot_freq=80m -adafruit_feather_esp32s3.menu.FlashMode.qio.build.flash_freq=80m -adafruit_feather_esp32s3.menu.FlashMode.qio120=QIO 120MHz -adafruit_feather_esp32s3.menu.FlashMode.qio120.build.flash_mode=dio -adafruit_feather_esp32s3.menu.FlashMode.qio120.build.boot=qio -adafruit_feather_esp32s3.menu.FlashMode.qio120.build.boot_freq=120m -adafruit_feather_esp32s3.menu.FlashMode.qio120.build.flash_freq=80m -adafruit_feather_esp32s3.menu.FlashMode.dio=DIO 80MHz -adafruit_feather_esp32s3.menu.FlashMode.dio.build.flash_mode=dio -adafruit_feather_esp32s3.menu.FlashMode.dio.build.boot=dio -adafruit_feather_esp32s3.menu.FlashMode.dio.build.boot_freq=80m -adafruit_feather_esp32s3.menu.FlashMode.dio.build.flash_freq=80m -adafruit_feather_esp32s3.menu.FlashMode.opi=OPI 80MHz -adafruit_feather_esp32s3.menu.FlashMode.opi.build.flash_mode=dout -adafruit_feather_esp32s3.menu.FlashMode.opi.build.boot=opi -adafruit_feather_esp32s3.menu.FlashMode.opi.build.boot_freq=80m -adafruit_feather_esp32s3.menu.FlashMode.opi.build.flash_freq=80m +adafruit_feather_esp32s3_reversetft.bootloader.tool=esptool_py +adafruit_feather_esp32s3_reversetft.bootloader.tool.default=esptool_py -adafruit_feather_esp32s3.menu.FlashSize.4M=4MB (32Mb) -adafruit_feather_esp32s3.menu.FlashSize.4M.build.flash_size=4MB +adafruit_feather_esp32s3_reversetft.upload.tool=esptool_py +adafruit_feather_esp32s3_reversetft.upload.tool.default=esptool_py +adafruit_feather_esp32s3_reversetft.upload.tool.network=esp_ota -adafruit_feather_esp32s3.menu.UploadSpeed.921600=921600 -adafruit_feather_esp32s3.menu.UploadSpeed.921600.upload.speed=921600 -adafruit_feather_esp32s3.menu.UploadSpeed.115200=115200 -adafruit_feather_esp32s3.menu.UploadSpeed.115200.upload.speed=115200 -adafruit_feather_esp32s3.menu.UploadSpeed.256000.windows=256000 -adafruit_feather_esp32s3.menu.UploadSpeed.256000.upload.speed=256000 -adafruit_feather_esp32s3.menu.UploadSpeed.230400.windows.upload.speed=256000 -adafruit_feather_esp32s3.menu.UploadSpeed.230400=230400 -adafruit_feather_esp32s3.menu.UploadSpeed.230400.upload.speed=230400 -adafruit_feather_esp32s3.menu.UploadSpeed.460800.linux=460800 -adafruit_feather_esp32s3.menu.UploadSpeed.460800.macosx=460800 -adafruit_feather_esp32s3.menu.UploadSpeed.460800.upload.speed=460800 -adafruit_feather_esp32s3.menu.UploadSpeed.512000.windows=512000 -adafruit_feather_esp32s3.menu.UploadSpeed.512000.upload.speed=512000 +adafruit_feather_esp32s3_reversetft.upload.maximum_size=1310720 +adafruit_feather_esp32s3_reversetft.upload.maximum_data_size=327680 +adafruit_feather_esp32s3_reversetft.upload.flags= +adafruit_feather_esp32s3_reversetft.upload.extra_flags= +adafruit_feather_esp32s3_reversetft.upload.use_1200bps_touch=true +adafruit_feather_esp32s3_reversetft.upload.wait_for_upload_port=true -adafruit_feather_esp32s3.menu.DebugLevel.none=None -adafruit_feather_esp32s3.menu.DebugLevel.none.build.code_debug=0 -adafruit_feather_esp32s3.menu.DebugLevel.error=Error -adafruit_feather_esp32s3.menu.DebugLevel.error.build.code_debug=1 -adafruit_feather_esp32s3.menu.DebugLevel.warn=Warn -adafruit_feather_esp32s3.menu.DebugLevel.warn.build.code_debug=2 -adafruit_feather_esp32s3.menu.DebugLevel.info=Info -adafruit_feather_esp32s3.menu.DebugLevel.info.build.code_debug=3 -adafruit_feather_esp32s3.menu.DebugLevel.debug=Debug -adafruit_feather_esp32s3.menu.DebugLevel.debug.build.code_debug=4 -adafruit_feather_esp32s3.menu.DebugLevel.verbose=Verbose -adafruit_feather_esp32s3.menu.DebugLevel.verbose.build.code_debug=5 +adafruit_feather_esp32s3_reversetft.serial.disableDTR=false +adafruit_feather_esp32s3_reversetft.serial.disableRTS=false -adafruit_feather_esp32s3.menu.EraseFlash.none=Disabled -adafruit_feather_esp32s3.menu.EraseFlash.none.upload.erase_cmd= -adafruit_feather_esp32s3.menu.EraseFlash.all=Enabled -adafruit_feather_esp32s3.menu.EraseFlash.all.upload.erase_cmd=-e +adafruit_feather_esp32s3_reversetft.build.tarch=xtensa +adafruit_feather_esp32s3_reversetft.build.bootloader_addr=0x0 +adafruit_feather_esp32s3_reversetft.build.target=esp32s3 +adafruit_feather_esp32s3_reversetft.build.mcu=esp32s3 +adafruit_feather_esp32s3_reversetft.build.core=esp32 +adafruit_feather_esp32s3_reversetft.build.variant=adafruit_feather_esp32s3_reversetft +adafruit_feather_esp32s3_reversetft.build.board=ADAFRUIT_FEATHER_ESP32S3_REVTFT -############################################################## -# Adafruit Feather ESP32-S3 No PSRAM +adafruit_feather_esp32s3_reversetft.build.usb_mode=0 +adafruit_feather_esp32s3_reversetft.build.cdc_on_boot=1 +adafruit_feather_esp32s3_reversetft.build.msc_on_boot=0 +adafruit_feather_esp32s3_reversetft.build.dfu_on_boot=0 +adafruit_feather_esp32s3_reversetft.build.f_cpu=240000000L +adafruit_feather_esp32s3_reversetft.build.flash_size=4MB +adafruit_feather_esp32s3_reversetft.build.flash_freq=80m +adafruit_feather_esp32s3_reversetft.build.flash_mode=dio +adafruit_feather_esp32s3_reversetft.build.boot=qio +adafruit_feather_esp32s3_reversetft.build.partitions=default +adafruit_feather_esp32s3_reversetft.build.defines= +adafruit_feather_esp32s3_reversetft.build.loop_core= +adafruit_feather_esp32s3_reversetft.build.event_core= +adafruit_feather_esp32s3_reversetft.build.flash_type=qio +adafruit_feather_esp32s3_reversetft.build.psram_type=qspi +adafruit_feather_esp32s3_reversetft.build.memory_type={build.flash_type}_{build.psram_type} -adafruit_feather_esp32s3_nopsram.name=Adafruit Feather ESP32-S3 No PSRAM -adafruit_feather_esp32s3_nopsram.vid.0=0x239A -adafruit_feather_esp32s3_nopsram.pid.0=0x8113 -adafruit_feather_esp32s3_nopsram.vid.1=0x239A -adafruit_feather_esp32s3_nopsram.pid.1=0x0113 -adafruit_feather_esp32s3_nopsram.vid.2=0x239A -adafruit_feather_esp32s3_nopsram.pid.2=0x8114 +adafruit_feather_esp32s3_reversetft.menu.LoopCore.1=Core 1 +adafruit_feather_esp32s3_reversetft.menu.LoopCore.1.build.loop_core=-DARDUINO_RUNNING_CORE=1 +adafruit_feather_esp32s3_reversetft.menu.LoopCore.0=Core 0 +adafruit_feather_esp32s3_reversetft.menu.LoopCore.0.build.loop_core=-DARDUINO_RUNNING_CORE=0 -adafruit_feather_esp32s3_nopsram.bootloader.tool=esptool_py -adafruit_feather_esp32s3_nopsram.bootloader.tool.default=esptool_py +adafruit_feather_esp32s3_reversetft.menu.EventsCore.1=Core 1 +adafruit_feather_esp32s3_reversetft.menu.EventsCore.1.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=1 +adafruit_feather_esp32s3_reversetft.menu.EventsCore.0=Core 0 +adafruit_feather_esp32s3_reversetft.menu.EventsCore.0.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=0 -adafruit_feather_esp32s3_nopsram.upload.tool=esptool_py -adafruit_feather_esp32s3_nopsram.upload.tool.default=esptool_py -adafruit_feather_esp32s3_nopsram.upload.tool.network=esp_ota +adafruit_feather_esp32s3_reversetft.menu.USBMode.default=USB-OTG (TinyUSB) +adafruit_feather_esp32s3_reversetft.menu.USBMode.default.build.usb_mode=0 +adafruit_feather_esp32s3_reversetft.menu.USBMode.hwcdc=Hardware CDC and JTAG +adafruit_feather_esp32s3_reversetft.menu.USBMode.hwcdc.build.usb_mode=1 -adafruit_feather_esp32s3_nopsram.upload.maximum_size=1310720 -adafruit_feather_esp32s3_nopsram.upload.maximum_data_size=327680 -adafruit_feather_esp32s3_nopsram.upload.flags= -adafruit_feather_esp32s3_nopsram.upload.extra_flags= -adafruit_feather_esp32s3_nopsram.upload.use_1200bps_touch=true -adafruit_feather_esp32s3_nopsram.upload.wait_for_upload_port=true +adafruit_feather_esp32s3_reversetft.menu.CDCOnBoot.cdc=Enabled +adafruit_feather_esp32s3_reversetft.menu.CDCOnBoot.cdc.build.cdc_on_boot=1 +adafruit_feather_esp32s3_reversetft.menu.CDCOnBoot.default=Disabled +adafruit_feather_esp32s3_reversetft.menu.CDCOnBoot.default.build.cdc_on_boot=0 -adafruit_feather_esp32s3_nopsram.serial.disableDTR=false -adafruit_feather_esp32s3_nopsram.serial.disableRTS=false +adafruit_feather_esp32s3_reversetft.menu.MSCOnBoot.default=Disabled +adafruit_feather_esp32s3_reversetft.menu.MSCOnBoot.default.build.msc_on_boot=0 +adafruit_feather_esp32s3_reversetft.menu.MSCOnBoot.msc=Enabled (Requires USB-OTG Mode) +adafruit_feather_esp32s3_reversetft.menu.MSCOnBoot.msc.build.msc_on_boot=1 -adafruit_feather_esp32s3_nopsram.build.tarch=xtensa -adafruit_feather_esp32s3_nopsram.build.bootloader_addr=0x0 -adafruit_feather_esp32s3_nopsram.build.target=esp32s3 -adafruit_feather_esp32s3_nopsram.build.mcu=esp32s3 -adafruit_feather_esp32s3_nopsram.build.core=esp32 -adafruit_feather_esp32s3_nopsram.build.variant=adafruit_feather_esp32s3_nopsram -adafruit_feather_esp32s3_nopsram.build.board=ADAFRUIT_FEATHER_ESP32S3_NOPSRAM +adafruit_feather_esp32s3_reversetft.menu.DFUOnBoot.default=Disabled +adafruit_feather_esp32s3_reversetft.menu.DFUOnBoot.default.build.dfu_on_boot=0 +adafruit_feather_esp32s3_reversetft.menu.DFUOnBoot.dfu=Enabled (Requires USB-OTG Mode) +adafruit_feather_esp32s3_reversetft.menu.DFUOnBoot.dfu.build.dfu_on_boot=1 -adafruit_feather_esp32s3_nopsram.build.usb_mode=0 -adafruit_feather_esp32s3_nopsram.build.cdc_on_boot=1 -adafruit_feather_esp32s3_nopsram.build.msc_on_boot=0 -adafruit_feather_esp32s3_nopsram.build.dfu_on_boot=0 -adafruit_feather_esp32s3_nopsram.build.f_cpu=240000000L -adafruit_feather_esp32s3_nopsram.build.flash_size=8MB -adafruit_feather_esp32s3_nopsram.build.flash_freq=80m -adafruit_feather_esp32s3_nopsram.build.flash_mode=dio -adafruit_feather_esp32s3_nopsram.build.boot=qio -adafruit_feather_esp32s3_nopsram.build.partitions=default -adafruit_feather_esp32s3_nopsram.build.defines= -adafruit_feather_esp32s3_nopsram.build.loop_core= -adafruit_feather_esp32s3_nopsram.build.event_core= -adafruit_feather_esp32s3_nopsram.build.flash_type=qio -adafruit_feather_esp32s3_nopsram.build.psram_type=qspi -adafruit_feather_esp32s3_nopsram.build.memory_type={build.flash_type}_{build.psram_type} +adafruit_feather_esp32s3_reversetft.menu.UploadMode.cdc=USB-OTG CDC (TinyUSB) +adafruit_feather_esp32s3_reversetft.menu.UploadMode.cdc.upload.use_1200bps_touch=true +adafruit_feather_esp32s3_reversetft.menu.UploadMode.cdc.upload.wait_for_upload_port=true +adafruit_feather_esp32s3_reversetft.menu.UploadMode.default=UART0 / Hardware CDC +adafruit_feather_esp32s3_reversetft.menu.UploadMode.default.upload.use_1200bps_touch=false +adafruit_feather_esp32s3_reversetft.menu.UploadMode.default.upload.wait_for_upload_port=false -adafruit_feather_esp32s3_nopsram.menu.LoopCore.1=Core 1 -adafruit_feather_esp32s3_nopsram.menu.LoopCore.1.build.loop_core=-DARDUINO_RUNNING_CORE=1 -adafruit_feather_esp32s3_nopsram.menu.LoopCore.0=Core 0 -adafruit_feather_esp32s3_nopsram.menu.LoopCore.0.build.loop_core=-DARDUINO_RUNNING_CORE=0 +adafruit_feather_esp32s3_reversetft.menu.PSRAM.enabled=QSPI PSRAM +adafruit_feather_esp32s3_reversetft.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM +adafruit_feather_esp32s3_reversetft.menu.PSRAM.enabled.build.psram_type=qspi +adafruit_feather_esp32s3_reversetft.menu.PSRAM.disabled=Disabled +adafruit_feather_esp32s3_reversetft.menu.PSRAM.disabled.build.defines= +adafruit_feather_esp32s3_reversetft.menu.PSRAM.disabled.build.psram_type=qspi +adafruit_feather_esp32s3_reversetft.menu.PSRAM.opi=OPI PSRAM +adafruit_feather_esp32s3_reversetft.menu.PSRAM.opi.build.defines=-DBOARD_HAS_PSRAM +adafruit_feather_esp32s3_reversetft.menu.PSRAM.opi.build.psram_type=opi -adafruit_feather_esp32s3_nopsram.menu.EventsCore.1=Core 1 -adafruit_feather_esp32s3_nopsram.menu.EventsCore.1.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=1 -adafruit_feather_esp32s3_nopsram.menu.EventsCore.0=Core 0 -adafruit_feather_esp32s3_nopsram.menu.EventsCore.0.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=0 +adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FATFS) +adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 +adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.tinyuf2.build.custom_partitions=partitions-4MB-tinyuf2 +adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 +adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" +adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) +adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.default.build.partitions=default +adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) +adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.defaultffat.build.partitions=default_ffat +adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS) +adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.minimal.build.partitions=minimal +adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS) +adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.no_ota.build.partitions=no_ota +adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.no_ota.upload.maximum_size=2097152 +adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.noota_3g=No OTA (1MB APP/3MB SPIFFS) +adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.noota_3g.build.partitions=noota_3g +adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.noota_3g.upload.maximum_size=1048576 +adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.noota_ffat=No OTA (2MB APP/2MB FATFS) +adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.noota_ffat.build.partitions=noota_ffat +adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.noota_ffat.upload.maximum_size=2097152 +adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.noota_3gffat=No OTA (1MB APP/3MB FATFS) +adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.noota_3gffat.build.partitions=noota_3gffat +adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.noota_3gffat.upload.maximum_size=1048576 +adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.huge_app=Huge APP (3MB No OTA/1MB SPIFFS) +adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.huge_app.build.partitions=huge_app +adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.huge_app.upload.maximum_size=3145728 +adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS) +adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs +adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080 -adafruit_feather_esp32s3_nopsram.menu.USBMode.default=USB-OTG (TinyUSB) -adafruit_feather_esp32s3_nopsram.menu.USBMode.default.build.usb_mode=0 -adafruit_feather_esp32s3_nopsram.menu.USBMode.hwcdc=Hardware CDC and JTAG -adafruit_feather_esp32s3_nopsram.menu.USBMode.hwcdc.build.usb_mode=1 +adafruit_feather_esp32s3_reversetft.menu.CPUFreq.240=240MHz (WiFi) +adafruit_feather_esp32s3_reversetft.menu.CPUFreq.240.build.f_cpu=240000000L +adafruit_feather_esp32s3_reversetft.menu.CPUFreq.160=160MHz (WiFi) +adafruit_feather_esp32s3_reversetft.menu.CPUFreq.160.build.f_cpu=160000000L +adafruit_feather_esp32s3_reversetft.menu.CPUFreq.80=80MHz (WiFi) +adafruit_feather_esp32s3_reversetft.menu.CPUFreq.80.build.f_cpu=80000000L +adafruit_feather_esp32s3_reversetft.menu.CPUFreq.40=40MHz +adafruit_feather_esp32s3_reversetft.menu.CPUFreq.40.build.f_cpu=40000000L +adafruit_feather_esp32s3_reversetft.menu.CPUFreq.20=20MHz +adafruit_feather_esp32s3_reversetft.menu.CPUFreq.20.build.f_cpu=20000000L +adafruit_feather_esp32s3_reversetft.menu.CPUFreq.10=10MHz +adafruit_feather_esp32s3_reversetft.menu.CPUFreq.10.build.f_cpu=10000000L -adafruit_feather_esp32s3_nopsram.menu.CDCOnBoot.cdc=Enabled -adafruit_feather_esp32s3_nopsram.menu.CDCOnBoot.cdc.build.cdc_on_boot=1 -adafruit_feather_esp32s3_nopsram.menu.CDCOnBoot.default=Disabled -adafruit_feather_esp32s3_nopsram.menu.CDCOnBoot.default.build.cdc_on_boot=0 +adafruit_feather_esp32s3_reversetft.menu.FlashMode.qio=QIO 80MHz +adafruit_feather_esp32s3_reversetft.menu.FlashMode.qio.build.flash_mode=dio +adafruit_feather_esp32s3_reversetft.menu.FlashMode.qio.build.boot=qio +adafruit_feather_esp32s3_reversetft.menu.FlashMode.qio.build.boot_freq=80m +adafruit_feather_esp32s3_reversetft.menu.FlashMode.qio.build.flash_freq=80m +adafruit_feather_esp32s3_reversetft.menu.FlashMode.qio120=QIO 120MHz +adafruit_feather_esp32s3_reversetft.menu.FlashMode.qio120.build.flash_mode=dio +adafruit_feather_esp32s3_reversetft.menu.FlashMode.qio120.build.boot=qio +adafruit_feather_esp32s3_reversetft.menu.FlashMode.qio120.build.boot_freq=120m +adafruit_feather_esp32s3_reversetft.menu.FlashMode.qio120.build.flash_freq=80m +adafruit_feather_esp32s3_reversetft.menu.FlashMode.dio=DIO 80MHz +adafruit_feather_esp32s3_reversetft.menu.FlashMode.dio.build.flash_mode=dio +adafruit_feather_esp32s3_reversetft.menu.FlashMode.dio.build.boot=dio +adafruit_feather_esp32s3_reversetft.menu.FlashMode.dio.build.boot_freq=80m +adafruit_feather_esp32s3_reversetft.menu.FlashMode.dio.build.flash_freq=80m +adafruit_feather_esp32s3_reversetft.menu.FlashMode.opi=OPI 80MHz +adafruit_feather_esp32s3_reversetft.menu.FlashMode.opi.build.flash_mode=dout +adafruit_feather_esp32s3_reversetft.menu.FlashMode.opi.build.boot=opi +adafruit_feather_esp32s3_reversetft.menu.FlashMode.opi.build.boot_freq=80m +adafruit_feather_esp32s3_reversetft.menu.FlashMode.opi.build.flash_freq=80m -adafruit_feather_esp32s3_nopsram.menu.MSCOnBoot.default=Disabled -adafruit_feather_esp32s3_nopsram.menu.MSCOnBoot.default.build.msc_on_boot=0 -adafruit_feather_esp32s3_nopsram.menu.MSCOnBoot.msc=Enabled (Requires USB-OTG Mode) -adafruit_feather_esp32s3_nopsram.menu.MSCOnBoot.msc.build.msc_on_boot=1 +adafruit_feather_esp32s3_reversetft.menu.FlashSize.4M=4MB (32Mb) +adafruit_feather_esp32s3_reversetft.menu.FlashSize.4M.build.flash_size=4MB -adafruit_feather_esp32s3_nopsram.menu.DFUOnBoot.default=Disabled -adafruit_feather_esp32s3_nopsram.menu.DFUOnBoot.default.build.dfu_on_boot=0 -adafruit_feather_esp32s3_nopsram.menu.DFUOnBoot.dfu=Enabled (Requires USB-OTG Mode) -adafruit_feather_esp32s3_nopsram.menu.DFUOnBoot.dfu.build.dfu_on_boot=1 +adafruit_feather_esp32s3_reversetft.menu.UploadSpeed.921600=921600 +adafruit_feather_esp32s3_reversetft.menu.UploadSpeed.921600.upload.speed=921600 +adafruit_feather_esp32s3_reversetft.menu.UploadSpeed.115200=115200 +adafruit_feather_esp32s3_reversetft.menu.UploadSpeed.115200.upload.speed=115200 +adafruit_feather_esp32s3_reversetft.menu.UploadSpeed.256000.windows=256000 +adafruit_feather_esp32s3_reversetft.menu.UploadSpeed.256000.upload.speed=256000 +adafruit_feather_esp32s3_reversetft.menu.UploadSpeed.230400.windows.upload.speed=256000 +adafruit_feather_esp32s3_reversetft.menu.UploadSpeed.230400=230400 +adafruit_feather_esp32s3_reversetft.menu.UploadSpeed.230400.upload.speed=230400 +adafruit_feather_esp32s3_reversetft.menu.UploadSpeed.460800.linux=460800 +adafruit_feather_esp32s3_reversetft.menu.UploadSpeed.460800.macosx=460800 +adafruit_feather_esp32s3_reversetft.menu.UploadSpeed.460800.upload.speed=460800 +adafruit_feather_esp32s3_reversetft.menu.UploadSpeed.512000.windows=512000 +adafruit_feather_esp32s3_reversetft.menu.UploadSpeed.512000.upload.speed=512000 -adafruit_feather_esp32s3_nopsram.menu.UploadMode.cdc=USB-OTG CDC (TinyUSB) -adafruit_feather_esp32s3_nopsram.menu.UploadMode.cdc.upload.use_1200bps_touch=true -adafruit_feather_esp32s3_nopsram.menu.UploadMode.cdc.upload.wait_for_upload_port=true -adafruit_feather_esp32s3_nopsram.menu.UploadMode.default=UART0 / Hardware CDC -adafruit_feather_esp32s3_nopsram.menu.UploadMode.default.upload.use_1200bps_touch=false -adafruit_feather_esp32s3_nopsram.menu.UploadMode.default.upload.wait_for_upload_port=false +adafruit_feather_esp32s3_reversetft.menu.DebugLevel.none=None +adafruit_feather_esp32s3_reversetft.menu.DebugLevel.none.build.code_debug=0 +adafruit_feather_esp32s3_reversetft.menu.DebugLevel.error=Error +adafruit_feather_esp32s3_reversetft.menu.DebugLevel.error.build.code_debug=1 +adafruit_feather_esp32s3_reversetft.menu.DebugLevel.warn=Warn +adafruit_feather_esp32s3_reversetft.menu.DebugLevel.warn.build.code_debug=2 +adafruit_feather_esp32s3_reversetft.menu.DebugLevel.info=Info +adafruit_feather_esp32s3_reversetft.menu.DebugLevel.info.build.code_debug=3 +adafruit_feather_esp32s3_reversetft.menu.DebugLevel.debug=Debug +adafruit_feather_esp32s3_reversetft.menu.DebugLevel.debug.build.code_debug=4 +adafruit_feather_esp32s3_reversetft.menu.DebugLevel.verbose=Verbose +adafruit_feather_esp32s3_reversetft.menu.DebugLevel.verbose.build.code_debug=5 -adafruit_feather_esp32s3_nopsram.menu.PartitionScheme.tinyuf2=TinyUF2 8MB (2MB APP/3.7MB FFAT) -adafruit_feather_esp32s3_nopsram.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 -adafruit_feather_esp32s3_nopsram.menu.PartitionScheme.tinyuf2.build.custom_partitions=partitions-8MB-tinyuf2 -adafruit_feather_esp32s3_nopsram.menu.PartitionScheme.tinyuf2.upload.maximum_size=2097152 -adafruit_feather_esp32s3_nopsram.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x410000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" -adafruit_feather_esp32s3_nopsram.menu.PartitionScheme.default_8MB=Default (3MB APP/1.5MB SPIFFS) -adafruit_feather_esp32s3_nopsram.menu.PartitionScheme.default_8MB.build.partitions=default_8MB -adafruit_feather_esp32s3_nopsram.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336 +adafruit_feather_esp32s3_reversetft.menu.EraseFlash.none=Disabled +adafruit_feather_esp32s3_reversetft.menu.EraseFlash.none.upload.erase_cmd= +adafruit_feather_esp32s3_reversetft.menu.EraseFlash.all=Enabled +adafruit_feather_esp32s3_reversetft.menu.EraseFlash.all.upload.erase_cmd=-e -adafruit_feather_esp32s3_nopsram.menu.CPUFreq.240=240MHz (WiFi) -adafruit_feather_esp32s3_nopsram.menu.CPUFreq.240.build.f_cpu=240000000L -adafruit_feather_esp32s3_nopsram.menu.CPUFreq.160=160MHz (WiFi) -adafruit_feather_esp32s3_nopsram.menu.CPUFreq.160.build.f_cpu=160000000L -adafruit_feather_esp32s3_nopsram.menu.CPUFreq.80=80MHz (WiFi) -adafruit_feather_esp32s3_nopsram.menu.CPUFreq.80.build.f_cpu=80000000L -adafruit_feather_esp32s3_nopsram.menu.CPUFreq.40=40MHz -adafruit_feather_esp32s3_nopsram.menu.CPUFreq.40.build.f_cpu=40000000L -adafruit_feather_esp32s3_nopsram.menu.CPUFreq.20=20MHz -adafruit_feather_esp32s3_nopsram.menu.CPUFreq.20.build.f_cpu=20000000L -adafruit_feather_esp32s3_nopsram.menu.CPUFreq.10=10MHz -adafruit_feather_esp32s3_nopsram.menu.CPUFreq.10.build.f_cpu=10000000L +############################################################## +# Adafruit QT Py ESP32 + +adafruit_qtpy_esp32_pico.name=Adafruit QT Py ESP32 -adafruit_feather_esp32s3_nopsram.menu.FlashMode.qio=QIO 80MHz -adafruit_feather_esp32s3_nopsram.menu.FlashMode.qio.build.flash_mode=dio -adafruit_feather_esp32s3_nopsram.menu.FlashMode.qio.build.boot=qio -adafruit_feather_esp32s3_nopsram.menu.FlashMode.qio.build.boot_freq=80m -adafruit_feather_esp32s3_nopsram.menu.FlashMode.qio.build.flash_freq=80m -adafruit_feather_esp32s3_nopsram.menu.FlashMode.qio120=QIO 120MHz -adafruit_feather_esp32s3_nopsram.menu.FlashMode.qio120.build.flash_mode=dio -adafruit_feather_esp32s3_nopsram.menu.FlashMode.qio120.build.boot=qio -adafruit_feather_esp32s3_nopsram.menu.FlashMode.qio120.build.boot_freq=120m -adafruit_feather_esp32s3_nopsram.menu.FlashMode.qio120.build.flash_freq=80m -adafruit_feather_esp32s3_nopsram.menu.FlashMode.dio=DIO 80MHz -adafruit_feather_esp32s3_nopsram.menu.FlashMode.dio.build.flash_mode=dio -adafruit_feather_esp32s3_nopsram.menu.FlashMode.dio.build.boot=dio -adafruit_feather_esp32s3_nopsram.menu.FlashMode.dio.build.boot_freq=80m -adafruit_feather_esp32s3_nopsram.menu.FlashMode.dio.build.flash_freq=80m -adafruit_feather_esp32s3_nopsram.menu.FlashMode.opi=OPI 80MHz -adafruit_feather_esp32s3_nopsram.menu.FlashMode.opi.build.flash_mode=dout -adafruit_feather_esp32s3_nopsram.menu.FlashMode.opi.build.boot=opi -adafruit_feather_esp32s3_nopsram.menu.FlashMode.opi.build.boot_freq=80m -adafruit_feather_esp32s3_nopsram.menu.FlashMode.opi.build.flash_freq=80m +adafruit_qtpy_esp32_pico.bootloader.tool=esptool_py +adafruit_qtpy_esp32_pico.bootloader.tool.default=esptool_py -adafruit_feather_esp32s3_nopsram.menu.FlashSize.8M=8MB (64Mb) -adafruit_feather_esp32s3_nopsram.menu.FlashSize.8M.build.flash_size=8MB +adafruit_qtpy_esp32_pico.upload.tool=esptool_py +adafruit_qtpy_esp32_pico.upload.tool.default=esptool_py +adafruit_qtpy_esp32_pico.upload.tool.network=esp_ota -adafruit_feather_esp32s3_nopsram.menu.UploadSpeed.921600=921600 -adafruit_feather_esp32s3_nopsram.menu.UploadSpeed.921600.upload.speed=921600 -adafruit_feather_esp32s3_nopsram.menu.UploadSpeed.115200=115200 -adafruit_feather_esp32s3_nopsram.menu.UploadSpeed.115200.upload.speed=115200 -adafruit_feather_esp32s3_nopsram.menu.UploadSpeed.256000.windows=256000 -adafruit_feather_esp32s3_nopsram.menu.UploadSpeed.256000.upload.speed=256000 -adafruit_feather_esp32s3_nopsram.menu.UploadSpeed.230400.windows.upload.speed=256000 -adafruit_feather_esp32s3_nopsram.menu.UploadSpeed.230400=230400 -adafruit_feather_esp32s3_nopsram.menu.UploadSpeed.230400.upload.speed=230400 -adafruit_feather_esp32s3_nopsram.menu.UploadSpeed.460800.linux=460800 -adafruit_feather_esp32s3_nopsram.menu.UploadSpeed.460800.macosx=460800 -adafruit_feather_esp32s3_nopsram.menu.UploadSpeed.460800.upload.speed=460800 -adafruit_feather_esp32s3_nopsram.menu.UploadSpeed.512000.windows=512000 -adafruit_feather_esp32s3_nopsram.menu.UploadSpeed.512000.upload.speed=512000 +adafruit_qtpy_esp32_pico.upload.maximum_size=1310720 +adafruit_qtpy_esp32_pico.upload.maximum_data_size=327680 +adafruit_qtpy_esp32_pico.upload.flags= +adafruit_qtpy_esp32_pico.upload.extra_flags= -adafruit_feather_esp32s3_nopsram.menu.DebugLevel.none=None -adafruit_feather_esp32s3_nopsram.menu.DebugLevel.none.build.code_debug=0 -adafruit_feather_esp32s3_nopsram.menu.DebugLevel.error=Error -adafruit_feather_esp32s3_nopsram.menu.DebugLevel.error.build.code_debug=1 -adafruit_feather_esp32s3_nopsram.menu.DebugLevel.warn=Warn -adafruit_feather_esp32s3_nopsram.menu.DebugLevel.warn.build.code_debug=2 -adafruit_feather_esp32s3_nopsram.menu.DebugLevel.info=Info -adafruit_feather_esp32s3_nopsram.menu.DebugLevel.info.build.code_debug=3 -adafruit_feather_esp32s3_nopsram.menu.DebugLevel.debug=Debug -adafruit_feather_esp32s3_nopsram.menu.DebugLevel.debug.build.code_debug=4 -adafruit_feather_esp32s3_nopsram.menu.DebugLevel.verbose=Verbose -adafruit_feather_esp32s3_nopsram.menu.DebugLevel.verbose.build.code_debug=5 +adafruit_qtpy_esp32_pico.serial.disableDTR=true +adafruit_qtpy_esp32_pico.serial.disableRTS=true -adafruit_feather_esp32s3_nopsram.menu.EraseFlash.none=Disabled -adafruit_feather_esp32s3_nopsram.menu.EraseFlash.none.upload.erase_cmd= -adafruit_feather_esp32s3_nopsram.menu.EraseFlash.all=Enabled -adafruit_feather_esp32s3_nopsram.menu.EraseFlash.all.upload.erase_cmd=-e +adafruit_qtpy_esp32_pico.build.tarch=xtensa +adafruit_qtpy_esp32_pico.build.bootloader_addr=0x1000 +adafruit_qtpy_esp32_pico.build.target=esp32 +adafruit_qtpy_esp32_pico.build.mcu=esp32 +adafruit_qtpy_esp32_pico.build.core=esp32 +adafruit_qtpy_esp32_pico.build.variant=adafruit_qtpy_esp32 +adafruit_qtpy_esp32_pico.build.board=ADAFRUIT_QTPY_ESP32_PICO -############################################################## -# Adafruit Feather ESP32-S3 TFT +adafruit_qtpy_esp32_pico.build.f_cpu=240000000L +adafruit_qtpy_esp32_pico.build.flash_size=8MB +adafruit_qtpy_esp32_pico.build.flash_freq=80m +adafruit_qtpy_esp32_pico.build.flash_mode=dio +adafruit_qtpy_esp32_pico.build.boot=dio +adafruit_qtpy_esp32_pico.build.partitions=default +adafruit_qtpy_esp32_pico.build.defines= +adafruit_qtpy_esp32_pico.build.loop_core= +adafruit_qtpy_esp32_pico.build.event_core= -adafruit_feather_esp32s3_tft.name=Adafruit Feather ESP32-S3 TFT -adafruit_feather_esp32s3_tft.vid.0=0x239A -adafruit_feather_esp32s3_tft.pid.0=0x811D -adafruit_feather_esp32s3_tft.vid.1=0x239A -adafruit_feather_esp32s3_tft.pid.1=0x011D -adafruit_feather_esp32s3_tft.vid.2=0x239A -adafruit_feather_esp32s3_tft.pid.2=0x811E +adafruit_qtpy_esp32_pico.menu.LoopCore.1=Core 1 +adafruit_qtpy_esp32_pico.menu.LoopCore.1.build.loop_core=-DARDUINO_RUNNING_CORE=1 +adafruit_qtpy_esp32_pico.menu.LoopCore.0=Core 0 +adafruit_qtpy_esp32_pico.menu.LoopCore.0.build.loop_core=-DARDUINO_RUNNING_CORE=0 -adafruit_feather_esp32s3_tft.bootloader.tool=esptool_py -adafruit_feather_esp32s3_tft.bootloader.tool.default=esptool_py +adafruit_qtpy_esp32_pico.menu.EventsCore.1=Core 1 +adafruit_qtpy_esp32_pico.menu.EventsCore.1.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=1 +adafruit_qtpy_esp32_pico.menu.EventsCore.0=Core 0 +adafruit_qtpy_esp32_pico.menu.EventsCore.0.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=0 -adafruit_feather_esp32s3_tft.upload.tool=esptool_py -adafruit_feather_esp32s3_tft.upload.tool.default=esptool_py -adafruit_feather_esp32s3_tft.upload.tool.network=esp_ota +adafruit_qtpy_esp32_pico.menu.PSRAM.enabled=Enabled +adafruit_qtpy_esp32_pico.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM -mfix-esp32-psram-cache-issue -mfix-esp32-psram-cache-strategy=memw +adafruit_qtpy_esp32_pico.menu.PSRAM.disabled=Disabled +adafruit_qtpy_esp32_pico.menu.PSRAM.disabled.build.defines= -adafruit_feather_esp32s3_tft.upload.maximum_size=1310720 -adafruit_feather_esp32s3_tft.upload.maximum_data_size=327680 -adafruit_feather_esp32s3_tft.upload.flags= -adafruit_feather_esp32s3_tft.upload.extra_flags= -adafruit_feather_esp32s3_tft.upload.use_1200bps_touch=true -adafruit_feather_esp32s3_tft.upload.wait_for_upload_port=true +adafruit_qtpy_esp32_pico.menu.PartitionScheme.default_8MB=Default (3MB APP/1.5MB SPIFFS) +adafruit_qtpy_esp32_pico.menu.PartitionScheme.default_8MB.build.partitions=default_8MB +adafruit_qtpy_esp32_pico.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336 -adafruit_feather_esp32s3_tft.serial.disableDTR=false -adafruit_feather_esp32s3_tft.serial.disableRTS=false +adafruit_qtpy_esp32_pico.menu.CPUFreq.240=240MHz (WiFi/BT) +adafruit_qtpy_esp32_pico.menu.CPUFreq.240.build.f_cpu=240000000L +adafruit_qtpy_esp32_pico.menu.CPUFreq.160=160MHz (WiFi/BT) +adafruit_qtpy_esp32_pico.menu.CPUFreq.160.build.f_cpu=160000000L +adafruit_qtpy_esp32_pico.menu.CPUFreq.80=80MHz (WiFi/BT) +adafruit_qtpy_esp32_pico.menu.CPUFreq.80.build.f_cpu=80000000L +adafruit_qtpy_esp32_pico.menu.CPUFreq.40=40MHz +adafruit_qtpy_esp32_pico.menu.CPUFreq.40.build.f_cpu=40000000L +adafruit_qtpy_esp32_pico.menu.CPUFreq.20=20MHz +adafruit_qtpy_esp32_pico.menu.CPUFreq.20.build.f_cpu=20000000L +adafruit_qtpy_esp32_pico.menu.CPUFreq.10=10MHz +adafruit_qtpy_esp32_pico.menu.CPUFreq.10.build.f_cpu=10000000L -adafruit_feather_esp32s3_tft.build.tarch=xtensa -adafruit_feather_esp32s3_tft.build.bootloader_addr=0x0 -adafruit_feather_esp32s3_tft.build.target=esp32s3 -adafruit_feather_esp32s3_tft.build.mcu=esp32s3 -adafruit_feather_esp32s3_tft.build.core=esp32 -adafruit_feather_esp32s3_tft.build.variant=adafruit_feather_esp32s3_tft -adafruit_feather_esp32s3_tft.build.board=ADAFRUIT_FEATHER_ESP32S3_TFT +adafruit_qtpy_esp32_pico.menu.FlashFreq.80=80MHz +adafruit_qtpy_esp32_pico.menu.FlashFreq.80.build.flash_freq=80m +adafruit_qtpy_esp32_pico.menu.FlashFreq.40=40MHz +adafruit_qtpy_esp32_pico.menu.FlashFreq.40.build.flash_freq=40m -adafruit_feather_esp32s3_tft.build.usb_mode=0 -adafruit_feather_esp32s3_tft.build.cdc_on_boot=1 -adafruit_feather_esp32s3_tft.build.msc_on_boot=0 -adafruit_feather_esp32s3_tft.build.dfu_on_boot=0 -adafruit_feather_esp32s3_tft.build.f_cpu=240000000L -adafruit_feather_esp32s3_tft.build.flash_size=4MB -adafruit_feather_esp32s3_tft.build.flash_freq=80m -adafruit_feather_esp32s3_tft.build.flash_mode=dio -adafruit_feather_esp32s3_tft.build.boot=qio -adafruit_feather_esp32s3_tft.build.partitions=default -adafruit_feather_esp32s3_tft.build.defines= -adafruit_feather_esp32s3_tft.build.loop_core= -adafruit_feather_esp32s3_tft.build.event_core= -adafruit_feather_esp32s3_tft.build.flash_type=qio -adafruit_feather_esp32s3_tft.build.psram_type=qspi -adafruit_feather_esp32s3_tft.build.memory_type={build.flash_type}_{build.psram_type} +adafruit_qtpy_esp32_pico.menu.FlashSize.8M=8MB (64Mb) +adafruit_qtpy_esp32_pico.menu.FlashSize.8M.build.flash_size=8MB -adafruit_feather_esp32s3_tft.menu.LoopCore.1=Core 1 -adafruit_feather_esp32s3_tft.menu.LoopCore.1.build.loop_core=-DARDUINO_RUNNING_CORE=1 -adafruit_feather_esp32s3_tft.menu.LoopCore.0=Core 0 -adafruit_feather_esp32s3_tft.menu.LoopCore.0.build.loop_core=-DARDUINO_RUNNING_CORE=0 +adafruit_qtpy_esp32_pico.menu.UploadSpeed.921600=921600 +adafruit_qtpy_esp32_pico.menu.UploadSpeed.921600.upload.speed=921600 +adafruit_qtpy_esp32_pico.menu.UploadSpeed.115200=115200 +adafruit_qtpy_esp32_pico.menu.UploadSpeed.115200.upload.speed=115200 +adafruit_qtpy_esp32_pico.menu.UploadSpeed.256000.windows=256000 +adafruit_qtpy_esp32_pico.menu.UploadSpeed.256000.upload.speed=256000 +adafruit_qtpy_esp32_pico.menu.UploadSpeed.230400.windows.upload.speed=256000 +adafruit_qtpy_esp32_pico.menu.UploadSpeed.230400=230400 +adafruit_qtpy_esp32_pico.menu.UploadSpeed.230400.upload.speed=230400 +adafruit_qtpy_esp32_pico.menu.UploadSpeed.460800.linux=460800 +adafruit_qtpy_esp32_pico.menu.UploadSpeed.460800.macosx=460800 +adafruit_qtpy_esp32_pico.menu.UploadSpeed.460800.upload.speed=460800 +adafruit_qtpy_esp32_pico.menu.UploadSpeed.512000.windows=512000 +adafruit_qtpy_esp32_pico.menu.UploadSpeed.512000.upload.speed=512000 -adafruit_feather_esp32s3_tft.menu.EventsCore.1=Core 1 -adafruit_feather_esp32s3_tft.menu.EventsCore.1.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=1 -adafruit_feather_esp32s3_tft.menu.EventsCore.0=Core 0 -adafruit_feather_esp32s3_tft.menu.EventsCore.0.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=0 +adafruit_qtpy_esp32_pico.menu.DebugLevel.none=None +adafruit_qtpy_esp32_pico.menu.DebugLevel.none.build.code_debug=0 +adafruit_qtpy_esp32_pico.menu.DebugLevel.error=Error +adafruit_qtpy_esp32_pico.menu.DebugLevel.error.build.code_debug=1 +adafruit_qtpy_esp32_pico.menu.DebugLevel.warn=Warn +adafruit_qtpy_esp32_pico.menu.DebugLevel.warn.build.code_debug=2 +adafruit_qtpy_esp32_pico.menu.DebugLevel.info=Info +adafruit_qtpy_esp32_pico.menu.DebugLevel.info.build.code_debug=3 +adafruit_qtpy_esp32_pico.menu.DebugLevel.debug=Debug +adafruit_qtpy_esp32_pico.menu.DebugLevel.debug.build.code_debug=4 +adafruit_qtpy_esp32_pico.menu.DebugLevel.verbose=Verbose +adafruit_qtpy_esp32_pico.menu.DebugLevel.verbose.build.code_debug=5 -adafruit_feather_esp32s3_tft.menu.USBMode.default=USB-OTG (TinyUSB) -adafruit_feather_esp32s3_tft.menu.USBMode.default.build.usb_mode=0 -adafruit_feather_esp32s3_tft.menu.USBMode.hwcdc=Hardware CDC and JTAG -adafruit_feather_esp32s3_tft.menu.USBMode.hwcdc.build.usb_mode=1 +adafruit_qtpy_esp32_pico.menu.EraseFlash.none=Disabled +adafruit_qtpy_esp32_pico.menu.EraseFlash.none.upload.erase_cmd= +adafruit_qtpy_esp32_pico.menu.EraseFlash.all=Enabled +adafruit_qtpy_esp32_pico.menu.EraseFlash.all.upload.erase_cmd=-e -adafruit_feather_esp32s3_tft.menu.CDCOnBoot.cdc=Enabled -adafruit_feather_esp32s3_tft.menu.CDCOnBoot.cdc.build.cdc_on_boot=1 -adafruit_feather_esp32s3_tft.menu.CDCOnBoot.default=Disabled -adafruit_feather_esp32s3_tft.menu.CDCOnBoot.default.build.cdc_on_boot=0 +############################################################## +# Adafruit QT Py ESP32-C3 -adafruit_feather_esp32s3_tft.menu.MSCOnBoot.default=Disabled -adafruit_feather_esp32s3_tft.menu.MSCOnBoot.default.build.msc_on_boot=0 -adafruit_feather_esp32s3_tft.menu.MSCOnBoot.msc=Enabled (Requires USB-OTG Mode) -adafruit_feather_esp32s3_tft.menu.MSCOnBoot.msc.build.msc_on_boot=1 +adafruit_qtpy_esp32c3.name=Adafruit QT Py ESP32-C3 +adafruit_qtpy_esp32c3.vid.0=0x303a +adafruit_qtpy_esp32c3.pid.0=0x1001 -adafruit_feather_esp32s3_tft.menu.DFUOnBoot.default=Disabled -adafruit_feather_esp32s3_tft.menu.DFUOnBoot.default.build.dfu_on_boot=0 -adafruit_feather_esp32s3_tft.menu.DFUOnBoot.dfu=Enabled (Requires USB-OTG Mode) -adafruit_feather_esp32s3_tft.menu.DFUOnBoot.dfu.build.dfu_on_boot=1 +adafruit_qtpy_esp32c3.bootloader.tool=esptool_py +adafruit_qtpy_esp32c3.bootloader.tool.default=esptool_py -adafruit_feather_esp32s3_tft.menu.UploadMode.cdc=USB-OTG CDC (TinyUSB) -adafruit_feather_esp32s3_tft.menu.UploadMode.cdc.upload.use_1200bps_touch=true -adafruit_feather_esp32s3_tft.menu.UploadMode.cdc.upload.wait_for_upload_port=true -adafruit_feather_esp32s3_tft.menu.UploadMode.default=UART0 / Hardware CDC -adafruit_feather_esp32s3_tft.menu.UploadMode.default.upload.use_1200bps_touch=false -adafruit_feather_esp32s3_tft.menu.UploadMode.default.upload.wait_for_upload_port=false +adafruit_qtpy_esp32c3.upload.tool=esptool_py +adafruit_qtpy_esp32c3.upload.tool.default=esptool_py +adafruit_qtpy_esp32c3.upload.tool.network=esp_ota -adafruit_feather_esp32s3_tft.menu.PSRAM.enabled=QSPI PSRAM -adafruit_feather_esp32s3_tft.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM -adafruit_feather_esp32s3_tft.menu.PSRAM.enabled.build.psram_type=qspi -adafruit_feather_esp32s3_tft.menu.PSRAM.disabled=Disabled -adafruit_feather_esp32s3_tft.menu.PSRAM.disabled.build.defines= -adafruit_feather_esp32s3_tft.menu.PSRAM.disabled.build.psram_type=qspi -adafruit_feather_esp32s3_tft.menu.PSRAM.opi=OPI PSRAM -adafruit_feather_esp32s3_tft.menu.PSRAM.opi.build.defines=-DBOARD_HAS_PSRAM -adafruit_feather_esp32s3_tft.menu.PSRAM.opi.build.psram_type=opi +adafruit_qtpy_esp32c3.upload.maximum_size=1310720 +adafruit_qtpy_esp32c3.upload.maximum_data_size=327680 +adafruit_qtpy_esp32c3.upload.flags= +adafruit_qtpy_esp32c3.upload.extra_flags= +adafruit_qtpy_esp32c3.upload.use_1200bps_touch=false +adafruit_qtpy_esp32c3.upload.wait_for_upload_port=false + +adafruit_qtpy_esp32c3.serial.disableDTR=false +adafruit_qtpy_esp32c3.serial.disableRTS=false + +adafruit_qtpy_esp32c3.build.tarch=riscv32 +adafruit_qtpy_esp32c3.build.bootloader_addr=0x0 +adafruit_qtpy_esp32c3.build.target=esp +adafruit_qtpy_esp32c3.build.mcu=esp32c3 +adafruit_qtpy_esp32c3.build.core=esp32 +adafruit_qtpy_esp32c3.build.variant=adafruit_qtpy_esp32c3 +adafruit_qtpy_esp32c3.build.board=ADAFRUIT_QTPY_ESP32C3 + +adafruit_qtpy_esp32c3.build.cdc_on_boot=1 +adafruit_qtpy_esp32c3.build.f_cpu=160000000L +adafruit_qtpy_esp32c3.build.flash_size=4MB +adafruit_qtpy_esp32c3.build.flash_freq=80m +adafruit_qtpy_esp32c3.build.flash_mode=dio +adafruit_qtpy_esp32c3.build.boot=qio +adafruit_qtpy_esp32c3.build.partitions=default +adafruit_qtpy_esp32c3.build.defines= -adafruit_feather_esp32s3_tft.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FFAT) -adafruit_feather_esp32s3_tft.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 -adafruit_feather_esp32s3_tft.menu.PartitionScheme.tinyuf2.build.custom_partitions=partitions-4MB-tinyuf2 -adafruit_feather_esp32s3_tft.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 -adafruit_feather_esp32s3_tft.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" -adafruit_feather_esp32s3_tft.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) -adafruit_feather_esp32s3_tft.menu.PartitionScheme.default.build.partitions=default -adafruit_feather_esp32s3_tft.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) -adafruit_feather_esp32s3_tft.menu.PartitionScheme.defaultffat.build.partitions=default_ffat -adafruit_feather_esp32s3_tft.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS) -adafruit_feather_esp32s3_tft.menu.PartitionScheme.minimal.build.partitions=minimal -adafruit_feather_esp32s3_tft.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS) -adafruit_feather_esp32s3_tft.menu.PartitionScheme.no_ota.build.partitions=no_ota -adafruit_feather_esp32s3_tft.menu.PartitionScheme.no_ota.upload.maximum_size=2097152 -adafruit_feather_esp32s3_tft.menu.PartitionScheme.noota_3g=No OTA (1MB APP/3MB SPIFFS) -adafruit_feather_esp32s3_tft.menu.PartitionScheme.noota_3g.build.partitions=noota_3g -adafruit_feather_esp32s3_tft.menu.PartitionScheme.noota_3g.upload.maximum_size=1048576 -adafruit_feather_esp32s3_tft.menu.PartitionScheme.noota_ffat=No OTA (2MB APP/2MB FATFS) -adafruit_feather_esp32s3_tft.menu.PartitionScheme.noota_ffat.build.partitions=noota_ffat -adafruit_feather_esp32s3_tft.menu.PartitionScheme.noota_ffat.upload.maximum_size=2097152 -adafruit_feather_esp32s3_tft.menu.PartitionScheme.noota_3gffat=No OTA (1MB APP/3MB FATFS) -adafruit_feather_esp32s3_tft.menu.PartitionScheme.noota_3gffat.build.partitions=noota_3gffat -adafruit_feather_esp32s3_tft.menu.PartitionScheme.noota_3gffat.upload.maximum_size=1048576 -adafruit_feather_esp32s3_tft.menu.PartitionScheme.huge_app=Huge APP (3MB No OTA/1MB SPIFFS) -adafruit_feather_esp32s3_tft.menu.PartitionScheme.huge_app.build.partitions=huge_app -adafruit_feather_esp32s3_tft.menu.PartitionScheme.huge_app.upload.maximum_size=3145728 -adafruit_feather_esp32s3_tft.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS) -adafruit_feather_esp32s3_tft.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs -adafruit_feather_esp32s3_tft.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080 +adafruit_qtpy_esp32c3.menu.CDCOnBoot.cdc=Enabled +adafruit_qtpy_esp32c3.menu.CDCOnBoot.cdc.build.cdc_on_boot=1 +adafruit_qtpy_esp32c3.menu.CDCOnBoot.default=Disabled +adafruit_qtpy_esp32c3.menu.CDCOnBoot.default.build.cdc_on_boot=0 -adafruit_feather_esp32s3_tft.menu.CPUFreq.240=240MHz (WiFi) -adafruit_feather_esp32s3_tft.menu.CPUFreq.240.build.f_cpu=240000000L -adafruit_feather_esp32s3_tft.menu.CPUFreq.160=160MHz (WiFi) -adafruit_feather_esp32s3_tft.menu.CPUFreq.160.build.f_cpu=160000000L -adafruit_feather_esp32s3_tft.menu.CPUFreq.80=80MHz (WiFi) -adafruit_feather_esp32s3_tft.menu.CPUFreq.80.build.f_cpu=80000000L -adafruit_feather_esp32s3_tft.menu.CPUFreq.40=40MHz -adafruit_feather_esp32s3_tft.menu.CPUFreq.40.build.f_cpu=40000000L -adafruit_feather_esp32s3_tft.menu.CPUFreq.20=20MHz -adafruit_feather_esp32s3_tft.menu.CPUFreq.20.build.f_cpu=20000000L -adafruit_feather_esp32s3_tft.menu.CPUFreq.10=10MHz -adafruit_feather_esp32s3_tft.menu.CPUFreq.10.build.f_cpu=10000000L +adafruit_qtpy_esp32c3.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) +adafruit_qtpy_esp32c3.menu.PartitionScheme.default.build.partitions=default +adafruit_qtpy_esp32c3.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) +adafruit_qtpy_esp32c3.menu.PartitionScheme.defaultffat.build.partitions=default_ffat +adafruit_qtpy_esp32c3.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS) +adafruit_qtpy_esp32c3.menu.PartitionScheme.minimal.build.partitions=minimal +adafruit_qtpy_esp32c3.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS) +adafruit_qtpy_esp32c3.menu.PartitionScheme.no_ota.build.partitions=no_ota +adafruit_qtpy_esp32c3.menu.PartitionScheme.no_ota.upload.maximum_size=2097152 +adafruit_qtpy_esp32c3.menu.PartitionScheme.noota_3g=No OTA (1MB APP/3MB SPIFFS) +adafruit_qtpy_esp32c3.menu.PartitionScheme.noota_3g.build.partitions=noota_3g +adafruit_qtpy_esp32c3.menu.PartitionScheme.noota_3g.upload.maximum_size=1048576 +adafruit_qtpy_esp32c3.menu.PartitionScheme.noota_ffat=No OTA (2MB APP/2MB FATFS) +adafruit_qtpy_esp32c3.menu.PartitionScheme.noota_ffat.build.partitions=noota_ffat +adafruit_qtpy_esp32c3.menu.PartitionScheme.noota_ffat.upload.maximum_size=2097152 +adafruit_qtpy_esp32c3.menu.PartitionScheme.noota_3gffat=No OTA (1MB APP/3MB FATFS) +adafruit_qtpy_esp32c3.menu.PartitionScheme.noota_3gffat.build.partitions=noota_3gffat +adafruit_qtpy_esp32c3.menu.PartitionScheme.noota_3gffat.upload.maximum_size=1048576 +adafruit_qtpy_esp32c3.menu.PartitionScheme.huge_app=Huge APP (3MB No OTA/1MB SPIFFS) +adafruit_qtpy_esp32c3.menu.PartitionScheme.huge_app.build.partitions=huge_app +adafruit_qtpy_esp32c3.menu.PartitionScheme.huge_app.upload.maximum_size=3145728 +adafruit_qtpy_esp32c3.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS) +adafruit_qtpy_esp32c3.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs +adafruit_qtpy_esp32c3.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080 -adafruit_feather_esp32s3_tft.menu.FlashMode.qio=QIO 80MHz -adafruit_feather_esp32s3_tft.menu.FlashMode.qio.build.flash_mode=dio -adafruit_feather_esp32s3_tft.menu.FlashMode.qio.build.boot=qio -adafruit_feather_esp32s3_tft.menu.FlashMode.qio.build.boot_freq=80m -adafruit_feather_esp32s3_tft.menu.FlashMode.qio.build.flash_freq=80m -adafruit_feather_esp32s3_tft.menu.FlashMode.qio120=QIO 120MHz -adafruit_feather_esp32s3_tft.menu.FlashMode.qio120.build.flash_mode=dio -adafruit_feather_esp32s3_tft.menu.FlashMode.qio120.build.boot=qio -adafruit_feather_esp32s3_tft.menu.FlashMode.qio120.build.boot_freq=120m -adafruit_feather_esp32s3_tft.menu.FlashMode.qio120.build.flash_freq=80m -adafruit_feather_esp32s3_tft.menu.FlashMode.dio=DIO 80MHz -adafruit_feather_esp32s3_tft.menu.FlashMode.dio.build.flash_mode=dio -adafruit_feather_esp32s3_tft.menu.FlashMode.dio.build.boot=dio -adafruit_feather_esp32s3_tft.menu.FlashMode.dio.build.boot_freq=80m -adafruit_feather_esp32s3_tft.menu.FlashMode.dio.build.flash_freq=80m -adafruit_feather_esp32s3_tft.menu.FlashMode.opi=OPI 80MHz -adafruit_feather_esp32s3_tft.menu.FlashMode.opi.build.flash_mode=dout -adafruit_feather_esp32s3_tft.menu.FlashMode.opi.build.boot=opi -adafruit_feather_esp32s3_tft.menu.FlashMode.opi.build.boot_freq=80m -adafruit_feather_esp32s3_tft.menu.FlashMode.opi.build.flash_freq=80m +adafruit_qtpy_esp32c3.menu.CPUFreq.160=160MHz (WiFi) +adafruit_qtpy_esp32c3.menu.CPUFreq.160.build.f_cpu=160000000L +adafruit_qtpy_esp32c3.menu.CPUFreq.80=80MHz (WiFi) +adafruit_qtpy_esp32c3.menu.CPUFreq.80.build.f_cpu=80000000L +adafruit_qtpy_esp32c3.menu.CPUFreq.40=40MHz +adafruit_qtpy_esp32c3.menu.CPUFreq.40.build.f_cpu=40000000L +adafruit_qtpy_esp32c3.menu.CPUFreq.20=20MHz +adafruit_qtpy_esp32c3.menu.CPUFreq.20.build.f_cpu=20000000L +adafruit_qtpy_esp32c3.menu.CPUFreq.10=10MHz +adafruit_qtpy_esp32c3.menu.CPUFreq.10.build.f_cpu=10000000L -adafruit_feather_esp32s3_tft.menu.FlashSize.4M=4MB (32Mb) -adafruit_feather_esp32s3_tft.menu.FlashSize.4M.build.flash_size=4MB +adafruit_qtpy_esp32c3.menu.FlashMode.qio=QIO +adafruit_qtpy_esp32c3.menu.FlashMode.qio.build.flash_mode=dio +adafruit_qtpy_esp32c3.menu.FlashMode.qio.build.boot=qio +adafruit_qtpy_esp32c3.menu.FlashMode.dio=DIO +adafruit_qtpy_esp32c3.menu.FlashMode.dio.build.flash_mode=dio +adafruit_qtpy_esp32c3.menu.FlashMode.dio.build.boot=dio +adafruit_qtpy_esp32c3.menu.FlashMode.qout=QOUT +adafruit_qtpy_esp32c3.menu.FlashMode.qout.build.flash_mode=dout +adafruit_qtpy_esp32c3.menu.FlashMode.qout.build.boot=qout +adafruit_qtpy_esp32c3.menu.FlashMode.dout=DOUT +adafruit_qtpy_esp32c3.menu.FlashMode.dout.build.flash_mode=dout +adafruit_qtpy_esp32c3.menu.FlashMode.dout.build.boot=dout -adafruit_feather_esp32s3_tft.menu.UploadSpeed.921600=921600 -adafruit_feather_esp32s3_tft.menu.UploadSpeed.921600.upload.speed=921600 -adafruit_feather_esp32s3_tft.menu.UploadSpeed.115200=115200 -adafruit_feather_esp32s3_tft.menu.UploadSpeed.115200.upload.speed=115200 -adafruit_feather_esp32s3_tft.menu.UploadSpeed.256000.windows=256000 -adafruit_feather_esp32s3_tft.menu.UploadSpeed.256000.upload.speed=256000 -adafruit_feather_esp32s3_tft.menu.UploadSpeed.230400.windows.upload.speed=256000 -adafruit_feather_esp32s3_tft.menu.UploadSpeed.230400=230400 -adafruit_feather_esp32s3_tft.menu.UploadSpeed.230400.upload.speed=230400 -adafruit_feather_esp32s3_tft.menu.UploadSpeed.460800.linux=460800 -adafruit_feather_esp32s3_tft.menu.UploadSpeed.460800.macosx=460800 -adafruit_feather_esp32s3_tft.menu.UploadSpeed.460800.upload.speed=460800 -adafruit_feather_esp32s3_tft.menu.UploadSpeed.512000.windows=512000 -adafruit_feather_esp32s3_tft.menu.UploadSpeed.512000.upload.speed=512000 +adafruit_qtpy_esp32c3.menu.FlashFreq.80=80MHz +adafruit_qtpy_esp32c3.menu.FlashFreq.80.build.flash_freq=80m +adafruit_qtpy_esp32c3.menu.FlashFreq.40=40MHz +adafruit_qtpy_esp32c3.menu.FlashFreq.40.build.flash_freq=40m -adafruit_feather_esp32s3_tft.menu.DebugLevel.none=None -adafruit_feather_esp32s3_tft.menu.DebugLevel.none.build.code_debug=0 -adafruit_feather_esp32s3_tft.menu.DebugLevel.error=Error -adafruit_feather_esp32s3_tft.menu.DebugLevel.error.build.code_debug=1 -adafruit_feather_esp32s3_tft.menu.DebugLevel.warn=Warn -adafruit_feather_esp32s3_tft.menu.DebugLevel.warn.build.code_debug=2 -adafruit_feather_esp32s3_tft.menu.DebugLevel.info=Info -adafruit_feather_esp32s3_tft.menu.DebugLevel.info.build.code_debug=3 -adafruit_feather_esp32s3_tft.menu.DebugLevel.debug=Debug -adafruit_feather_esp32s3_tft.menu.DebugLevel.debug.build.code_debug=4 -adafruit_feather_esp32s3_tft.menu.DebugLevel.verbose=Verbose -adafruit_feather_esp32s3_tft.menu.DebugLevel.verbose.build.code_debug=5 +adafruit_qtpy_esp32c3.menu.FlashSize.4M=4MB (32Mb) +adafruit_qtpy_esp32c3.menu.FlashSize.4M.build.flash_size=4MB -adafruit_feather_esp32s3_tft.menu.EraseFlash.none=Disabled -adafruit_feather_esp32s3_tft.menu.EraseFlash.none.upload.erase_cmd= -adafruit_feather_esp32s3_tft.menu.EraseFlash.all=Enabled -adafruit_feather_esp32s3_tft.menu.EraseFlash.all.upload.erase_cmd=-e +adafruit_qtpy_esp32c3.menu.UploadSpeed.921600=921600 +adafruit_qtpy_esp32c3.menu.UploadSpeed.921600.upload.speed=921600 +adafruit_qtpy_esp32c3.menu.UploadSpeed.115200=115200 +adafruit_qtpy_esp32c3.menu.UploadSpeed.115200.upload.speed=115200 +adafruit_qtpy_esp32c3.menu.UploadSpeed.256000.windows=256000 +adafruit_qtpy_esp32c3.menu.UploadSpeed.256000.upload.speed=256000 +adafruit_qtpy_esp32c3.menu.UploadSpeed.230400.windows.upload.speed=256000 +adafruit_qtpy_esp32c3.menu.UploadSpeed.230400=230400 +adafruit_qtpy_esp32c3.menu.UploadSpeed.230400.upload.speed=230400 +adafruit_qtpy_esp32c3.menu.UploadSpeed.460800.linux=460800 +adafruit_qtpy_esp32c3.menu.UploadSpeed.460800.macosx=460800 +adafruit_qtpy_esp32c3.menu.UploadSpeed.460800.upload.speed=460800 +adafruit_qtpy_esp32c3.menu.UploadSpeed.512000.windows=512000 +adafruit_qtpy_esp32c3.menu.UploadSpeed.512000.upload.speed=512000 -############################################################## -# Adafruit Feather ESP32-S3 Reverse TFT +adafruit_qtpy_esp32c3.menu.DebugLevel.none=None +adafruit_qtpy_esp32c3.menu.DebugLevel.none.build.code_debug=0 +adafruit_qtpy_esp32c3.menu.DebugLevel.error=Error +adafruit_qtpy_esp32c3.menu.DebugLevel.error.build.code_debug=1 +adafruit_qtpy_esp32c3.menu.DebugLevel.warn=Warn +adafruit_qtpy_esp32c3.menu.DebugLevel.warn.build.code_debug=2 +adafruit_qtpy_esp32c3.menu.DebugLevel.info=Info +adafruit_qtpy_esp32c3.menu.DebugLevel.info.build.code_debug=3 +adafruit_qtpy_esp32c3.menu.DebugLevel.debug=Debug +adafruit_qtpy_esp32c3.menu.DebugLevel.debug.build.code_debug=4 +adafruit_qtpy_esp32c3.menu.DebugLevel.verbose=Verbose +adafruit_qtpy_esp32c3.menu.DebugLevel.verbose.build.code_debug=5 -adafruit_feather_esp32s3_reversetft.name=Adafruit Feather ESP32-S3 Reverse TFT -adafruit_feather_esp32s3_reversetft.vid.0=0x239A -adafruit_feather_esp32s3_reversetft.pid.0=0x8123 -adafruit_feather_esp32s3_reversetft.vid.1=0x239A -adafruit_feather_esp32s3_reversetft.pid.1=0x0123 -adafruit_feather_esp32s3_reversetft.vid.2=0x239A -adafruit_feather_esp32s3_reversetft.pid.2=0x8124 +adafruit_qtpy_esp32c3.menu.EraseFlash.none=Disabled +adafruit_qtpy_esp32c3.menu.EraseFlash.none.upload.erase_cmd= +adafruit_qtpy_esp32c3.menu.EraseFlash.all=Enabled +adafruit_qtpy_esp32c3.menu.EraseFlash.all.upload.erase_cmd=-e -adafruit_feather_esp32s3_reversetft.bootloader.tool=esptool_py -adafruit_feather_esp32s3_reversetft.bootloader.tool.default=esptool_py +############################################################## +# Adafruit QT Py ESP32-S2 -adafruit_feather_esp32s3_reversetft.upload.tool=esptool_py -adafruit_feather_esp32s3_reversetft.upload.tool.default=esptool_py -adafruit_feather_esp32s3_reversetft.upload.tool.network=esp_ota +adafruit_qtpy_esp32s2.name=Adafruit QT Py ESP32-S2 +adafruit_qtpy_esp32s2.vid.0=0x239A +adafruit_qtpy_esp32s2.pid.0=0x8111 +adafruit_qtpy_esp32s2.vid.1=0x239A +adafruit_qtpy_esp32s2.pid.1=0x0111 +adafruit_qtpy_esp32s2.vid.2=0x239A +adafruit_qtpy_esp32s2.pid.2=0x8112 -adafruit_feather_esp32s3_reversetft.upload.maximum_size=1310720 -adafruit_feather_esp32s3_reversetft.upload.maximum_data_size=327680 -adafruit_feather_esp32s3_reversetft.upload.flags= -adafruit_feather_esp32s3_reversetft.upload.extra_flags= -adafruit_feather_esp32s3_reversetft.upload.use_1200bps_touch=true -adafruit_feather_esp32s3_reversetft.upload.wait_for_upload_port=true +adafruit_qtpy_esp32s2.bootloader.tool=esptool_py +adafruit_qtpy_esp32s2.bootloader.tool.default=esptool_py -adafruit_feather_esp32s3_reversetft.serial.disableDTR=false -adafruit_feather_esp32s3_reversetft.serial.disableRTS=false +adafruit_qtpy_esp32s2.upload.tool=esptool_py +adafruit_qtpy_esp32s2.upload.tool.default=esptool_py +adafruit_qtpy_esp32s2.upload.tool.network=esp_ota -adafruit_feather_esp32s3_reversetft.build.tarch=xtensa -adafruit_feather_esp32s3_reversetft.build.bootloader_addr=0x0 -adafruit_feather_esp32s3_reversetft.build.target=esp32s3 -adafruit_feather_esp32s3_reversetft.build.mcu=esp32s3 -adafruit_feather_esp32s3_reversetft.build.core=esp32 -adafruit_feather_esp32s3_reversetft.build.variant=adafruit_feather_esp32s3_reversetft -adafruit_feather_esp32s3_reversetft.build.board=ADAFRUIT_FEATHER_ESP32S3_REVTFT +adafruit_qtpy_esp32s2.upload.maximum_size=1310720 +adafruit_qtpy_esp32s2.upload.maximum_data_size=327680 +adafruit_qtpy_esp32s2.upload.flags= +adafruit_qtpy_esp32s2.upload.extra_flags= +adafruit_qtpy_esp32s2.upload.use_1200bps_touch=true +adafruit_qtpy_esp32s2.upload.wait_for_upload_port=true -adafruit_feather_esp32s3_reversetft.build.usb_mode=0 -adafruit_feather_esp32s3_reversetft.build.cdc_on_boot=1 -adafruit_feather_esp32s3_reversetft.build.msc_on_boot=0 -adafruit_feather_esp32s3_reversetft.build.dfu_on_boot=0 -adafruit_feather_esp32s3_reversetft.build.f_cpu=240000000L -adafruit_feather_esp32s3_reversetft.build.flash_size=4MB -adafruit_feather_esp32s3_reversetft.build.flash_freq=80m -adafruit_feather_esp32s3_reversetft.build.flash_mode=dio -adafruit_feather_esp32s3_reversetft.build.boot=qio -adafruit_feather_esp32s3_reversetft.build.partitions=default -adafruit_feather_esp32s3_reversetft.build.defines= -adafruit_feather_esp32s3_reversetft.build.loop_core= -adafruit_feather_esp32s3_reversetft.build.event_core= -adafruit_feather_esp32s3_reversetft.build.flash_type=qio -adafruit_feather_esp32s3_reversetft.build.psram_type=qspi -adafruit_feather_esp32s3_reversetft.build.memory_type={build.flash_type}_{build.psram_type} +adafruit_qtpy_esp32s2.serial.disableDTR=false +adafruit_qtpy_esp32s2.serial.disableRTS=false -adafruit_feather_esp32s3_reversetft.menu.LoopCore.1=Core 1 -adafruit_feather_esp32s3_reversetft.menu.LoopCore.1.build.loop_core=-DARDUINO_RUNNING_CORE=1 -adafruit_feather_esp32s3_reversetft.menu.LoopCore.0=Core 0 -adafruit_feather_esp32s3_reversetft.menu.LoopCore.0.build.loop_core=-DARDUINO_RUNNING_CORE=0 +adafruit_qtpy_esp32s2.build.tarch=xtensa +adafruit_qtpy_esp32s2.build.bootloader_addr=0x1000 +adafruit_qtpy_esp32s2.build.target=esp32s2 +adafruit_qtpy_esp32s2.build.mcu=esp32s2 +adafruit_qtpy_esp32s2.build.core=esp32 +adafruit_qtpy_esp32s2.build.variant=adafruit_qtpy_esp32s2 +adafruit_qtpy_esp32s2.build.board=ADAFRUIT_QTPY_ESP32S2 -adafruit_feather_esp32s3_reversetft.menu.EventsCore.1=Core 1 -adafruit_feather_esp32s3_reversetft.menu.EventsCore.1.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=1 -adafruit_feather_esp32s3_reversetft.menu.EventsCore.0=Core 0 -adafruit_feather_esp32s3_reversetft.menu.EventsCore.0.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=0 +adafruit_qtpy_esp32s2.build.cdc_on_boot=1 +adafruit_qtpy_esp32s2.build.msc_on_boot=0 +adafruit_qtpy_esp32s2.build.dfu_on_boot=0 +adafruit_qtpy_esp32s2.build.f_cpu=240000000L +adafruit_qtpy_esp32s2.build.flash_size=4MB +adafruit_qtpy_esp32s2.build.flash_freq=80m +adafruit_qtpy_esp32s2.build.flash_mode=dio +adafruit_qtpy_esp32s2.build.boot=qio +adafruit_qtpy_esp32s2.build.partitions=default +adafruit_qtpy_esp32s2.build.defines= -adafruit_feather_esp32s3_reversetft.menu.USBMode.default=USB-OTG (TinyUSB) -adafruit_feather_esp32s3_reversetft.menu.USBMode.default.build.usb_mode=0 -adafruit_feather_esp32s3_reversetft.menu.USBMode.hwcdc=Hardware CDC and JTAG -adafruit_feather_esp32s3_reversetft.menu.USBMode.hwcdc.build.usb_mode=1 +adafruit_qtpy_esp32s2.menu.CDCOnBoot.cdc=Enabled +adafruit_qtpy_esp32s2.menu.CDCOnBoot.cdc.build.cdc_on_boot=1 +adafruit_qtpy_esp32s2.menu.CDCOnBoot.default=Disabled +adafruit_qtpy_esp32s2.menu.CDCOnBoot.default.build.cdc_on_boot=0 -adafruit_feather_esp32s3_reversetft.menu.CDCOnBoot.cdc=Enabled -adafruit_feather_esp32s3_reversetft.menu.CDCOnBoot.cdc.build.cdc_on_boot=1 -adafruit_feather_esp32s3_reversetft.menu.CDCOnBoot.default=Disabled -adafruit_feather_esp32s3_reversetft.menu.CDCOnBoot.default.build.cdc_on_boot=0 +adafruit_qtpy_esp32s2.menu.MSCOnBoot.default=Disabled +adafruit_qtpy_esp32s2.menu.MSCOnBoot.default.build.msc_on_boot=0 +adafruit_qtpy_esp32s2.menu.MSCOnBoot.msc=Enabled +adafruit_qtpy_esp32s2.menu.MSCOnBoot.msc.build.msc_on_boot=1 -adafruit_feather_esp32s3_reversetft.menu.MSCOnBoot.default=Disabled -adafruit_feather_esp32s3_reversetft.menu.MSCOnBoot.default.build.msc_on_boot=0 -adafruit_feather_esp32s3_reversetft.menu.MSCOnBoot.msc=Enabled (Requires USB-OTG Mode) -adafruit_feather_esp32s3_reversetft.menu.MSCOnBoot.msc.build.msc_on_boot=1 +adafruit_qtpy_esp32s2.menu.DFUOnBoot.default=Disabled +adafruit_qtpy_esp32s2.menu.DFUOnBoot.default.build.dfu_on_boot=0 +adafruit_qtpy_esp32s2.menu.DFUOnBoot.dfu=Enabled +adafruit_qtpy_esp32s2.menu.DFUOnBoot.dfu.build.dfu_on_boot=1 -adafruit_feather_esp32s3_reversetft.menu.DFUOnBoot.default=Disabled -adafruit_feather_esp32s3_reversetft.menu.DFUOnBoot.default.build.dfu_on_boot=0 -adafruit_feather_esp32s3_reversetft.menu.DFUOnBoot.dfu=Enabled (Requires USB-OTG Mode) -adafruit_feather_esp32s3_reversetft.menu.DFUOnBoot.dfu.build.dfu_on_boot=1 +adafruit_qtpy_esp32s2.menu.UploadMode.cdc=Internal USB +adafruit_qtpy_esp32s2.menu.UploadMode.cdc.upload.use_1200bps_touch=true +adafruit_qtpy_esp32s2.menu.UploadMode.cdc.upload.wait_for_upload_port=true +adafruit_qtpy_esp32s2.menu.UploadMode.default=UART0 +adafruit_qtpy_esp32s2.menu.UploadMode.default.upload.use_1200bps_touch=false +adafruit_qtpy_esp32s2.menu.UploadMode.default.upload.wait_for_upload_port=false -adafruit_feather_esp32s3_reversetft.menu.UploadMode.cdc=USB-OTG CDC (TinyUSB) -adafruit_feather_esp32s3_reversetft.menu.UploadMode.cdc.upload.use_1200bps_touch=true -adafruit_feather_esp32s3_reversetft.menu.UploadMode.cdc.upload.wait_for_upload_port=true -adafruit_feather_esp32s3_reversetft.menu.UploadMode.default=UART0 / Hardware CDC -adafruit_feather_esp32s3_reversetft.menu.UploadMode.default.upload.use_1200bps_touch=false -adafruit_feather_esp32s3_reversetft.menu.UploadMode.default.upload.wait_for_upload_port=false +adafruit_qtpy_esp32s2.menu.PSRAM.enabled=Enabled +adafruit_qtpy_esp32s2.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM +adafruit_qtpy_esp32s2.menu.PSRAM.disabled=Disabled +adafruit_qtpy_esp32s2.menu.PSRAM.disabled.build.defines= -adafruit_feather_esp32s3_reversetft.menu.PSRAM.enabled=QSPI PSRAM -adafruit_feather_esp32s3_reversetft.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM -adafruit_feather_esp32s3_reversetft.menu.PSRAM.enabled.build.psram_type=qspi -adafruit_feather_esp32s3_reversetft.menu.PSRAM.disabled=Disabled -adafruit_feather_esp32s3_reversetft.menu.PSRAM.disabled.build.defines= -adafruit_feather_esp32s3_reversetft.menu.PSRAM.disabled.build.psram_type=qspi -adafruit_feather_esp32s3_reversetft.menu.PSRAM.opi=OPI PSRAM -adafruit_feather_esp32s3_reversetft.menu.PSRAM.opi.build.defines=-DBOARD_HAS_PSRAM -adafruit_feather_esp32s3_reversetft.menu.PSRAM.opi.build.psram_type=opi +adafruit_qtpy_esp32s2.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FATFS) +adafruit_qtpy_esp32s2.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 +adafruit_qtpy_esp32s2.menu.PartitionScheme.tinyuf2.build.custom_partitions=partitions-4MB-tinyuf2 +adafruit_qtpy_esp32s2.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 +adafruit_qtpy_esp32s2.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" +adafruit_qtpy_esp32s2.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) +adafruit_qtpy_esp32s2.menu.PartitionScheme.default.build.partitions=default +adafruit_qtpy_esp32s2.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) +adafruit_qtpy_esp32s2.menu.PartitionScheme.defaultffat.build.partitions=default_ffat +adafruit_qtpy_esp32s2.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS) +adafruit_qtpy_esp32s2.menu.PartitionScheme.minimal.build.partitions=minimal +adafruit_qtpy_esp32s2.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS) +adafruit_qtpy_esp32s2.menu.PartitionScheme.no_ota.build.partitions=no_ota +adafruit_qtpy_esp32s2.menu.PartitionScheme.no_ota.upload.maximum_size=2097152 +adafruit_qtpy_esp32s2.menu.PartitionScheme.noota_3g=No OTA (1MB APP/3MB SPIFFS) +adafruit_qtpy_esp32s2.menu.PartitionScheme.noota_3g.build.partitions=noota_3g +adafruit_qtpy_esp32s2.menu.PartitionScheme.noota_3g.upload.maximum_size=1048576 +adafruit_qtpy_esp32s2.menu.PartitionScheme.noota_ffat=No OTA (2MB APP/2MB FATFS) +adafruit_qtpy_esp32s2.menu.PartitionScheme.noota_ffat.build.partitions=noota_ffat +adafruit_qtpy_esp32s2.menu.PartitionScheme.noota_ffat.upload.maximum_size=2097152 +adafruit_qtpy_esp32s2.menu.PartitionScheme.noota_3gffat=No OTA (1MB APP/3MB FATFS) +adafruit_qtpy_esp32s2.menu.PartitionScheme.noota_3gffat.build.partitions=noota_3gffat +adafruit_qtpy_esp32s2.menu.PartitionScheme.noota_3gffat.upload.maximum_size=1048576 +adafruit_qtpy_esp32s2.menu.PartitionScheme.huge_app=Huge APP (3MB No OTA/1MB SPIFFS) +adafruit_qtpy_esp32s2.menu.PartitionScheme.huge_app.build.partitions=huge_app +adafruit_qtpy_esp32s2.menu.PartitionScheme.huge_app.upload.maximum_size=3145728 +adafruit_qtpy_esp32s2.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS) +adafruit_qtpy_esp32s2.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs +adafruit_qtpy_esp32s2.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080 -adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FFAT) -adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 -adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.tinyuf2.build.custom_partitions=partitions-4MB-tinyuf2 -adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 -adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" -adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) -adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.default.build.partitions=default -adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) -adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.defaultffat.build.partitions=default_ffat -adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS) -adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.minimal.build.partitions=minimal -adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS) -adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.no_ota.build.partitions=no_ota -adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.no_ota.upload.maximum_size=2097152 -adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.noota_3g=No OTA (1MB APP/3MB SPIFFS) -adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.noota_3g.build.partitions=noota_3g -adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.noota_3g.upload.maximum_size=1048576 -adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.noota_ffat=No OTA (2MB APP/2MB FATFS) -adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.noota_ffat.build.partitions=noota_ffat -adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.noota_ffat.upload.maximum_size=2097152 -adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.noota_3gffat=No OTA (1MB APP/3MB FATFS) -adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.noota_3gffat.build.partitions=noota_3gffat -adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.noota_3gffat.upload.maximum_size=1048576 -adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.huge_app=Huge APP (3MB No OTA/1MB SPIFFS) -adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.huge_app.build.partitions=huge_app -adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.huge_app.upload.maximum_size=3145728 -adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS) -adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs -adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080 +adafruit_qtpy_esp32s2.menu.CPUFreq.240=240MHz (WiFi) +adafruit_qtpy_esp32s2.menu.CPUFreq.240.build.f_cpu=240000000L +adafruit_qtpy_esp32s2.menu.CPUFreq.160=160MHz (WiFi) +adafruit_qtpy_esp32s2.menu.CPUFreq.160.build.f_cpu=160000000L +adafruit_qtpy_esp32s2.menu.CPUFreq.80=80MHz (WiFi) +adafruit_qtpy_esp32s2.menu.CPUFreq.80.build.f_cpu=80000000L +adafruit_qtpy_esp32s2.menu.CPUFreq.40=40MHz +adafruit_qtpy_esp32s2.menu.CPUFreq.40.build.f_cpu=40000000L +adafruit_qtpy_esp32s2.menu.CPUFreq.20=20MHz +adafruit_qtpy_esp32s2.menu.CPUFreq.20.build.f_cpu=20000000L +adafruit_qtpy_esp32s2.menu.CPUFreq.10=10MHz +adafruit_qtpy_esp32s2.menu.CPUFreq.10.build.f_cpu=10000000L -adafruit_feather_esp32s3_reversetft.menu.CPUFreq.240=240MHz (WiFi) -adafruit_feather_esp32s3_reversetft.menu.CPUFreq.240.build.f_cpu=240000000L -adafruit_feather_esp32s3_reversetft.menu.CPUFreq.160=160MHz (WiFi) -adafruit_feather_esp32s3_reversetft.menu.CPUFreq.160.build.f_cpu=160000000L -adafruit_feather_esp32s3_reversetft.menu.CPUFreq.80=80MHz (WiFi) -adafruit_feather_esp32s3_reversetft.menu.CPUFreq.80.build.f_cpu=80000000L -adafruit_feather_esp32s3_reversetft.menu.CPUFreq.40=40MHz -adafruit_feather_esp32s3_reversetft.menu.CPUFreq.40.build.f_cpu=40000000L -adafruit_feather_esp32s3_reversetft.menu.CPUFreq.20=20MHz -adafruit_feather_esp32s3_reversetft.menu.CPUFreq.20.build.f_cpu=20000000L -adafruit_feather_esp32s3_reversetft.menu.CPUFreq.10=10MHz -adafruit_feather_esp32s3_reversetft.menu.CPUFreq.10.build.f_cpu=10000000L +adafruit_qtpy_esp32s2.menu.FlashMode.qio=QIO +adafruit_qtpy_esp32s2.menu.FlashMode.qio.build.flash_mode=dio +adafruit_qtpy_esp32s2.menu.FlashMode.qio.build.boot=qio +adafruit_qtpy_esp32s2.menu.FlashMode.dio=DIO +adafruit_qtpy_esp32s2.menu.FlashMode.dio.build.flash_mode=dio +adafruit_qtpy_esp32s2.menu.FlashMode.dio.build.boot=dio +adafruit_qtpy_esp32s2.menu.FlashMode.qout=QOUT +adafruit_qtpy_esp32s2.menu.FlashMode.qout.build.flash_mode=dout +adafruit_qtpy_esp32s2.menu.FlashMode.qout.build.boot=qout +adafruit_qtpy_esp32s2.menu.FlashMode.dout=DOUT +adafruit_qtpy_esp32s2.menu.FlashMode.dout.build.flash_mode=dout +adafruit_qtpy_esp32s2.menu.FlashMode.dout.build.boot=dout -adafruit_feather_esp32s3_reversetft.menu.FlashMode.qio=QIO 80MHz -adafruit_feather_esp32s3_reversetft.menu.FlashMode.qio.build.flash_mode=dio -adafruit_feather_esp32s3_reversetft.menu.FlashMode.qio.build.boot=qio -adafruit_feather_esp32s3_reversetft.menu.FlashMode.qio.build.boot_freq=80m -adafruit_feather_esp32s3_reversetft.menu.FlashMode.qio.build.flash_freq=80m -adafruit_feather_esp32s3_reversetft.menu.FlashMode.qio120=QIO 120MHz -adafruit_feather_esp32s3_reversetft.menu.FlashMode.qio120.build.flash_mode=dio -adafruit_feather_esp32s3_reversetft.menu.FlashMode.qio120.build.boot=qio -adafruit_feather_esp32s3_reversetft.menu.FlashMode.qio120.build.boot_freq=120m -adafruit_feather_esp32s3_reversetft.menu.FlashMode.qio120.build.flash_freq=80m -adafruit_feather_esp32s3_reversetft.menu.FlashMode.dio=DIO 80MHz -adafruit_feather_esp32s3_reversetft.menu.FlashMode.dio.build.flash_mode=dio -adafruit_feather_esp32s3_reversetft.menu.FlashMode.dio.build.boot=dio -adafruit_feather_esp32s3_reversetft.menu.FlashMode.dio.build.boot_freq=80m -adafruit_feather_esp32s3_reversetft.menu.FlashMode.dio.build.flash_freq=80m -adafruit_feather_esp32s3_reversetft.menu.FlashMode.opi=OPI 80MHz -adafruit_feather_esp32s3_reversetft.menu.FlashMode.opi.build.flash_mode=dout -adafruit_feather_esp32s3_reversetft.menu.FlashMode.opi.build.boot=opi -adafruit_feather_esp32s3_reversetft.menu.FlashMode.opi.build.boot_freq=80m -adafruit_feather_esp32s3_reversetft.menu.FlashMode.opi.build.flash_freq=80m +adafruit_qtpy_esp32s2.menu.FlashFreq.80=80MHz +adafruit_qtpy_esp32s2.menu.FlashFreq.80.build.flash_freq=80m +adafruit_qtpy_esp32s2.menu.FlashFreq.40=40MHz +adafruit_qtpy_esp32s2.menu.FlashFreq.40.build.flash_freq=40m -adafruit_feather_esp32s3_reversetft.menu.FlashSize.4M=4MB (32Mb) -adafruit_feather_esp32s3_reversetft.menu.FlashSize.4M.build.flash_size=4MB +adafruit_qtpy_esp32s2.menu.FlashSize.4M=4MB (32Mb) +adafruit_qtpy_esp32s2.menu.FlashSize.4M.build.flash_size=4MB -adafruit_feather_esp32s3_reversetft.menu.UploadSpeed.921600=921600 -adafruit_feather_esp32s3_reversetft.menu.UploadSpeed.921600.upload.speed=921600 -adafruit_feather_esp32s3_reversetft.menu.UploadSpeed.115200=115200 -adafruit_feather_esp32s3_reversetft.menu.UploadSpeed.115200.upload.speed=115200 -adafruit_feather_esp32s3_reversetft.menu.UploadSpeed.256000.windows=256000 -adafruit_feather_esp32s3_reversetft.menu.UploadSpeed.256000.upload.speed=256000 -adafruit_feather_esp32s3_reversetft.menu.UploadSpeed.230400.windows.upload.speed=256000 -adafruit_feather_esp32s3_reversetft.menu.UploadSpeed.230400=230400 -adafruit_feather_esp32s3_reversetft.menu.UploadSpeed.230400.upload.speed=230400 -adafruit_feather_esp32s3_reversetft.menu.UploadSpeed.460800.linux=460800 -adafruit_feather_esp32s3_reversetft.menu.UploadSpeed.460800.macosx=460800 -adafruit_feather_esp32s3_reversetft.menu.UploadSpeed.460800.upload.speed=460800 -adafruit_feather_esp32s3_reversetft.menu.UploadSpeed.512000.windows=512000 -adafruit_feather_esp32s3_reversetft.menu.UploadSpeed.512000.upload.speed=512000 +adafruit_qtpy_esp32s2.menu.UploadSpeed.921600=921600 +adafruit_qtpy_esp32s2.menu.UploadSpeed.921600.upload.speed=921600 +adafruit_qtpy_esp32s2.menu.UploadSpeed.115200=115200 +adafruit_qtpy_esp32s2.menu.UploadSpeed.115200.upload.speed=115200 +adafruit_qtpy_esp32s2.menu.UploadSpeed.256000.windows=256000 +adafruit_qtpy_esp32s2.menu.UploadSpeed.256000.upload.speed=256000 +adafruit_qtpy_esp32s2.menu.UploadSpeed.230400.windows.upload.speed=256000 +adafruit_qtpy_esp32s2.menu.UploadSpeed.230400=230400 +adafruit_qtpy_esp32s2.menu.UploadSpeed.230400.upload.speed=230400 +adafruit_qtpy_esp32s2.menu.UploadSpeed.460800.linux=460800 +adafruit_qtpy_esp32s2.menu.UploadSpeed.460800.macosx=460800 +adafruit_qtpy_esp32s2.menu.UploadSpeed.460800.upload.speed=460800 +adafruit_qtpy_esp32s2.menu.UploadSpeed.512000.windows=512000 +adafruit_qtpy_esp32s2.menu.UploadSpeed.512000.upload.speed=512000 -adafruit_feather_esp32s3_reversetft.menu.DebugLevel.none=None -adafruit_feather_esp32s3_reversetft.menu.DebugLevel.none.build.code_debug=0 -adafruit_feather_esp32s3_reversetft.menu.DebugLevel.error=Error -adafruit_feather_esp32s3_reversetft.menu.DebugLevel.error.build.code_debug=1 -adafruit_feather_esp32s3_reversetft.menu.DebugLevel.warn=Warn -adafruit_feather_esp32s3_reversetft.menu.DebugLevel.warn.build.code_debug=2 -adafruit_feather_esp32s3_reversetft.menu.DebugLevel.info=Info -adafruit_feather_esp32s3_reversetft.menu.DebugLevel.info.build.code_debug=3 -adafruit_feather_esp32s3_reversetft.menu.DebugLevel.debug=Debug -adafruit_feather_esp32s3_reversetft.menu.DebugLevel.debug.build.code_debug=4 -adafruit_feather_esp32s3_reversetft.menu.DebugLevel.verbose=Verbose -adafruit_feather_esp32s3_reversetft.menu.DebugLevel.verbose.build.code_debug=5 +adafruit_qtpy_esp32s2.menu.DebugLevel.none=None +adafruit_qtpy_esp32s2.menu.DebugLevel.none.build.code_debug=0 +adafruit_qtpy_esp32s2.menu.DebugLevel.error=Error +adafruit_qtpy_esp32s2.menu.DebugLevel.error.build.code_debug=1 +adafruit_qtpy_esp32s2.menu.DebugLevel.warn=Warn +adafruit_qtpy_esp32s2.menu.DebugLevel.warn.build.code_debug=2 +adafruit_qtpy_esp32s2.menu.DebugLevel.info=Info +adafruit_qtpy_esp32s2.menu.DebugLevel.info.build.code_debug=3 +adafruit_qtpy_esp32s2.menu.DebugLevel.debug=Debug +adafruit_qtpy_esp32s2.menu.DebugLevel.debug.build.code_debug=4 +adafruit_qtpy_esp32s2.menu.DebugLevel.verbose=Verbose +adafruit_qtpy_esp32s2.menu.DebugLevel.verbose.build.code_debug=5 -adafruit_feather_esp32s3_reversetft.menu.EraseFlash.none=Disabled -adafruit_feather_esp32s3_reversetft.menu.EraseFlash.none.upload.erase_cmd= -adafruit_feather_esp32s3_reversetft.menu.EraseFlash.all=Enabled -adafruit_feather_esp32s3_reversetft.menu.EraseFlash.all.upload.erase_cmd=-e +adafruit_qtpy_esp32s2.menu.EraseFlash.none=Disabled +adafruit_qtpy_esp32s2.menu.EraseFlash.none.upload.erase_cmd= +adafruit_qtpy_esp32s2.menu.EraseFlash.all=Enabled +adafruit_qtpy_esp32s2.menu.EraseFlash.all.upload.erase_cmd=-e ############################################################## # Adafruit QT Py ESP32-S3 No PSRAM @@ -10640,7 +10640,7 @@ adafruit_qtpy_esp32s3_nopsram.menu.UploadMode.default=UART0 / Hardware CDC adafruit_qtpy_esp32s3_nopsram.menu.UploadMode.default.upload.use_1200bps_touch=false adafruit_qtpy_esp32s3_nopsram.menu.UploadMode.default.upload.wait_for_upload_port=false -adafruit_qtpy_esp32s3_nopsram.menu.PartitionScheme.tinyuf2=TinyUF2 8MB (2MB APP/3.7MB FFAT) +adafruit_qtpy_esp32s3_nopsram.menu.PartitionScheme.tinyuf2=TinyUF2 8MB (2MB APP/3.7MB FATFS) adafruit_qtpy_esp32s3_nopsram.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 adafruit_qtpy_esp32s3_nopsram.menu.PartitionScheme.tinyuf2.build.custom_partitions=partitions-8MB-tinyuf2 adafruit_qtpy_esp32s3_nopsram.menu.PartitionScheme.tinyuf2.upload.maximum_size=2097152 @@ -10719,6 +10719,206 @@ adafruit_qtpy_esp32s3_nopsram.menu.EraseFlash.none.upload.erase_cmd= adafruit_qtpy_esp32s3_nopsram.menu.EraseFlash.all=Enabled adafruit_qtpy_esp32s3_nopsram.menu.EraseFlash.all.upload.erase_cmd=-e +############################################################## +# Adafruit QT Py ESP32-S3 (4M Flash 2M PSRAM) + +adafruit_qtpy_esp32s3_n4r2.name=Adafruit QT Py ESP32-S3 (4M Flash 2M PSRAM) +adafruit_qtpy_esp32s3_n4r2.vid.0=0x239A +adafruit_qtpy_esp32s3_n4r2.pid.0=0x8143 +adafruit_qtpy_esp32s3_n4r2.vid.1=0x239A +adafruit_qtpy_esp32s3_n4r2.pid.1=0x0143 +adafruit_qtpy_esp32s3_n4r2.vid.2=0x239A +adafruit_qtpy_esp32s3_n4r2.pid.2=0x8144 + +adafruit_qtpy_esp32s3_n4r2.bootloader.tool=esptool_py +adafruit_qtpy_esp32s3_n4r2.bootloader.tool.default=esptool_py + +adafruit_qtpy_esp32s3_n4r2.upload.tool=esptool_py +adafruit_qtpy_esp32s3_n4r2.upload.tool.default=esptool_py +adafruit_qtpy_esp32s3_n4r2.upload.tool.network=esp_ota + +adafruit_qtpy_esp32s3_n4r2.upload.maximum_size=1310720 +adafruit_qtpy_esp32s3_n4r2.upload.maximum_data_size=327680 +adafruit_qtpy_esp32s3_n4r2.upload.flags= +adafruit_qtpy_esp32s3_n4r2.upload.extra_flags= +adafruit_qtpy_esp32s3_n4r2.upload.use_1200bps_touch=true +adafruit_qtpy_esp32s3_n4r2.upload.wait_for_upload_port=true + +adafruit_qtpy_esp32s3_n4r2.serial.disableDTR=false +adafruit_qtpy_esp32s3_n4r2.serial.disableRTS=false + +adafruit_qtpy_esp32s3_n4r2.build.tarch=xtensa +adafruit_qtpy_esp32s3_n4r2.build.bootloader_addr=0x0 +adafruit_qtpy_esp32s3_n4r2.build.target=esp32s3 +adafruit_qtpy_esp32s3_n4r2.build.mcu=esp32s3 +adafruit_qtpy_esp32s3_n4r2.build.core=esp32 +adafruit_qtpy_esp32s3_n4r2.build.variant=adafruit_qtpy_esp32s3_n4r2 +adafruit_qtpy_esp32s3_n4r2.build.board=ADAFRUIT_QTPY_ESP32S3_N4R2 + +adafruit_qtpy_esp32s3_n4r2.build.usb_mode=0 +adafruit_qtpy_esp32s3_n4r2.build.cdc_on_boot=1 +adafruit_qtpy_esp32s3_n4r2.build.msc_on_boot=0 +adafruit_qtpy_esp32s3_n4r2.build.dfu_on_boot=0 +adafruit_qtpy_esp32s3_n4r2.build.f_cpu=240000000L +adafruit_qtpy_esp32s3_n4r2.build.flash_size=4MB +adafruit_qtpy_esp32s3_n4r2.build.flash_freq=80m +adafruit_qtpy_esp32s3_n4r2.build.flash_mode=dio +adafruit_qtpy_esp32s3_n4r2.build.boot=qio +adafruit_qtpy_esp32s3_n4r2.build.partitions=default +adafruit_qtpy_esp32s3_n4r2.build.defines= +adafruit_qtpy_esp32s3_n4r2.build.loop_core= +adafruit_qtpy_esp32s3_n4r2.build.event_core= +adafruit_qtpy_esp32s3_n4r2.build.flash_type=qio +adafruit_qtpy_esp32s3_n4r2.build.psram_type=qspi +adafruit_qtpy_esp32s3_n4r2.build.memory_type={build.flash_type}_{build.psram_type} + +adafruit_qtpy_esp32s3_n4r2.menu.LoopCore.1=Core 1 +adafruit_qtpy_esp32s3_n4r2.menu.LoopCore.1.build.loop_core=-DARDUINO_RUNNING_CORE=1 +adafruit_qtpy_esp32s3_n4r2.menu.LoopCore.0=Core 0 +adafruit_qtpy_esp32s3_n4r2.menu.LoopCore.0.build.loop_core=-DARDUINO_RUNNING_CORE=0 + +adafruit_qtpy_esp32s3_n4r2.menu.EventsCore.1=Core 1 +adafruit_qtpy_esp32s3_n4r2.menu.EventsCore.1.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=1 +adafruit_qtpy_esp32s3_n4r2.menu.EventsCore.0=Core 0 +adafruit_qtpy_esp32s3_n4r2.menu.EventsCore.0.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=0 + +adafruit_qtpy_esp32s3_n4r2.menu.USBMode.default=USB-OTG (TinyUSB) +adafruit_qtpy_esp32s3_n4r2.menu.USBMode.default.build.usb_mode=0 +adafruit_qtpy_esp32s3_n4r2.menu.USBMode.hwcdc=Hardware CDC and JTAG +adafruit_qtpy_esp32s3_n4r2.menu.USBMode.hwcdc.build.usb_mode=1 + +adafruit_qtpy_esp32s3_n4r2.menu.CDCOnBoot.cdc=Enabled +adafruit_qtpy_esp32s3_n4r2.menu.CDCOnBoot.cdc.build.cdc_on_boot=1 +adafruit_qtpy_esp32s3_n4r2.menu.CDCOnBoot.default=Disabled +adafruit_qtpy_esp32s3_n4r2.menu.CDCOnBoot.default.build.cdc_on_boot=0 + +adafruit_qtpy_esp32s3_n4r2.menu.MSCOnBoot.default=Disabled +adafruit_qtpy_esp32s3_n4r2.menu.MSCOnBoot.default.build.msc_on_boot=0 +adafruit_qtpy_esp32s3_n4r2.menu.MSCOnBoot.msc=Enabled (Requires USB-OTG Mode) +adafruit_qtpy_esp32s3_n4r2.menu.MSCOnBoot.msc.build.msc_on_boot=1 + +adafruit_qtpy_esp32s3_n4r2.menu.DFUOnBoot.default=Disabled +adafruit_qtpy_esp32s3_n4r2.menu.DFUOnBoot.default.build.dfu_on_boot=0 +adafruit_qtpy_esp32s3_n4r2.menu.DFUOnBoot.dfu=Enabled (Requires USB-OTG Mode) +adafruit_qtpy_esp32s3_n4r2.menu.DFUOnBoot.dfu.build.dfu_on_boot=1 + +adafruit_qtpy_esp32s3_n4r2.menu.UploadMode.cdc=USB-OTG CDC (TinyUSB) +adafruit_qtpy_esp32s3_n4r2.menu.UploadMode.cdc.upload.use_1200bps_touch=true +adafruit_qtpy_esp32s3_n4r2.menu.UploadMode.cdc.upload.wait_for_upload_port=true +adafruit_qtpy_esp32s3_n4r2.menu.UploadMode.default=UART0 / Hardware CDC +adafruit_qtpy_esp32s3_n4r2.menu.UploadMode.default.upload.use_1200bps_touch=false +adafruit_qtpy_esp32s3_n4r2.menu.UploadMode.default.upload.wait_for_upload_port=false + +adafruit_qtpy_esp32s3_n4r2.menu.PSRAM.enabled=QSPI PSRAM +adafruit_qtpy_esp32s3_n4r2.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM +adafruit_qtpy_esp32s3_n4r2.menu.PSRAM.enabled.build.psram_type=qspi +adafruit_qtpy_esp32s3_n4r2.menu.PSRAM.disabled=Disabled +adafruit_qtpy_esp32s3_n4r2.menu.PSRAM.disabled.build.defines= +adafruit_qtpy_esp32s3_n4r2.menu.PSRAM.disabled.build.psram_type=qspi +adafruit_qtpy_esp32s3_n4r2.menu.PSRAM.opi=OPI PSRAM +adafruit_qtpy_esp32s3_n4r2.menu.PSRAM.opi.build.defines=-DBOARD_HAS_PSRAM +adafruit_qtpy_esp32s3_n4r2.menu.PSRAM.opi.build.psram_type=opi + +adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FATFS) +adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 +adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.tinyuf2.build.custom_partitions=partitions-4MB-tinyuf2 +adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 +adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" +adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) +adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.default.build.partitions=default +adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) +adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.defaultffat.build.partitions=default_ffat +adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS) +adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.minimal.build.partitions=minimal +adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS) +adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.no_ota.build.partitions=no_ota +adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.no_ota.upload.maximum_size=2097152 +adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.noota_3g=No OTA (1MB APP/3MB SPIFFS) +adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.noota_3g.build.partitions=noota_3g +adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.noota_3g.upload.maximum_size=1048576 +adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.noota_ffat=No OTA (2MB APP/2MB FATFS) +adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.noota_ffat.build.partitions=noota_ffat +adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.noota_ffat.upload.maximum_size=2097152 +adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.noota_3gffat=No OTA (1MB APP/3MB FATFS) +adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.noota_3gffat.build.partitions=noota_3gffat +adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.noota_3gffat.upload.maximum_size=1048576 +adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.huge_app=Huge APP (3MB No OTA/1MB SPIFFS) +adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.huge_app.build.partitions=huge_app +adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.huge_app.upload.maximum_size=3145728 +adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS) +adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs +adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080 + +adafruit_qtpy_esp32s3_n4r2.menu.CPUFreq.240=240MHz (WiFi) +adafruit_qtpy_esp32s3_n4r2.menu.CPUFreq.240.build.f_cpu=240000000L +adafruit_qtpy_esp32s3_n4r2.menu.CPUFreq.160=160MHz (WiFi) +adafruit_qtpy_esp32s3_n4r2.menu.CPUFreq.160.build.f_cpu=160000000L +adafruit_qtpy_esp32s3_n4r2.menu.CPUFreq.80=80MHz (WiFi) +adafruit_qtpy_esp32s3_n4r2.menu.CPUFreq.80.build.f_cpu=80000000L +adafruit_qtpy_esp32s3_n4r2.menu.CPUFreq.40=40MHz +adafruit_qtpy_esp32s3_n4r2.menu.CPUFreq.40.build.f_cpu=40000000L +adafruit_qtpy_esp32s3_n4r2.menu.CPUFreq.20=20MHz +adafruit_qtpy_esp32s3_n4r2.menu.CPUFreq.20.build.f_cpu=20000000L +adafruit_qtpy_esp32s3_n4r2.menu.CPUFreq.10=10MHz +adafruit_qtpy_esp32s3_n4r2.menu.CPUFreq.10.build.f_cpu=10000000L + +adafruit_qtpy_esp32s3_n4r2.menu.FlashMode.qio=QIO 80MHz +adafruit_qtpy_esp32s3_n4r2.menu.FlashMode.qio.build.flash_mode=dio +adafruit_qtpy_esp32s3_n4r2.menu.FlashMode.qio.build.boot=qio +adafruit_qtpy_esp32s3_n4r2.menu.FlashMode.qio.build.boot_freq=80m +adafruit_qtpy_esp32s3_n4r2.menu.FlashMode.qio.build.flash_freq=80m +adafruit_qtpy_esp32s3_n4r2.menu.FlashMode.qio120=QIO 120MHz +adafruit_qtpy_esp32s3_n4r2.menu.FlashMode.qio120.build.flash_mode=dio +adafruit_qtpy_esp32s3_n4r2.menu.FlashMode.qio120.build.boot=qio +adafruit_qtpy_esp32s3_n4r2.menu.FlashMode.qio120.build.boot_freq=120m +adafruit_qtpy_esp32s3_n4r2.menu.FlashMode.qio120.build.flash_freq=80m +adafruit_qtpy_esp32s3_n4r2.menu.FlashMode.dio=DIO 80MHz +adafruit_qtpy_esp32s3_n4r2.menu.FlashMode.dio.build.flash_mode=dio +adafruit_qtpy_esp32s3_n4r2.menu.FlashMode.dio.build.boot=dio +adafruit_qtpy_esp32s3_n4r2.menu.FlashMode.dio.build.boot_freq=80m +adafruit_qtpy_esp32s3_n4r2.menu.FlashMode.dio.build.flash_freq=80m +adafruit_qtpy_esp32s3_n4r2.menu.FlashMode.opi=OPI 80MHz +adafruit_qtpy_esp32s3_n4r2.menu.FlashMode.opi.build.flash_mode=dout +adafruit_qtpy_esp32s3_n4r2.menu.FlashMode.opi.build.boot=opi +adafruit_qtpy_esp32s3_n4r2.menu.FlashMode.opi.build.boot_freq=80m +adafruit_qtpy_esp32s3_n4r2.menu.FlashMode.opi.build.flash_freq=80m + +adafruit_qtpy_esp32s3_n4r2.menu.FlashSize.4M=4MB (32Mb) +adafruit_qtpy_esp32s3_n4r2.menu.FlashSize.4M.build.flash_size=4MB + +adafruit_qtpy_esp32s3_n4r2.menu.UploadSpeed.921600=921600 +adafruit_qtpy_esp32s3_n4r2.menu.UploadSpeed.921600.upload.speed=921600 +adafruit_qtpy_esp32s3_n4r2.menu.UploadSpeed.115200=115200 +adafruit_qtpy_esp32s3_n4r2.menu.UploadSpeed.115200.upload.speed=115200 +adafruit_qtpy_esp32s3_n4r2.menu.UploadSpeed.256000.windows=256000 +adafruit_qtpy_esp32s3_n4r2.menu.UploadSpeed.256000.upload.speed=256000 +adafruit_qtpy_esp32s3_n4r2.menu.UploadSpeed.230400.windows.upload.speed=256000 +adafruit_qtpy_esp32s3_n4r2.menu.UploadSpeed.230400=230400 +adafruit_qtpy_esp32s3_n4r2.menu.UploadSpeed.230400.upload.speed=230400 +adafruit_qtpy_esp32s3_n4r2.menu.UploadSpeed.460800.linux=460800 +adafruit_qtpy_esp32s3_n4r2.menu.UploadSpeed.460800.macosx=460800 +adafruit_qtpy_esp32s3_n4r2.menu.UploadSpeed.460800.upload.speed=460800 +adafruit_qtpy_esp32s3_n4r2.menu.UploadSpeed.512000.windows=512000 +adafruit_qtpy_esp32s3_n4r2.menu.UploadSpeed.512000.upload.speed=512000 + +adafruit_qtpy_esp32s3_n4r2.menu.DebugLevel.none=None +adafruit_qtpy_esp32s3_n4r2.menu.DebugLevel.none.build.code_debug=0 +adafruit_qtpy_esp32s3_n4r2.menu.DebugLevel.error=Error +adafruit_qtpy_esp32s3_n4r2.menu.DebugLevel.error.build.code_debug=1 +adafruit_qtpy_esp32s3_n4r2.menu.DebugLevel.warn=Warn +adafruit_qtpy_esp32s3_n4r2.menu.DebugLevel.warn.build.code_debug=2 +adafruit_qtpy_esp32s3_n4r2.menu.DebugLevel.info=Info +adafruit_qtpy_esp32s3_n4r2.menu.DebugLevel.info.build.code_debug=3 +adafruit_qtpy_esp32s3_n4r2.menu.DebugLevel.debug=Debug +adafruit_qtpy_esp32s3_n4r2.menu.DebugLevel.debug.build.code_debug=4 +adafruit_qtpy_esp32s3_n4r2.menu.DebugLevel.verbose=Verbose +adafruit_qtpy_esp32s3_n4r2.menu.DebugLevel.verbose.build.code_debug=5 + +adafruit_qtpy_esp32s3_n4r2.menu.EraseFlash.none=Disabled +adafruit_qtpy_esp32s3_n4r2.menu.EraseFlash.none.upload.erase_cmd= +adafruit_qtpy_esp32s3_n4r2.menu.EraseFlash.all=Enabled +adafruit_qtpy_esp32s3_n4r2.menu.EraseFlash.all.upload.erase_cmd=-e + ############################################################## # Adafruit ItsyBitsy ESP32 @@ -10930,7 +11130,7 @@ adafruit_matrixportal_esp32s3.menu.PSRAM.opi=OPI PSRAM adafruit_matrixportal_esp32s3.menu.PSRAM.opi.build.defines=-DBOARD_HAS_PSRAM adafruit_matrixportal_esp32s3.menu.PSRAM.opi.build.psram_type=opi -adafruit_matrixportal_esp32s3.menu.PartitionScheme.tinyuf2=TinyUF2 8MB (2MB APP/3.7MB FFAT) +adafruit_matrixportal_esp32s3.menu.PartitionScheme.tinyuf2=TinyUF2 8MB (2MB APP/3.7MB FATFS) adafruit_matrixportal_esp32s3.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 adafruit_matrixportal_esp32s3.menu.PartitionScheme.tinyuf2.build.custom_partitions=partitions-8MB-tinyuf2 adafruit_matrixportal_esp32s3.menu.PartitionScheme.tinyuf2.upload.maximum_size=2097152 @@ -23834,4 +24034,4 @@ nebulas3.menu.EraseFlash.none.upload.erase_cmd= nebulas3.menu.EraseFlash.all=Enabled nebulas3.menu.EraseFlash.all.upload.erase_cmd=-e -############################################################## \ No newline at end of file +############################################################## diff --git a/variants/adafruit_qtpy_esp32s3_n4r2/bootloader-tinyuf2.bin b/variants/adafruit_qtpy_esp32s3_n4r2/bootloader-tinyuf2.bin new file mode 100644 index 0000000000000000000000000000000000000000..ec63e6aff599007a615627acccc80e5f9cb5e267 GIT binary patch literal 22240 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 literal 0 HcmV?d00001 diff --git a/variants/adafruit_qtpy_esp32s3_n4r2/partitions-4MB-tinyuf2.csv b/variants/adafruit_qtpy_esp32s3_n4r2/partitions-4MB-tinyuf2.csv new file mode 100644 index 00000000000..f3112a23b11 --- /dev/null +++ b/variants/adafruit_qtpy_esp32s3_n4r2/partitions-4MB-tinyuf2.csv @@ -0,0 +1,11 @@ +# ESP-IDF Partition Table +# Name, Type, SubType, Offset, Size, Flags +# bootloader.bin,, 0x1000, 32K +# partition table, 0x8000, 4K + +nvs, data, nvs, 0x9000, 20K, +otadata, data, ota, 0xe000, 8K, +ota_0, app, ota_0, 0x10000, 1408K, +ota_1, app, ota_1, 0x170000, 1408K, +uf2, app, factory,0x2d0000, 256K, +ffat, data, fat, 0x310000, 960K, diff --git a/variants/adafruit_qtpy_esp32s3_n4r2/pins_arduino.h b/variants/adafruit_qtpy_esp32s3_n4r2/pins_arduino.h new file mode 100644 index 00000000000..789161da4ad --- /dev/null +++ b/variants/adafruit_qtpy_esp32s3_n4r2/pins_arduino.h @@ -0,0 +1,64 @@ +#ifndef Pins_Arduino_h +#define Pins_Arduino_h + +#include +#include "soc/soc_caps.h" + +#define USB_VID 0x239A +#define USB_PID 0x8143 +#define USB_MANUFACTURER "Adafruit" +#define USB_PRODUCT "QT Py ESP32-S3 (4MB Flash 2MB PSRAM)" +#define USB_SERIAL "" // Empty string for MAC adddress + +#define EXTERNAL_NUM_INTERRUPTS 46 +#define NUM_DIGITAL_PINS 48 +#define NUM_ANALOG_INPUTS 20 + +#define analogInputToDigitalPin(p) (((p)<20)?(analogChannelToDigitalPin(p)):-1) +#define digitalPinToInterrupt(p) (((p)<48)?(p):-1) +#define digitalPinHasPWM(p) (p < 46) + +#define PIN_NEOPIXEL 39 +#define NEOPIXEL_NUM 1 // number of neopixels +#define NEOPIXEL_POWER 38 // power pin +#define NEOPIXEL_POWER_ON HIGH // power pin state when on + +static const uint8_t LED_BUILTIN = SOC_GPIO_PIN_COUNT+PIN_NEOPIXEL; +#define BUILTIN_LED LED_BUILTIN // backward compatibility +#define LED_BUILTIN LED_BUILTIN +#define RGB_BUILTIN LED_BUILTIN +#define RGB_BRIGHTNESS 64 + +static const uint8_t TX = 5; +static const uint8_t RX = 16; +#define TX1 TX +#define RX1 RX + +static const uint8_t SDA = 7; +static const uint8_t SCL = 6; + +#define WIRE1_PIN_DEFINED 1 // See Wire.cpp at bool TwoWire::initPins(int sdaPin, int sclPin) +static const uint8_t SDA1 = 41; +static const uint8_t SCL1 = 40; + +static const uint8_t SS = 42; +static const uint8_t MOSI = 35; +static const uint8_t SCK = 36; +static const uint8_t MISO = 37; + +static const uint8_t A0 = 18; +static const uint8_t A1 = 17; +static const uint8_t A2 = 9; +static const uint8_t A3 = 8; +static const uint8_t A4 = 7; +static const uint8_t A5 = 6; +static const uint8_t A6 = 5; +static const uint8_t A7 = 16; + +static const uint8_t T5 = 5; +static const uint8_t T6 = 6; +static const uint8_t T7 = 7; +static const uint8_t T8 = 8; +static const uint8_t T9 = 9; + +#endif /* Pins_Arduino_h */ diff --git a/variants/adafruit_qtpy_esp32s3_n4r2/tinyuf2.bin b/variants/adafruit_qtpy_esp32s3_n4r2/tinyuf2.bin new file mode 100644 index 0000000000000000000000000000000000000000..9df48efaa22dc5813dbc49db137b20ba504c3800 GIT binary patch literal 173584 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 lyL{0f?>qQdZSwKo +#include "soc/soc_caps.h" #define USB_VID 0x239A #define USB_PID 0x8119 @@ -22,6 +23,12 @@ #define NEOPIXEL_POWER 38 // power pin #define NEOPIXEL_POWER_ON HIGH // power pin state when on +static const uint8_t LED_BUILTIN = SOC_GPIO_PIN_COUNT+PIN_NEOPIXEL; +#define BUILTIN_LED LED_BUILTIN // backward compatibility +#define LED_BUILTIN LED_BUILTIN +#define RGB_BUILTIN LED_BUILTIN +#define RGB_BRIGHTNESS 64 + static const uint8_t TX = 5; static const uint8_t RX = 16; #define TX1 TX