Add initial support for USB MSC (#5466)

* Add initial support for USB MSC

* Add Firmware Upload/Download With MSC

Current running firmware is available as file inside the MSC Disk. To update the firmware on the ESP, just copy a regular firmware bin into the drive

* Support overwriting of the firmware file

Overwriting a file is done totally differently on MacOS, Windows and Linux. This change supports it on all of them.

* Allow CDC, FirmwareMSC and DFU to be enabled on boot

* Add example ESP32-S2 USB-ONLY board

* Various device code optimizations

Added `end()` methods to MSC classes
Made begin() methods safe to be called multiple times
Optimized CDC class

* Fix CDC Connect/Disconnect detection in Arduino IDE on Windows

* Rework cdc_write

* Update ESP32-S2 board configs
This commit is contained in:
Me No Dev
2021-08-02 15:35:13 +03:00
committed by GitHub
parent be84c8219c
commit 5bb8177aa1
28 changed files with 1871 additions and 191 deletions

View File

@ -1,5 +1,7 @@
menu.UploadSpeed=Upload Speed
menu.SerialMode=Serial Connected To
menu.CDCOnBoot=USB CDC On Boot
menu.MSCOnBoot=USB Firmware MSC On Boot
menu.DFUOnBoot=USB DFU On Boot
menu.UploadMode=Upload Mode
menu.CPUFreq=CPU Frequency
menu.FlashFreq=Flash Frequency
@ -37,7 +39,7 @@ esp32c3.build.variant=esp32c3
esp32c3.build.board=ESP32C3_DEV
esp32c3.build.bootloader_addr=0x0
esp32c3.build.serial=0
esp32c3.build.cdc_on_boot=0
esp32c3.build.f_cpu=160000000L
esp32c3.build.flash_size=4MB
esp32c3.build.flash_freq=80m
@ -173,19 +175,31 @@ esp32s2.build.core=esp32
esp32s2.build.variant=esp32s2
esp32s2.build.board=ESP32S2_DEV
esp32s2.build.serial=0
esp32s2.build.cdc_on_boot=0
esp32s2.build.msc_on_boot=0
esp32s2.build.dfu_on_boot=0
esp32s2.build.f_cpu=240000000L
esp32s2.build.flash_size=4MB
esp32s2.build.flash_freq=80m
esp32s2.build.flash_mode=qio
esp32s2.build.flash_mode=dio
esp32s2.build.boot=qio
esp32s2.build.partitions=default
esp32s2.build.defines=
esp32s2.menu.SerialMode.default=UART0
esp32s2.menu.SerialMode.default.build.serial=0
esp32s2.menu.SerialMode.cdc=USB CDC
esp32s2.menu.SerialMode.cdc.build.serial=1
esp32s2.menu.CDCOnBoot.default=Disabled
esp32s2.menu.CDCOnBoot.default.build.cdc_on_boot=0
esp32s2.menu.CDCOnBoot.cdc=Enabled
esp32s2.menu.CDCOnBoot.cdc.build.cdc_on_boot=1
esp32s2.menu.MSCOnBoot.default=Disabled
esp32s2.menu.MSCOnBoot.default.build.msc_on_boot=0
esp32s2.menu.MSCOnBoot.msc=Enabled
esp32s2.menu.MSCOnBoot.msc.build.msc_on_boot=1
esp32s2.menu.DFUOnBoot.default=Disabled
esp32s2.menu.DFUOnBoot.default.build.dfu_on_boot=0
esp32s2.menu.DFUOnBoot.dfu=Enabled
esp32s2.menu.DFUOnBoot.dfu.build.dfu_on_boot=1
esp32s2.menu.UploadMode.default=UART0
esp32s2.menu.UploadMode.default.upload.use_1200bps_touch=false
@ -635,6 +649,103 @@ pico32.menu.DebugLevel.verbose.build.code_debug=5
##############################################################
esp32s2usb.name=ESP32S2 Native USB
esp32s2usb.vid.0=0x303a
esp32s2usb.pid.0=0x0003
esp32s2usb.upload.tool=esptool_py
esp32s2usb.upload.maximum_size=1310720
esp32s2usb.upload.maximum_data_size=327680
esp32s2usb.upload.flags=
esp32s2usb.upload.extra_flags=
esp32s2usb.upload.use_1200bps_touch=true
esp32s2usb.upload.wait_for_upload_port=true
esp32s2usb.upload.speed=921600
esp32s2usb.serial.disableDTR=false
esp32s2usb.serial.disableRTS=false
esp32s2usb.build.tarch=xtensa
esp32s2usb.build.bootloader_addr=0x1000
esp32s2usb.build.target=esp32s2
esp32s2usb.build.mcu=esp32s2
esp32s2usb.build.core=esp32
esp32s2usb.build.variant=esp32s2usb
esp32s2usb.build.board=ESP32S2_USB
esp32s2usb.build.cdc_on_boot=1
esp32s2usb.build.msc_on_boot=1
esp32s2usb.build.dfu_on_boot=1
esp32s2usb.build.f_cpu=240000000L
esp32s2usb.build.flash_size=4MB
esp32s2usb.build.flash_freq=80m
esp32s2usb.build.flash_mode=dio
esp32s2usb.build.boot=qio
esp32s2usb.build.partitions=default
esp32s2usb.build.defines=
esp32s2usb.menu.PSRAM.disabled=Disabled
esp32s2usb.menu.PSRAM.disabled.build.defines=
esp32s2usb.menu.PSRAM.enabled=Enabled
esp32s2usb.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM
esp32s2usb.menu.FlashSize.4M=4MB (32Mb)
esp32s2usb.menu.FlashSize.4M.build.flash_size=4MB
esp32s2usb.menu.FlashSize.8M=8MB (64Mb)
esp32s2usb.menu.FlashSize.8M.build.flash_size=8MB
esp32s2usb.menu.FlashSize.8M.build.partitions=default_8MB
esp32s2usb.menu.FlashSize.16M=16MB (128Mb)
esp32s2usb.menu.FlashSize.16M.build.flash_size=16MB
esp32s2usb.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)
esp32s2usb.menu.PartitionScheme.default.build.partitions=default
esp32s2usb.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS)
esp32s2usb.menu.PartitionScheme.defaultffat.build.partitions=default_ffat
esp32s2usb.menu.PartitionScheme.default_8MB=8M Flash (3MB APP/1.5MB FAT)
esp32s2usb.menu.PartitionScheme.default_8MB.build.partitions=default_8MB
esp32s2usb.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336
esp32s2usb.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS)
esp32s2usb.menu.PartitionScheme.minimal.build.partitions=minimal
esp32s2usb.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS)
esp32s2usb.menu.PartitionScheme.no_ota.build.partitions=no_ota
esp32s2usb.menu.PartitionScheme.no_ota.upload.maximum_size=2097152
esp32s2usb.menu.PartitionScheme.noota_3g=No OTA (1MB APP/3MB SPIFFS)
esp32s2usb.menu.PartitionScheme.noota_3g.build.partitions=noota_3g
esp32s2usb.menu.PartitionScheme.noota_3g.upload.maximum_size=1048576
esp32s2usb.menu.PartitionScheme.noota_ffat=No OTA (2MB APP/2MB FATFS)
esp32s2usb.menu.PartitionScheme.noota_ffat.build.partitions=noota_ffat
esp32s2usb.menu.PartitionScheme.noota_ffat.upload.maximum_size=2097152
esp32s2usb.menu.PartitionScheme.noota_3gffat=No OTA (1MB APP/3MB FATFS)
esp32s2usb.menu.PartitionScheme.noota_3gffat.build.partitions=noota_3gffat
esp32s2usb.menu.PartitionScheme.noota_3gffat.upload.maximum_size=1048576
esp32s2usb.menu.PartitionScheme.huge_app=Huge APP (3MB No OTA/1MB SPIFFS)
esp32s2usb.menu.PartitionScheme.huge_app.build.partitions=huge_app
esp32s2usb.menu.PartitionScheme.huge_app.upload.maximum_size=3145728
esp32s2usb.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS)
esp32s2usb.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs
esp32s2usb.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080
esp32s2usb.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FAT)
esp32s2usb.menu.PartitionScheme.fatflash.build.partitions=ffat
esp32s2usb.menu.PartitionScheme.fatflash.upload.maximum_size=2097152
esp32s2usb.menu.PartitionScheme.app3M_fat9M_16MB=16M Flash (3MB APP/9MB FATFS)
esp32s2usb.menu.PartitionScheme.app3M_fat9M_16MB.build.partitions=app3M_fat9M_16MB
esp32s2usb.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728
esp32s2usb.menu.DebugLevel.none=None
esp32s2usb.menu.DebugLevel.none.build.code_debug=0
esp32s2usb.menu.DebugLevel.error=Error
esp32s2usb.menu.DebugLevel.error.build.code_debug=1
esp32s2usb.menu.DebugLevel.warn=Warn
esp32s2usb.menu.DebugLevel.warn.build.code_debug=2
esp32s2usb.menu.DebugLevel.info=Info
esp32s2usb.menu.DebugLevel.info.build.code_debug=3
esp32s2usb.menu.DebugLevel.debug=Debug
esp32s2usb.menu.DebugLevel.debug.build.code_debug=4
esp32s2usb.menu.DebugLevel.verbose=Verbose
esp32s2usb.menu.DebugLevel.verbose.build.code_debug=5
##############################################################
esp32wroverkit.name=ESP32 Wrover Kit (all versions)
esp32wroverkit.upload.tool=esptool_py
esp32wroverkit.upload.maximum_size=1310720
@ -865,7 +976,9 @@ feathers2.build.core=esp32
feathers2.build.variant=um_feathers2
feathers2.build.board=FEATHERS2
feathers2.build.serial=1
feathers2.build.cdc_on_boot=1
feathers2.build.msc_on_boot=1
feathers2.build.dfu_on_boot=0
feathers2.build.f_cpu=240000000L
feathers2.build.flash_size=16MB
feathers2.build.flash_freq=80m
@ -874,10 +987,20 @@ feathers2.build.boot=qio
feathers2.build.partitions=fatflash
feathers2.build.defines=
feathers2.menu.SerialMode.cdc=USB CDC
feathers2.menu.SerialMode.cdc.build.serial=1
feathers2.menu.SerialMode.default=UART0
feathers2.menu.SerialMode.default.build.serial=0
feathers2.menu.CDCOnBoot.cdc=Enabled
feathers2.menu.CDCOnBoot.cdc.build.cdc_on_boot=1
feathers2.menu.CDCOnBoot.default=Disabled
feathers2.menu.CDCOnBoot.default.build.cdc_on_boot=0
feathers2.menu.MSCOnBoot.msc=Enabled
feathers2.menu.MSCOnBoot.msc.build.msc_on_boot=1
feathers2.menu.MSCOnBoot.default=Disabled
feathers2.menu.MSCOnBoot.default.build.msc_on_boot=0
feathers2.menu.DFUOnBoot.default=Disabled
feathers2.menu.DFUOnBoot.default.build.dfu_on_boot=0
feathers2.menu.DFUOnBoot.dfu=Enabled
feathers2.menu.DFUOnBoot.dfu.build.dfu_on_boot=1
feathers2.menu.PSRAM.enabled=Enabled
feathers2.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM
@ -993,7 +1116,9 @@ tinys2.build.core=esp32
tinys2.build.variant=um_tinys2
tinys2.build.board=TINYS2
tinys2.build.serial=1
tinys2.build.cdc_on_boot=1
tinys2.build.msc_on_boot=1
tinys2.build.dfu_on_boot=0
tinys2.build.f_cpu=240000000L
tinys2.build.flash_size=4MB
tinys2.build.flash_freq=80m
@ -1002,10 +1127,20 @@ tinys2.build.boot=qio
tinys2.build.partitions=default
tinys2.build.defines=
tinys2.menu.SerialMode.cdc=USB CDC
tinys2.menu.SerialMode.cdc.build.serial=1
tinys2.menu.SerialMode.default=UART0
tinys2.menu.SerialMode.default.build.serial=0
tinys2.menu.CDCOnBoot.cdc=Enabled
tinys2.menu.CDCOnBoot.cdc.build.cdc_on_boot=1
tinys2.menu.CDCOnBoot.default=Disabled
tinys2.menu.CDCOnBoot.default.build.cdc_on_boot=0
tinys2.menu.MSCOnBoot.msc=Enabled
tinys2.menu.MSCOnBoot.msc.build.msc_on_boot=1
tinys2.menu.MSCOnBoot.default=Disabled
tinys2.menu.MSCOnBoot.default.build.msc_on_boot=0
tinys2.menu.DFUOnBoot.default=Disabled
tinys2.menu.DFUOnBoot.default.build.dfu_on_boot=0
tinys2.menu.DFUOnBoot.dfu=Enabled
tinys2.menu.DFUOnBoot.dfu.build.dfu_on_boot=1
tinys2.menu.PSRAM.enabled=Enabled
tinys2.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM
@ -1166,7 +1301,9 @@ micros2.build.core=esp32
micros2.build.variant=micro_s2
micros2.build.board=MICROS2
micros2.build.serial=1
micros2.build.cdc_on_boot=1
micros2.build.msc_on_boot=1
micros2.build.dfu_on_boot=0
micros2.build.f_cpu=240000000L
micros2.build.flash_size=16MB
micros2.build.flash_freq=80m
@ -1175,10 +1312,20 @@ micros2.build.boot=qio
micros2.build.partitions=fatflash
micros2.build.defines=
micros2.menu.SerialMode.cdc=USB CDC
micros2.menu.SerialMode.cdc.build.serial=1
micros2.menu.SerialMode.default=UART0
micros2.menu.SerialMode.default.build.serial=0
micros2.menu.CDCOnBoot.cdc=Enabled
micros2.menu.CDCOnBoot.cdc.build.cdc_on_boot=1
micros2.menu.CDCOnBoot.default=Disabled
micros2.menu.CDCOnBoot.default.build.cdc_on_boot=0
micros2.menu.MSCOnBoot.msc=Enabled
micros2.menu.MSCOnBoot.msc.build.msc_on_boot=1
micros2.menu.MSCOnBoot.default=Disabled
micros2.menu.MSCOnBoot.default.build.msc_on_boot=0
micros2.menu.DFUOnBoot.default=Disabled
micros2.menu.DFUOnBoot.default.build.dfu_on_boot=0
micros2.menu.DFUOnBoot.dfu=Enabled
micros2.menu.DFUOnBoot.dfu.build.dfu_on_boot=1
micros2.menu.PSRAM.enabled=Enabled
micros2.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM
@ -2025,7 +2172,9 @@ sparkfun_esp32s2_thing_plus.build.core=esp32
sparkfun_esp32s2_thing_plus.build.variant=esp32s2thing_plus
sparkfun_esp32s2_thing_plus.build.board=ESP32S2_THING_PLUS
sparkfun_esp32s2_thing_plus.build.serial=0
sparkfun_esp32s2_thing_plus.build.cdc_on_boot=0
sparkfun_esp32s2_thing_plus.build.msc_on_boot=0
sparkfun_esp32s2_thing_plus.build.dfu_on_boot=0
sparkfun_esp32s2_thing_plus.build.f_cpu=240000000L
sparkfun_esp32s2_thing_plus.build.flash_size=4MB
sparkfun_esp32s2_thing_plus.build.flash_freq=80m
@ -2034,10 +2183,20 @@ sparkfun_esp32s2_thing_plus.build.boot=qio
sparkfun_esp32s2_thing_plus.build.partitions=default
sparkfun_esp32s2_thing_plus.build.defines=
sparkfun_esp32s2_thing_plus.menu.SerialMode.default=UART0
sparkfun_esp32s2_thing_plus.menu.SerialMode.default.build.serial=0
sparkfun_esp32s2_thing_plus.menu.SerialMode.cdc=USB CDC
sparkfun_esp32s2_thing_plus.menu.SerialMode.cdc.build.serial=1
sparkfun_esp32s2_thing_plus.menu.CDCOnBoot.default=Disabled
sparkfun_esp32s2_thing_plus.menu.CDCOnBoot.default.build.cdc_on_boot=0
sparkfun_esp32s2_thing_plus.menu.CDCOnBoot.cdc=Enabled
sparkfun_esp32s2_thing_plus.menu.CDCOnBoot.cdc.build.cdc_on_boot=1
sparkfun_esp32s2_thing_plus.menu.MSCOnBoot.default=Disabled
sparkfun_esp32s2_thing_plus.menu.MSCOnBoot.default.build.msc_on_boot=0
sparkfun_esp32s2_thing_plus.menu.MSCOnBoot.msc=Enabled
sparkfun_esp32s2_thing_plus.menu.MSCOnBoot.msc.build.msc_on_boot=1
sparkfun_esp32s2_thing_plus.menu.DFUOnBoot.default=Disabled
sparkfun_esp32s2_thing_plus.menu.DFUOnBoot.default.build.dfu_on_boot=0
sparkfun_esp32s2_thing_plus.menu.DFUOnBoot.dfu=Enabled
sparkfun_esp32s2_thing_plus.menu.DFUOnBoot.dfu.build.dfu_on_boot=1
sparkfun_esp32s2_thing_plus.menu.PSRAM.disabled=Disabled
sparkfun_esp32s2_thing_plus.menu.PSRAM.disabled.build.defines=
@ -3334,7 +3493,9 @@ adafruit_metro_esp32s2.build.core=esp32
adafruit_metro_esp32s2.build.variant=adafruit_metro_esp32s2
adafruit_metro_esp32s2.build.board=METRO_ESP32S2
adafruit_metro_esp32s2.build.serial=0
adafruit_metro_esp32s2.build.cdc_on_boot=1
adafruit_metro_esp32s2.build.msc_on_boot=0
adafruit_metro_esp32s2.build.dfu_on_boot=0
adafruit_metro_esp32s2.build.f_cpu=240000000L
adafruit_metro_esp32s2.build.flash_size=4MB
adafruit_metro_esp32s2.build.flash_freq=80m
@ -3343,10 +3504,20 @@ adafruit_metro_esp32s2.build.boot=qio
adafruit_metro_esp32s2.build.partitions=default
adafruit_metro_esp32s2.build.defines=
adafruit_metro_esp32s2.menu.SerialMode.cdc=USB CDC
adafruit_metro_esp32s2.menu.SerialMode.cdc.build.serial=1
adafruit_metro_esp32s2.menu.SerialMode.default=UART0
adafruit_metro_esp32s2.menu.SerialMode.default.build.serial=0
adafruit_metro_esp32s2.menu.CDCOnBoot.cdc=Enabled
adafruit_metro_esp32s2.menu.CDCOnBoot.cdc.build.cdc_on_boot=1
adafruit_metro_esp32s2.menu.CDCOnBoot.default=Disabled
adafruit_metro_esp32s2.menu.CDCOnBoot.default.build.cdc_on_boot=0
adafruit_metro_esp32s2.menu.MSCOnBoot.default=Disabled
adafruit_metro_esp32s2.menu.MSCOnBoot.default.build.msc_on_boot=0
adafruit_metro_esp32s2.menu.MSCOnBoot.msc=Enabled
adafruit_metro_esp32s2.menu.MSCOnBoot.msc.build.msc_on_boot=1
adafruit_metro_esp32s2.menu.DFUOnBoot.default=Disabled
adafruit_metro_esp32s2.menu.DFUOnBoot.default.build.dfu_on_boot=0
adafruit_metro_esp32s2.menu.DFUOnBoot.dfu=Enabled
adafruit_metro_esp32s2.menu.DFUOnBoot.dfu.build.dfu_on_boot=1
adafruit_metro_esp32s2.menu.PSRAM.enabled=Enabled
adafruit_metro_esp32s2.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM
@ -3487,7 +3658,9 @@ adafruit_magtag29_esp32s2.build.core=esp32
adafruit_magtag29_esp32s2.build.variant=adafruit_magtag29_esp32s2
adafruit_magtag29_esp32s2.build.board=MAGTAG29_ESP32S2
adafruit_magtag29_esp32s2.build.serial=0
adafruit_magtag29_esp32s2.build.cdc_on_boot=1
adafruit_magtag29_esp32s2.build.msc_on_boot=0
adafruit_magtag29_esp32s2.build.dfu_on_boot=0
adafruit_magtag29_esp32s2.build.f_cpu=240000000L
adafruit_magtag29_esp32s2.build.flash_size=4MB
adafruit_magtag29_esp32s2.build.flash_freq=80m
@ -3496,10 +3669,20 @@ adafruit_magtag29_esp32s2.build.boot=qio
adafruit_magtag29_esp32s2.build.partitions=default
adafruit_magtag29_esp32s2.build.defines=
adafruit_magtag29_esp32s2.menu.SerialMode.cdc=USB CDC
adafruit_magtag29_esp32s2.menu.SerialMode.cdc.build.serial=1
adafruit_magtag29_esp32s2.menu.SerialMode.default=UART0
adafruit_magtag29_esp32s2.menu.SerialMode.default.build.serial=0
adafruit_magtag29_esp32s2.menu.CDCOnBoot.cdc=Enabled
adafruit_magtag29_esp32s2.menu.CDCOnBoot.cdc.build.cdc_on_boot=1
adafruit_magtag29_esp32s2.menu.CDCOnBoot.default=Disabled
adafruit_magtag29_esp32s2.menu.CDCOnBoot.default.build.cdc_on_boot=0
adafruit_magtag29_esp32s2.menu.MSCOnBoot.default=Disabled
adafruit_magtag29_esp32s2.menu.MSCOnBoot.default.build.msc_on_boot=0
adafruit_magtag29_esp32s2.menu.MSCOnBoot.msc=Enabled
adafruit_magtag29_esp32s2.menu.MSCOnBoot.msc.build.msc_on_boot=1
adafruit_magtag29_esp32s2.menu.DFUOnBoot.default=Disabled
adafruit_magtag29_esp32s2.menu.DFUOnBoot.default.build.dfu_on_boot=0
adafruit_magtag29_esp32s2.menu.DFUOnBoot.dfu=Enabled
adafruit_magtag29_esp32s2.menu.DFUOnBoot.dfu.build.dfu_on_boot=1
adafruit_magtag29_esp32s2.menu.PSRAM.enabled=Enabled
adafruit_magtag29_esp32s2.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM
@ -3640,7 +3823,9 @@ adafruit_funhouse_esp32s2.build.core=esp32
adafruit_funhouse_esp32s2.build.variant=adafruit_funhouse_esp32s2
adafruit_funhouse_esp32s2.build.board=FUNHOUSE_ESP32S2
adafruit_funhouse_esp32s2.build.serial=0
adafruit_funhouse_esp32s2.build.cdc_on_boot=1
adafruit_funhouse_esp32s2.build.msc_on_boot=0
adafruit_funhouse_esp32s2.build.dfu_on_boot=0
adafruit_funhouse_esp32s2.build.f_cpu=240000000L
adafruit_funhouse_esp32s2.build.flash_size=4MB
adafruit_funhouse_esp32s2.build.flash_freq=80m
@ -3649,10 +3834,20 @@ adafruit_funhouse_esp32s2.build.boot=qio
adafruit_funhouse_esp32s2.build.partitions=default
adafruit_funhouse_esp32s2.build.defines=
adafruit_funhouse_esp32s2.menu.SerialMode.cdc=USB CDC
adafruit_funhouse_esp32s2.menu.SerialMode.cdc.build.serial=1
adafruit_funhouse_esp32s2.menu.SerialMode.default=UART0
adafruit_funhouse_esp32s2.menu.SerialMode.default.build.serial=0
adafruit_funhouse_esp32s2.menu.CDCOnBoot.cdc=Enabled
adafruit_funhouse_esp32s2.menu.CDCOnBoot.cdc.build.cdc_on_boot=1
adafruit_funhouse_esp32s2.menu.CDCOnBoot.default=Disabled
adafruit_funhouse_esp32s2.menu.CDCOnBoot.default.build.cdc_on_boot=0
adafruit_funhouse_esp32s2.menu.MSCOnBoot.default=Disabled
adafruit_funhouse_esp32s2.menu.MSCOnBoot.default.build.msc_on_boot=0
adafruit_funhouse_esp32s2.menu.MSCOnBoot.msc=Enabled
adafruit_funhouse_esp32s2.menu.MSCOnBoot.msc.build.msc_on_boot=1
adafruit_funhouse_esp32s2.menu.DFUOnBoot.default=Disabled
adafruit_funhouse_esp32s2.menu.DFUOnBoot.default.build.dfu_on_boot=0
adafruit_funhouse_esp32s2.menu.DFUOnBoot.dfu=Enabled
adafruit_funhouse_esp32s2.menu.DFUOnBoot.dfu.build.dfu_on_boot=1
adafruit_funhouse_esp32s2.menu.PSRAM.enabled=Enabled
adafruit_funhouse_esp32s2.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM
@ -3793,7 +3988,9 @@ adafruit_feather_esp32s2_nopsram.build.core=esp32
adafruit_feather_esp32s2_nopsram.build.variant=adafruit_feather_esp32s2
adafruit_feather_esp32s2_nopsram.build.board=ADAFRUIT_FEATHER_ESP32S2_NOPSRAM
adafruit_feather_esp32s2_nopsram.build.serial=0
adafruit_feather_esp32s2_nopsram.build.cdc_on_boot=0
adafruit_feather_esp32s2_nopsram.build.msc_on_boot=0
adafruit_feather_esp32s2_nopsram.build.dfu_on_boot=0
adafruit_feather_esp32s2_nopsram.build.f_cpu=240000000L
adafruit_feather_esp32s2_nopsram.build.flash_size=4MB
adafruit_feather_esp32s2_nopsram.build.flash_freq=80m
@ -3802,10 +3999,20 @@ adafruit_feather_esp32s2_nopsram.build.boot=qio
adafruit_feather_esp32s2_nopsram.build.partitions=default
adafruit_feather_esp32s2_nopsram.build.defines=
adafruit_feather_esp32s2_nopsram.menu.SerialMode.cdc=USB CDC
adafruit_feather_esp32s2_nopsram.menu.SerialMode.cdc.build.serial=1
adafruit_feather_esp32s2_nopsram.menu.SerialMode.default=UART0
adafruit_feather_esp32s2_nopsram.menu.SerialMode.default.build.serial=0
adafruit_feather_esp32s2_nopsram.menu.CDCOnBoot.cdc=Enabled
adafruit_feather_esp32s2_nopsram.menu.CDCOnBoot.cdc.build.cdc_on_boot=1
adafruit_feather_esp32s2_nopsram.menu.CDCOnBoot.default=Disabled
adafruit_feather_esp32s2_nopsram.menu.CDCOnBoot.default.build.cdc_on_boot=0
adafruit_feather_esp32s2_nopsram.menu.MSCOnBoot.default=Disabled
adafruit_feather_esp32s2_nopsram.menu.MSCOnBoot.default.build.msc_on_boot=0
adafruit_feather_esp32s2_nopsram.menu.MSCOnBoot.msc=Enabled
adafruit_feather_esp32s2_nopsram.menu.MSCOnBoot.msc.build.msc_on_boot=1
adafruit_feather_esp32s2_nopsram.menu.DFUOnBoot.default=Disabled
adafruit_feather_esp32s2_nopsram.menu.DFUOnBoot.default.build.dfu_on_boot=0
adafruit_feather_esp32s2_nopsram.menu.DFUOnBoot.dfu=Enabled
adafruit_feather_esp32s2_nopsram.menu.DFUOnBoot.dfu.build.dfu_on_boot=1
adafruit_feather_esp32s2_nopsram.menu.PSRAM.disabled=Disabled
adafruit_feather_esp32s2_nopsram.menu.PSRAM.disabled.build.defines=