From 80cd9a0f1d35bfa2bba30866ace107c695388521 Mon Sep 17 00:00:00 2001 From: TD-er Date: Fri, 14 Nov 2025 00:25:14 +0100 Subject: [PATCH] [ESP32-C61] Add initial support for ESP32-C61 --- lib/ESPEasySerial/ESPEasySerialType.h | 12 +- .../ESPEasySerial_common_defines.h | 4 +- lib/GPIO_DirectAccess/GPIO_Direct_Access.h | 10 +- lib/ImprovWiFi/src/ImprovTypes.h | 2 + lib/NeoPixelBus/src/internal/NeoBusChannel.h | 4 +- .../src/internal/NeoEsp32RmtMethod.cpp | 2 +- .../src/internal/NeoEsp32RmtMethod.h | 4 +- .../src/internal/NeoEsp32RmtMethod_idf5.h | 12 +- .../src/internal/NeoEsp32SpiMethod_idf5.h | 2 +- .../src/internal/NeoEspBitBangMethod.cpp | 2 +- .../src/internal/NeoEspBitBangMethod.h | 2 +- platformio.ini | 2 +- platformio_core_defs.ini | 8 +- platformio_esp32c61_envs.ini | 5 + .../net/wifi/ESPEasyWiFi_state_machine.cpp | 2 +- .../wifi/ESPEasyWifi_abstracted_ESP8266.cpp | 3 + src/include/esp32x_fixes.h | 2 +- src/src/CustomBuild/ESPEasy_buildinfo.h | 2 +- src/src/DataStructs_templ/SettingsStruct.cpp | 2 +- src/src/ESPEasyCore/ESPEasy_Console.cpp | 11 ++ src/src/Helpers/Hardware.cpp | 28 ++++ src/src/Helpers/Hardware_ADC_cali.h | 2 +- src/src/Helpers/Hardware_GPIO_ESP32C61.cpp | 145 ++++++++++++++++++ src/src/Helpers/Hardware_defines.h | 10 ++ src/src/Helpers/Hardware_device_info.cpp | 4 +- .../Helpers/Hardware_device_info_ESP32C61.cpp | 78 ++++++++++ src/src/Helpers/StringGenerator_GPIO.cpp | 4 + src/src/Helpers/StringGenerator_System.cpp | 27 ++++ tools/pio/copy_files.py | 2 +- 29 files changed, 358 insertions(+), 35 deletions(-) create mode 100644 src/src/Helpers/Hardware_GPIO_ESP32C61.cpp diff --git a/lib/ESPEasySerial/ESPEasySerialType.h b/lib/ESPEasySerial/ESPEasySerialType.h index 90b71bb16..6370239ee 100644 --- a/lib/ESPEasySerial/ESPEasySerialType.h +++ b/lib/ESPEasySerial/ESPEasySerialType.h @@ -22,6 +22,8 @@ # define SOC_RX0 44 # elif CONFIG_IDF_TARGET_ESP32C6 # define SOC_RX0 17 +# elif CONFIG_IDF_TARGET_ESP32C61 +# define SOC_RX0 17 # elif CONFIG_IDF_TARGET_ESP32C5 # define SOC_RX0 12 # elif CONFIG_IDF_TARGET_ESP32C3 @@ -38,6 +40,8 @@ # define SOC_TX0 43 # elif CONFIG_IDF_TARGET_ESP32C6 # define SOC_TX0 16 +# elif CONFIG_IDF_TARGET_ESP32C61 +# define SOC_TX0 16 # elif CONFIG_IDF_TARGET_ESP32C5 # define SOC_TX0 11 # elif CONFIG_IDF_TARGET_ESP32C3 @@ -58,7 +62,7 @@ # define SOC_RX1 13 # elif CONFIG_IDF_TARGET_ESP32S2 # define SOC_RX1 18 -# elif CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C5 || CONFIG_IDF_TARGET_ESP32C6 +# elif CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C5 || CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32C61 # define SOC_RX1 4 # elif CONFIG_IDF_TARGET_ESP32S3 # define SOC_RX1 15 @@ -74,7 +78,7 @@ # define SOC_TX1 15 # elif CONFIG_IDF_TARGET_ESP32S2 # define SOC_TX1 17 -# elif CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C5 || CONFIG_IDF_TARGET_ESP32C6 +# elif CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C5 || CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32C61 # define SOC_TX1 5 # elif CONFIG_IDF_TARGET_ESP32S3 # define SOC_TX1 16 @@ -97,6 +101,8 @@ # define SOC_RX2 19 # elif CONFIG_IDF_TARGET_ESP32C6 # define SOC_RX2 6 +# elif CONFIG_IDF_TARGET_ESP32C61 +# define SOC_RX2 6 # elif CONFIG_IDF_TARGET_ESP32C5 # define SOC_RX2 6 # else // if CONFIG_IDF_TARGET_ESP32 @@ -116,6 +122,8 @@ # define SOC_TX2 20 # elif CONFIG_IDF_TARGET_ESP32C6 # define SOC_TX2 7 +# elif CONFIG_IDF_TARGET_ESP32C61 +# define SOC_TX2 7 # elif CONFIG_IDF_TARGET_ESP32C5 # define SOC_TX2 7 # else // if CONFIG_IDF_TARGET_ESP32 diff --git a/lib/ESPEasySerial/ESPEasySerial_common_defines.h b/lib/ESPEasySerial/ESPEasySerial_common_defines.h index 81ef0ba02..1a580627a 100644 --- a/lib/ESPEasySerial/ESPEasySerial_common_defines.h +++ b/lib/ESPEasySerial/ESPEasySerial_common_defines.h @@ -35,12 +35,12 @@ static_assert(false, "Implement processor architecture"); #ifdef ESP32 /* - #if CONFIG_IDF_TARGET_ESP32C6 || // support USB via HWCDC using JTAG interface + #if CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32C61 || // support USB via HWCDC using JTAG interface CONFIG_IDF_TARGET_ESP32C3 || // support USB via HWCDC using JTAG interface CONFIG_IDF_TARGET_ESP32S2 || // support USB via USBCDC CONFIG_IDF_TARGET_ESP32S3 // support USB via HWCDC using JTAG interface or USBCDC */ -# if CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C5 || CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32C61 || CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3 +# if CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C5 || CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32C61 || CONFIG_IDF_TARGET_ESP32C61 || CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3 // #if CONFIG_TINYUSB_CDC_ENABLED // This define is not recognized here so use USE_USB_CDC_CONSOLE # ifdef USE_USB_CDC_CONSOLE diff --git a/lib/GPIO_DirectAccess/GPIO_Direct_Access.h b/lib/GPIO_DirectAccess/GPIO_Direct_Access.h index 66dcb7001..625ea1fec 100644 --- a/lib/GPIO_DirectAccess/GPIO_Direct_Access.h +++ b/lib/GPIO_DirectAccess/GPIO_Direct_Access.h @@ -155,7 +155,7 @@ IO_REG_TYPE directRead(IO_REG_TYPE pin) { #if CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C5 return (GPIO.in.val >> pin) & 0x1; -#elif CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32P4 +#elif CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32C61 || CONFIG_IDF_TARGET_ESP32P4 if ( pin < 32 ) return (GPIO.in.val >> pin) & 0x1; else if ( pin < SOC_GPIO_PIN_COUNT ) @@ -175,7 +175,7 @@ void directWriteLow(IO_REG_TYPE pin) { #if CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C5 GPIO.out_w1tc.val = ((uint32_t)1 << pin); -#elif CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32P4 +#elif CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32C61 || CONFIG_IDF_TARGET_ESP32P4 if ( pin < 32 ) GPIO.out_w1tc.val = ((uint32_t)1 << pin); else if ( pin < SOC_GPIO_PIN_COUNT ) @@ -194,7 +194,7 @@ void directWriteHigh(IO_REG_TYPE pin) { #if CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C5 GPIO.out_w1ts.val = ((uint32_t)1 << pin); -#elif CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32P4 +#elif CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32C61 || CONFIG_IDF_TARGET_ESP32P4 if ( pin < 32 ) GPIO.out_w1ts.val = ((uint32_t)1 << pin); else if ( pin < SOC_GPIO_PIN_COUNT ) @@ -226,7 +226,7 @@ void directModeInput(IO_REG_TYPE pin) } #endif // Input -#if CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32P4 +#if CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32C61 || CONFIG_IDF_TARGET_ESP32P4 if ( pin < 32 ) GPIO.enable_w1tc.val = ((uint32_t)1 << pin); else @@ -259,7 +259,7 @@ void directModeOutput(IO_REG_TYPE pin) } #endif // Output -#if CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32P4 +#if CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32C61 || CONFIG_IDF_TARGET_ESP32P4 if ( pin < 32 ) GPIO.enable_w1ts.val = ((uint32_t)1 << pin); else // already validated to pins <= 33 diff --git a/lib/ImprovWiFi/src/ImprovTypes.h b/lib/ImprovWiFi/src/ImprovTypes.h index bdd43e964..cde1be8ea 100644 --- a/lib/ImprovWiFi/src/ImprovTypes.h +++ b/lib/ImprovWiFi/src/ImprovTypes.h @@ -91,6 +91,8 @@ struct ImprovWiFiParamsStruct { "ESP32-C5" #elif defined(CONFIG_IDF_TARGET_ESP32C6) "ESP32-C6" +#elif defined(CONFIG_IDF_TARGET_ESP32C61) + "ESP32-C61" #elif defined(CONFIG_IDF_TARGET_ESP32H2) "ESP32-H2" #elif defined(ESP8266) diff --git a/lib/NeoPixelBus/src/internal/NeoBusChannel.h b/lib/NeoPixelBus/src/internal/NeoBusChannel.h index 87f90d614..c9cb9e64c 100644 --- a/lib/NeoPixelBus/src/internal/NeoBusChannel.h +++ b/lib/NeoPixelBus/src/internal/NeoBusChannel.h @@ -12,7 +12,7 @@ enum NeoBusChannel NeoBusChannel_0, NeoBusChannel_1, -#if !defined(CONFIG_IDF_TARGET_ESP32C5) && !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C2) && !defined(CONFIG_IDF_TARGET_ESP32C6) +#if !defined(CONFIG_IDF_TARGET_ESP32C5) && !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C2) && !defined(CONFIG_IDF_TARGET_ESP32C6) && !defined(CONFIG_IDF_TARGET_ESP32C61) NeoBusChannel_2, @@ -35,7 +35,7 @@ enum NeoBusChannel NeoBusChannel_7, #endif // !defined(CONFIG_IDF_TARGET_ESP32S2) -#endif // !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C2) && !defined(CONFIG_IDF_TARGET_ESP32C6) +#endif #endif // ARDUINO_ARCH_ESP32 diff --git a/lib/NeoPixelBus/src/internal/NeoEsp32RmtMethod.cpp b/lib/NeoPixelBus/src/internal/NeoEsp32RmtMethod.cpp index 2a756934f..8bc1cf2a5 100644 --- a/lib/NeoPixelBus/src/internal/NeoEsp32RmtMethod.cpp +++ b/lib/NeoPixelBus/src/internal/NeoEsp32RmtMethod.cpp @@ -29,7 +29,7 @@ License along with NeoPixel. If not, see #include -#if defined(ARDUINO_ARCH_ESP32) && ESP_IDF_VERSION_MAJOR < 5 && !defined(CONFIG_IDF_TARGET_ESP32C6) && !defined(CONFIG_IDF_TARGET_ESP32C2) +#if defined(ARDUINO_ARCH_ESP32) && ESP_IDF_VERSION_MAJOR < 5 && !defined(CONFIG_IDF_TARGET_ESP32C6) && !defined(CONFIG_IDF_TARGET_ESP32C61) && !defined(CONFIG_IDF_TARGET_ESP32C2) #include "NeoSettings.h" #include "NeoBusChannel.h" #include "NeoEsp32RmtMethod.h" diff --git a/lib/NeoPixelBus/src/internal/NeoEsp32RmtMethod.h b/lib/NeoPixelBus/src/internal/NeoEsp32RmtMethod.h index 722364b00..4490ee3eb 100644 --- a/lib/NeoPixelBus/src/internal/NeoEsp32RmtMethod.h +++ b/lib/NeoPixelBus/src/internal/NeoEsp32RmtMethod.h @@ -29,7 +29,7 @@ License along with NeoPixel. If not, see #pragma once -#if defined(ARDUINO_ARCH_ESP32) && ESP_IDF_VERSION_MAJOR < 5 && !defined(CONFIG_IDF_TARGET_ESP32C6) && !defined(CONFIG_IDF_TARGET_ESP32C2) +#if defined(ARDUINO_ARCH_ESP32) && ESP_IDF_VERSION_MAJOR < 5 && !defined(CONFIG_IDF_TARGET_ESP32C6) && !defined(CONFIG_IDF_TARGET_ESP32C61) && !defined(CONFIG_IDF_TARGET_ESP32C2) /* General Reference documentation for the APIs used in this implementation LOW LEVEL: (what is actually used) @@ -454,7 +454,7 @@ public: const static rmt_channel_t RmtChannelNumber = RMT_CHANNEL_3; }; -#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C5) && !defined(CONFIG_IDF_TARGET_ESP32C6) +#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C5) && !defined(CONFIG_IDF_TARGET_ESP32C6) && !defined(CONFIG_IDF_TARGET_ESP32C61) class NeoEsp32RmtChannel4 { diff --git a/lib/NeoPixelBus/src/internal/NeoEsp32RmtMethod_idf5.h b/lib/NeoPixelBus/src/internal/NeoEsp32RmtMethod_idf5.h index 7626e1ca5..7dfb1db4f 100644 --- a/lib/NeoPixelBus/src/internal/NeoEsp32RmtMethod_idf5.h +++ b/lib/NeoPixelBus/src/internal/NeoEsp32RmtMethod_idf5.h @@ -308,7 +308,7 @@ public: rmt_channel_handle_t RmtChannelNumber = NULL; }; -#if !defined(CONFIG_IDF_TARGET_ESP32C6) // C6 only 2 RMT channels ?? +#if !defined(CONFIG_IDF_TARGET_ESP32C6) && !defined(CONFIG_IDF_TARGET_ESP32C61) // C6 only 2 RMT channels ?? class NeoEsp32RmtChannel2 { public: @@ -326,7 +326,7 @@ public: rmt_channel_handle_t RmtChannelNumber = NULL; }; #endif // !defined(CONFIG_IDF_TARGET_ESP32C6) -#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C6) +#if !defined(CONFIG_IDF_TARGET_ESP32S2) && !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C6) && !defined(CONFIG_IDF_TARGET_ESP32C61) class NeoEsp32RmtChannel4 { @@ -582,7 +582,7 @@ typedef NeoEsp32RmtMethodBase NeoEs typedef NeoEsp32RmtMethodBase NeoEsp32Rmt1800KbpsMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt1400KbpsMethod; -#if !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C5) && !defined(CONFIG_IDF_TARGET_ESP32C6) +#if !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C5) && !defined(CONFIG_IDF_TARGET_ESP32C6) && !defined(CONFIG_IDF_TARGET_ESP32C61) typedef NeoEsp32RmtMethodBase NeoEsp32Rmt2Ws2811Method; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt2Ws2812xMethod; @@ -689,7 +689,7 @@ typedef NeoEsp32RmtMethodBase NeoEsp32Rmt1800KbpsInvertedMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt1400KbpsInvertedMethod; -#if !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C5) && !defined(CONFIG_IDF_TARGET_ESP32C6) +#if !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C5) && !defined(CONFIG_IDF_TARGET_ESP32C6) && !defined(CONFIG_IDF_TARGET_ESP32C61) typedef NeoEsp32RmtMethodBase NeoEsp32Rmt2Ws2811InvertedMethod; typedef NeoEsp32RmtMethodBase NeoEsp32Rmt2Ws2812xInvertedMethod; @@ -763,13 +763,13 @@ typedef NeoEsp32RmtMethodBase= 5 -#if (defined(CONFIG_IDF_TARGET_ESP32C5) || defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C2) || defined(CONFIG_IDF_TARGET_ESP32C6)) && !defined(HSPI_HOST) +#if (defined(CONFIG_IDF_TARGET_ESP32C5) || defined(CONFIG_IDF_TARGET_ESP32C3) || defined(CONFIG_IDF_TARGET_ESP32C2) || defined(CONFIG_IDF_TARGET_ESP32C6) || defined(CONFIG_IDF_TARGET_ESP32C61)) && !defined(HSPI_HOST) // HSPI_HOST depreciated in C3 #define HSPI_HOST SPI2_HOST #endif diff --git a/lib/NeoPixelBus/src/internal/NeoEspBitBangMethod.cpp b/lib/NeoPixelBus/src/internal/NeoEspBitBangMethod.cpp index bdb1d73ad..6ca22c84f 100644 --- a/lib/NeoPixelBus/src/internal/NeoEspBitBangMethod.cpp +++ b/lib/NeoPixelBus/src/internal/NeoEspBitBangMethod.cpp @@ -29,7 +29,7 @@ License along with NeoPixel. If not, see #include // ESP32C3 I2S is not supported yet -#if !defined(CONFIG_IDF_TARGET_ESP32C5) && !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C2) && !defined(CONFIG_IDF_TARGET_ESP32C6) && !defined(CONFIG_IDF_TARGET_ESP32P4) +#if !defined(CONFIG_IDF_TARGET_ESP32C5) && !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C2) && !defined(CONFIG_IDF_TARGET_ESP32C6) && !defined(CONFIG_IDF_TARGET_ESP32C61) && !defined(CONFIG_IDF_TARGET_ESP32P4) #if !defined(ARDUINO_ARCH_ESP8266) #include "soc/gpio_periph.h" #endif diff --git a/lib/NeoPixelBus/src/internal/NeoEspBitBangMethod.h b/lib/NeoPixelBus/src/internal/NeoEspBitBangMethod.h index 44f865488..63068f974 100644 --- a/lib/NeoPixelBus/src/internal/NeoEspBitBangMethod.h +++ b/lib/NeoPixelBus/src/internal/NeoEspBitBangMethod.h @@ -29,7 +29,7 @@ License along with NeoPixel. If not, see #if defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32) // ESP32C3 I2S is not supported yet -#if !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C2) && !defined(CONFIG_IDF_TARGET_ESP32C6) +#if !defined(CONFIG_IDF_TARGET_ESP32C3) && !defined(CONFIG_IDF_TARGET_ESP32C2) && !defined(CONFIG_IDF_TARGET_ESP32C6) && !defined(CONFIG_IDF_TARGET_ESP32C61) #if defined(ARDUINO_ARCH_ESP8266) #include diff --git a/platformio.ini b/platformio.ini index 4f3ed51be..e040e8205 100644 --- a/platformio.ini +++ b/platformio.ini @@ -29,7 +29,7 @@ extra_configs = platformio_esp32c3_envs.ini platformio_esp32c5_envs.ini platformio_esp32c6_envs.ini -; platformio_esp32c61_envs.ini + platformio_esp32c61_envs.ini platformio_esp32p4_envs.ini diff --git a/platformio_core_defs.ini b/platformio_core_defs.ini index 555878e3b..03530a860 100644 --- a/platformio_core_defs.ini +++ b/platformio_core_defs.ini @@ -166,9 +166,11 @@ extra_scripts = ${esp82xx_common.extra_scripts} [core_esp32_IDF5_5_1__3_3_3_LittleFS] ;platform = https://github.com/Jason2866/platform-espressif32.git#Arduino/IDF55_gcc15 ;platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/0410-1232-5.5/framework-arduinoespressif32-release_v5.5-2f303469.tar.xz -platform = https://github.com/Jason2866/platform-espressif32.git#23aed73e4e570d3b6608c15677fea01d6a722d94 -;platform_packages = -platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/0711-1952-5.5/framework-arduinoespressif32-release_v5.5-deb3f45f.tar.xz + +;platform = https://github.com/Jason2866/platform-espressif32.git#23aed73e4e570d3b6608c15677fea01d6a722d94 +;platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/1311-2008-5.5_orig/framework-arduinoespressif32-release_v5.5_orig-276436da.tar.xz +platform = https://github.com/Jason2866/platform-espressif32.git#Arduino/IDF55 +platform_packages = custom_remove_include = true build_flags = -DESP32_STAGE diff --git a/platformio_esp32c61_envs.ini b/platformio_esp32c61_envs.ini index f0f0b5f34..fbcee4542 100644 --- a/platformio_esp32c61_envs.ini +++ b/platformio_esp32c61_envs.ini @@ -4,11 +4,16 @@ build_flags = ${esp32_base_idf5_5.build_flags} -DFEATURE_ARDUINO_OTA=1 -DUSE_LITTLEFS -DESP32C61 + -DDISABLE_NEOPIXEL_PLUGINS=1 extra_scripts = ${esp32_base_idf5_5.extra_scripts} build_unflags = ${esp32_base_idf5_5.build_unflags} -fexceptions board_build.filesystem = littlefs lib_ignore = ${esp32_base_idf5_5.lib_ignore} + NeoPixelBus + Adafruit NeoPixel + NeoPixelBus_wrapper + Adafruit NeoMatrix via NeoPixelBus board = esp32c61cdc diff --git a/src/ESPEasy/net/wifi/ESPEasyWiFi_state_machine.cpp b/src/ESPEasy/net/wifi/ESPEasyWiFi_state_machine.cpp index d4cebcf82..e44c24509 100644 --- a/src/ESPEasy/net/wifi/ESPEasyWiFi_state_machine.cpp +++ b/src/ESPEasy/net/wifi/ESPEasyWiFi_state_machine.cpp @@ -477,7 +477,7 @@ bool ESPEasyWiFi_t::connectSTA() WiFiEventData.warnedNoValidWiFiSettings = false; */ - setSTA(true); + WiFi_pre_STA_setup(); # if defined(ESP8266) wifi_station_set_hostname(NetworkCreateRFCCompliantHostname().c_str()); diff --git a/src/ESPEasy/net/wifi/ESPEasyWifi_abstracted_ESP8266.cpp b/src/ESPEasy/net/wifi/ESPEasyWifi_abstracted_ESP8266.cpp index 72e18931a..99ea37b5d 100644 --- a/src/ESPEasy/net/wifi/ESPEasyWifi_abstracted_ESP8266.cpp +++ b/src/ESPEasy/net/wifi/ESPEasyWifi_abstracted_ESP8266.cpp @@ -30,6 +30,9 @@ bool WiFi_pre_setup() { bool WiFi_pre_STA_setup() { if (!doSetSTA(true)) { return false; } + // FIXME TD-er: Should ESP8266 first disable autoconnect/autoreconnect? + // On ESP32 this does clear the last used credentials, so it will be able to accept different credentials to connect to. + // Assign to 2 separate bools to make sure both are executed. const bool autoConnect = WiFi.setAutoConnect(true); const bool autoReconnect = WiFi.setAutoReconnect(true); diff --git a/src/include/esp32x_fixes.h b/src/include/esp32x_fixes.h index 76cdc9b79..f279e16d7 100644 --- a/src/include/esp32x_fixes.h +++ b/src/include/esp32x_fixes.h @@ -119,7 +119,7 @@ #ifndef CONFIG_SOC_WIFI_HE_SUPPORT -#if CONFIG_IDF_TARGET_ESP32C5 || CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32C61 +#if CONFIG_IDF_TARGET_ESP32C5 || CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32C61 || CONFIG_IDF_TARGET_ESP32C61 #define CONFIG_SOC_WIFI_HE_SUPPORT 1 #else #define CONFIG_SOC_WIFI_HE_SUPPORT 0 diff --git a/src/src/CustomBuild/ESPEasy_buildinfo.h b/src/src/CustomBuild/ESPEasy_buildinfo.h index 0fb8e9ba6..3472ca609 100644 --- a/src/src/CustomBuild/ESPEasy_buildinfo.h +++ b/src/src/CustomBuild/ESPEasy_buildinfo.h @@ -71,7 +71,7 @@ #ifdef ESP32 /* - #if CONFIG_IDF_TARGET_ESP32C6 || // support USB via HWCDC using JTAG interface + #if CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32C61 || // support USB via HWCDC using JTAG interface CONFIG_IDF_TARGET_ESP32C3 || // support USB via HWCDC using JTAG interface CONFIG_IDF_TARGET_ESP32S2 || // support USB via USBCDC CONFIG_IDF_TARGET_ESP32S3 // support USB via HWCDC using JTAG interface or USBCDC diff --git a/src/src/DataStructs_templ/SettingsStruct.cpp b/src/src/DataStructs_templ/SettingsStruct.cpp index a925c7e8c..65622222b 100644 --- a/src/src/DataStructs_templ/SettingsStruct.cpp +++ b/src/src/DataStructs_templ/SettingsStruct.cpp @@ -866,7 +866,7 @@ bool SettingsStruct_tmpl::getPinBootStateIndex( index_high = gpio_pin - maxStates; -# if defined(ESP32_CLASSIC) || defined(ESP32C2) || defined(ESP32C3) || defined(ESP32C5) || defined(ESP32C5) || defined(ESP32C6) +# if defined(ESP32_CLASSIC) || defined(ESP32C2) || defined(ESP32C3) || defined(ESP32C5) || defined(ESP32C5) || defined(ESP32C6) || defined(ESP32C61) // These can all store in the PinBootStates_ESP32 array return (index_high < maxStatesesp32); diff --git a/src/src/ESPEasyCore/ESPEasy_Console.cpp b/src/src/ESPEasyCore/ESPEasy_Console.cpp index 48c80d4ff..8b4ff8384 100644 --- a/src/src/ESPEasyCore/ESPEasy_Console.cpp +++ b/src/src/ESPEasyCore/ESPEasy_Console.cpp @@ -16,6 +16,10 @@ #include +#ifdef ESP32 +#include +#endif + EspEasy_Console_t::EspEasy_Console_t() : _mainSerial(LOG_TO_SERIAL) @@ -236,6 +240,13 @@ void EspEasy_Console_t::begin(uint32_t baudrate) if (_fallbackSerial._serial != nullptr) { _fallbackSerial._serial->begin(baudrate); + +#ifdef ESP32 + // Need to have this string as C-string, not F-string + perimanSetPinBusExtraType(SOC_RX0, "Console"); + perimanSetPinBusExtraType(SOC_TX0, "Console"); +#endif + addLog(LOG_LEVEL_INFO, F("ESPEasy console fallback enabled")); } #endif // if USES_ESPEASY_CONSOLE_FALLBACK_PORT diff --git a/src/src/Helpers/Hardware.cpp b/src/src/Helpers/Hardware.cpp index 718a1ede9..ffb469e1b 100644 --- a/src/src/Helpers/Hardware.cpp +++ b/src/src/Helpers/Hardware.cpp @@ -456,6 +456,8 @@ int getCPU_MaxFreqMHz() return 160; #elif CONFIG_IDF_TARGET_ESP32C6 return 160; +#elif CONFIG_IDF_TARGET_ESP32C61 + return 120; #elif CONFIG_IDF_TARGET_ESP32C5 return 240; #elif CONFIG_IDF_TARGET_ESP32H2 @@ -734,6 +736,32 @@ void readBootCause() { case JTAG_RESET : lastBootCause = BOOT_CAUSE_MANUAL_REBOOT; break; /**<24, jtag reset CPU*/ } +#elif defined(ESP32C61) + switch (rtc_get_reset_reason(0)) { + case NO_MEAN : break; + case POWERON_RESET : lastBootCause = BOOT_CAUSE_MANUAL_REBOOT; break; /**<1, Vbat power on reset*/ + case RTC_SW_SYS_RESET : lastBootCause = BOOT_CAUSE_SOFT_RESTART; break; /**<3, Software reset digital core*/ + case DEEPSLEEP_RESET : lastBootCause = BOOT_CAUSE_DEEP_SLEEP; break; /**<5, Deep Sleep reset digital core*/ + + case RTC_PWR_GLITCH_RESET : lastBootCause = BOOT_CAUSE_POWER_UNSTABLE; break; + case CPU_LOCKUP_RESET : lastBootCause = BOOT_CAUSE_EXT_WD; break; + + case TG0WDT_SYS_RESET : lastBootCause = BOOT_CAUSE_EXT_WD; break; /**<7, Timer Group0 Watch dog reset digital core*/ + case TG1WDT_SYS_RESET : lastBootCause = BOOT_CAUSE_EXT_WD; break; /**<8, Timer Group1 Watch dog reset digital core*/ + case RTCWDT_SYS_RESET : lastBootCause = BOOT_CAUSE_EXT_WD; break; /**<9, RTC Watch dog Reset digital core*/ + case TG0WDT_CPU_RESET : lastBootCause = BOOT_CAUSE_EXT_WD; break; /**<11, Time Group0 reset CPU*/ + case RTC_SW_CPU_RESET : lastBootCause = BOOT_CAUSE_SOFT_RESTART; break; /**<12, Software reset CPU*/ + case RTCWDT_CPU_RESET : lastBootCause = BOOT_CAUSE_EXT_WD; break; /**<13, RTC Watch dog Reset CPU*/ + case RTCWDT_BROWN_OUT_RESET : lastBootCause = BOOT_CAUSE_POWER_UNSTABLE; break; /**<15, Reset when the vdd voltage is not stable*/ + case RTCWDT_RTC_RESET : lastBootCause = BOOT_CAUSE_EXT_WD; break; /**<16, RTC Watch dog reset digital core and rtc module*/ + case TG1WDT_CPU_RESET : lastBootCause = BOOT_CAUSE_EXT_WD; break; /**<17, Time Group1 reset CPU*/ + case SUPER_WDT_RESET : lastBootCause = BOOT_CAUSE_EXT_WD; break; /**<18, super watchdog reset digital core and rtc module*/ + case EFUSE_RESET : lastBootCause = BOOT_CAUSE_MANUAL_REBOOT; break; /**<20, efuse reset digital core*/ + case USB_UART_CHIP_RESET : lastBootCause = BOOT_CAUSE_MANUAL_REBOOT; break; /**<21, usb uart reset digital core */ + case USB_JTAG_CHIP_RESET : lastBootCause = BOOT_CAUSE_MANUAL_REBOOT; break; /**<22, usb jtag reset digital core */ + case JTAG_RESET : lastBootCause = BOOT_CAUSE_MANUAL_REBOOT; break; /**<24, jtag reset CPU*/ + } + #elif defined(ESP32P4) switch (rtc_get_reset_reason(0)) { case NO_MEAN : break; diff --git a/src/src/Helpers/Hardware_ADC_cali.h b/src/src/Helpers/Hardware_ADC_cali.h index 0972e714c..387405fd6 100644 --- a/src/src/Helpers/Hardware_ADC_cali.h +++ b/src/src/Helpers/Hardware_ADC_cali.h @@ -18,7 +18,7 @@ # include # endif // if ESP_IDF_VERSION_MAJOR >= 5 -# if CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C5 || CONFIG_IDF_TARGET_ESP32C6 +# if CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C5 || CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32C61 /** * On ESP32C3, ADC2 is no longer supported, due to its HW limitation. * Search for errata on espressif website for more details. diff --git a/src/src/Helpers/Hardware_GPIO_ESP32C61.cpp b/src/src/Helpers/Hardware_GPIO_ESP32C61.cpp new file mode 100644 index 000000000..aa2be5b89 --- /dev/null +++ b/src/src/Helpers/Hardware_GPIO_ESP32C61.cpp @@ -0,0 +1,145 @@ +#include "../Helpers/Hardware_GPIO.h" + +#ifdef ESP32C61 +# include + +# include "../Helpers/Hardware_device_info.h" + +// ******************************************************************************** +// Get info of a specific GPIO pin +// ******************************************************************************** + +bool getGpioInfo(int gpio, int& pinnr, bool& input, bool& output, bool& warning) { + pinnr = -1; // ESP32 does not label the pins, they just use the GPIO number. + + input = GPIO_IS_VALID_GPIO(gpio); + output = GPIO_IS_VALID_OUTPUT_GPIO(gpio); + warning = isBootStrapPin(gpio); + + if (!(GPIO_IS_VALID_GPIO(gpio))) { return false; } + + if (gpio == 27) { + // By default VDD_SPI is the power supply pin for embedded flash or external flash. It can only be used as GPIO + // only when the chip is connected to an external flash, and this flash is powered by an external power supply + input = false; + output = false; + warning = true; + } + + if (isFlashInterfacePin_ESPEasy(gpio)) { + // Connected to the integrated SPI flash. + input = false; + output = false; + warning = true; + } + + if ((gpio == PIN_USB_D_MIN) || (gpio == PIN_USB_D_PLUS)) { + // USB OTG and USB Serial/JTAG function. USB signal is a differential + // signal transmitted over a pair of D+ and D- wires. + warning = true; + } + + return (input || output); +} + +bool isBootModePin(int gpio) +{ + return gpio == 9; +} + +bool isBootStrapPin(int gpio) +{ + // See: https://www.espressif.com/sites/default/files/documentation/esp32-c6_datasheet_en.pdf + // Chapter 3 - Boot Configurations + if (gpio == 8) { + // Strapping pin which must be high during flashing + // ROM message printing + return true; + } + + if (gpio == 9) { + // Strapping pin to force download mode (like GPIO-0 on ESP8266/ESP32-classic) + // internal Weak pull-up, must be pulled down to enter download boot mode. + return true; + } + + // Ignoring SDIO stapping pins as this will not be used in typical use cases where ESPEasy is used. + /* + if (gpio == 4 || gpio == 5) { + // SDIO Sampling and Driving Clock Edge + // MTMS = GPIO-4 + // MTDI = Gpio-5 + return true; + } + */ + + if (gpio == 15) { + // JTAG signal source + return true; + } + + return false; +} + +bool getGpioPullResistor(int gpio, bool& hasPullUp, bool& hasPullDown) { + hasPullDown = false; + hasPullUp = false; + + if (validGpio(gpio)) { + hasPullUp = true; + hasPullDown = true; + } + + return true; +} + +bool validGpio(int gpio) { + if (!GPIO_IS_VALID_GPIO(gpio)) { return false; } + + int pinnr; + bool input; + bool output; + bool warning; + + return getGpioInfo(gpio, pinnr, input, output, warning); +} + +// Get ADC related info for a given GPIO pin +// @param gpio_pin GPIO pin number +// @param adc Number of ADC unit (0 == Hall effect) +// @param ch Channel number on ADC unit +// @param t index of touch pad ID +bool getADC_gpio_info(int gpio_pin, int& adc, int& ch, int& t) +{ + adc = -1; + ch = -1; + t = -1; + + if ((gpio_pin >= 0) && (gpio_pin <= 6)) { + adc = 1; + ch = gpio_pin; + return true; + } + return false; +} + +#if SOC_TOUCH_SENSOR_SUPPORTED +int touchPinToGpio(int touch_pin) +{ + // No touch pin support + return -1; +} +#endif + +#if SOC_DAC_SUPPORTED +// Get DAC related info for a given GPIO pin +// @param gpio_pin GPIO pin number +// @param dac Number of DAC unit +bool getDAC_gpio_info(int gpio_pin, int& dac) +{ + // ESP32-C3, ESP32-S3, ESP32-C2, ESP32-C6 and ESP32-H2 don't have a DAC onboard + return false; +} +#endif + +#endif // ifdef ESP32C61 diff --git a/src/src/Helpers/Hardware_defines.h b/src/src/Helpers/Hardware_defines.h index b9fa7885c..128db88b2 100644 --- a/src/src/Helpers/Hardware_defines.h +++ b/src/src/Helpers/Hardware_defines.h @@ -86,6 +86,8 @@ static_assert(false, "Implement processor architecture"); # define SOC_RX0 44 # elif CONFIG_IDF_TARGET_ESP32C6 # define SOC_RX0 17 +# elif CONFIG_IDF_TARGET_ESP32C61 +# define SOC_RX0 17 # elif CONFIG_IDF_TARGET_ESP32C5 # define SOC_RX0 12 # elif CONFIG_IDF_TARGET_ESP32C3 @@ -104,6 +106,8 @@ static_assert(false, "Implement processor architecture"); # define SOC_TX0 43 # elif CONFIG_IDF_TARGET_ESP32C6 # define SOC_TX0 16 +# elif CONFIG_IDF_TARGET_ESP32C61 +# define SOC_TX0 16 # elif CONFIG_IDF_TARGET_ESP32C5 # define SOC_TX0 11 # elif CONFIG_IDF_TARGET_ESP32C3 @@ -126,6 +130,9 @@ static_assert(false, "Implement processor architecture"); #ifdef ESP32C6 #define PIN_USB_D_MIN 12 #endif +#ifdef ESP32C61 +#define PIN_USB_D_MIN 12 // TODO TD-er: Check +#endif #ifdef ESP32C5 #define PIN_USB_D_MIN 13 #endif @@ -145,6 +152,9 @@ static_assert(false, "Implement processor architecture"); #ifdef ESP32C6 #define PIN_USB_D_PLUS 13 #endif +#ifdef ESP32C61 +#define PIN_USB_D_PLUS 13 // TODO TD-er: Check +#endif #ifdef ESP32C5 #define PIN_USB_D_PLUS 14 #endif diff --git a/src/src/Helpers/Hardware_device_info.cpp b/src/src/Helpers/Hardware_device_info.cpp index c54724056..29f9c8fed 100644 --- a/src/src/Helpers/Hardware_device_info.cpp +++ b/src/src/Helpers/Hardware_device_info.cpp @@ -223,7 +223,7 @@ String getChipFeaturesString() { } bool getFlashChipOPI_wired() { - # if defined(ESP32_CLASSIC) || defined(ESP32C2) + # if defined(ESP32_CLASSIC) || defined(ESP32C2) || defined(ESP32C61) return false; # else // ifdef ESP32_CLASSIC @@ -247,7 +247,7 @@ uint32_t getFlashChipSpeed() { // for which patches have been submitted and somehow they managed to merge it completely wrong. return ESP.getFlashChipSpeed(); # else // if ESP_IDF_STILL_NEEDS_SPI_REGISTERS_FIXED -#ifdef ESP32P4 +#if defined(ESP32P4) || defined(ESP32C61) // TODO TD-er: Implement // return 80000000; return ESP.getFlashChipSpeed(); diff --git a/src/src/Helpers/Hardware_device_info_ESP32C61.cpp b/src/src/Helpers/Hardware_device_info_ESP32C61.cpp index 75d4740ab..955d4ffd0 100644 --- a/src/src/Helpers/Hardware_device_info_ESP32C61.cpp +++ b/src/src/Helpers/Hardware_device_info_ESP32C61.cpp @@ -3,6 +3,84 @@ #ifdef ESP32C61 +# include +# include +# include +# include +# include +# include +# include + + +bool isFlashInterfacePin_ESPEasy(int gpio) { + // FIXME TD-er: Must know whether we have internal or external flash + + // For chip variants with an in-package flash, this pin can not be used. + + // FIXME TD-er: No idea where these pins come from. Disabled for now. + // See: https://github.com/letscontrolit/ESPEasy/issues/5220 + + /* + if ((gpio == 10) || (gpio == 11)) { + return true; + } + */ + + // For chip variants without an in-package flash, this pin can not be used. + // if (gpio == 14) + // return true; + + // GPIO-27: Flash voltage selector + // GPIO-24 ... 30: Connected to internal flash (might be available when using external flash???) + + switch (gpio) { +#if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 4, 0) + case SPI_IOMUX_PIN_NUM_CS: + case SPI_IOMUX_PIN_NUM_CLK: + case SPI_IOMUX_PIN_NUM_MOSI: + case SPI_IOMUX_PIN_NUM_MISO: + case SPI_IOMUX_PIN_NUM_WP: + case SPI_IOMUX_PIN_NUM_HD: +#else + case MSPI_IOMUX_PIN_NUM_HD: + case MSPI_IOMUX_PIN_NUM_WP: + case MSPI_IOMUX_PIN_NUM_CS0: + case MSPI_IOMUX_PIN_NUM_CLK: + case MSPI_IOMUX_PIN_NUM_MOSI: + case MSPI_IOMUX_PIN_NUM_MISO: +#endif + return true; + } + return false; + + // return (gpio) >= 24 && (gpio) <= 30 && gpio != 27; +} + +bool flashVddPinCanBeUsedAsGPIO() +{ + return false; +} + +int32_t getEmbeddedFlashSize() +{ + return 8; // TODO TD-er: Must implement + // See: framework-arduinoespressif32\tools\esp32-arduino-libs\esp32c61\include\soc\esp32c61\include\soc\efuse_reg.h +} + +int32_t getEmbeddedPSRAMSize() +{ + // Doesn't have PSRAM + return 0; +} + +# ifndef isPSRAMInterfacePin +bool isPSRAMInterfacePin(int gpio) { + return false; +} + +# endif // ifndef isPSRAMInterfacePin + + const __FlashStringHelper* getChipModel(uint32_t chip_model, uint32_t chip_revision, uint32_t pkg_version, bool single_core) { if (20 == chip_model) { // ESP32-C61 diff --git a/src/src/Helpers/StringGenerator_GPIO.cpp b/src/src/Helpers/StringGenerator_GPIO.cpp index 14e535a8c..0b58bb23b 100644 --- a/src/src/Helpers/StringGenerator_GPIO.cpp +++ b/src/src/Helpers/StringGenerator_GPIO.cpp @@ -212,6 +212,10 @@ const __FlashStringHelper* getConflictingUse_flashstr(int gpio, PinSelectPurpose return F("Flash Vdd"); } +#elif defined(ESP32C61) + + // TODO TD-er: Must check if C61 has conflicts here + #elif defined(ESP32C2) || defined(ESP32C3) if (gpio == 11) { diff --git a/src/src/Helpers/StringGenerator_System.cpp b/src/src/Helpers/StringGenerator_System.cpp index ad60dd3cc..d2d1bf7f1 100644 --- a/src/src/Helpers/StringGenerator_System.cpp +++ b/src/src/Helpers/StringGenerator_System.cpp @@ -23,6 +23,8 @@ #include #elif defined(ESP32C6) #include + #elif defined(ESP32C61) + #include #elif defined(ESP32P4) #include # elif defined(ESP32_CLASSIC) @@ -233,6 +235,31 @@ const __FlashStringHelper * getResetReasonString_f(uint8_t icore, bool& isDEEPSL case JTAG_RESET : return F("jtag reset CPU"); } + #elif defined(ESP32C61) + + // See tools\sdk\esp32\include\esp_rom\include\esp32c61\rom\rtc.h + switch (rtc_get_reset_reason(icore)) { + case NO_MEAN : break; + case POWERON_RESET : return F("Vbat power on reset"); + case RTC_SW_SYS_RESET : return F("Software reset digital core (hp system)"); + case DEEPSLEEP_RESET : isDEEPSLEEP_RESET = true; break; + //case DEEPSLEEP_RESET : return F("Deep Sleep reset digital core (hp system)"); + case TG0WDT_SYS_RESET : return F("Timer Group0 Watch dog reset digital core (hp system)"); + case TG1WDT_SYS_RESET : return F("Timer Group1 Watch dog reset digital core (hp system)"); + case RTCWDT_SYS_RESET : return F("RTC Watch dog Reset digital core (hp system)"); + case TG0WDT_CPU_RESET : return F("Time Group0 reset CPU"); + case RTC_SW_CPU_RESET : return F("Software reset CPU"); + case RTCWDT_CPU_RESET : return F("RTC Watch dog Reset CPU"); + case RTCWDT_BROWN_OUT_RESET : return F("Reset when the vdd voltage is not stable"); + case RTCWDT_RTC_RESET : return F("RTC Watch dog reset digital core and rtc module"); + case TG1WDT_CPU_RESET : return F("Time Group1 reset CPU"); + case SUPER_WDT_RESET : return F("super watchdog reset digital core and rtc module"); + case EFUSE_RESET : return F("efuse reset digital core (hp system)"); + case USB_UART_CHIP_RESET : return F("usb uart reset digital core (hp system)"); + case USB_JTAG_CHIP_RESET : return F("usb jtag reset digital core (hp system)"); + case JTAG_RESET : return F("jtag reset CPU"); + } + #elif defined(ESP32P4) // See tools\sdk\esp32\include\esp_rom\include\esp32p4\rom\rtc.h diff --git a/tools/pio/copy_files.py b/tools/pio/copy_files.py index afef51984..1b8b58506 100644 --- a/tools/pio/copy_files.py +++ b/tools/pio/copy_files.py @@ -21,7 +21,7 @@ def get_max_bin_size(env_name, file_suffix): if "4M316k" in env_name or "_ESP32_4M2M" in env_name: # ESP32 with 1800k of sketch space. max_bin_size = 1900544 - if "_ESP32_" in env_name or "_ESP32c5_" in env_name or "_ESP32c6_" in env_name or "_ESP32s2_" in env_name or "_ESP32s3_" in env_name: + if "_ESP32_" in env_name or "_ESP32c5_" in env_name or "_ESP32c6_" in env_name or "_ESP32c61_" in env_name or "_ESP32s2_" in env_name or "_ESP32s3_" in env_name: if "_8M1M" in env_name: # ESP32 with 3520k of sketch space. max_bin_size = 3604480