From a70b945bcec8577e7e73e29b377b2a07daaecff1 Mon Sep 17 00:00:00 2001 From: Frank <91616163+softhack007@users.noreply.github.com> Date: Thu, 26 Mar 2026 19:51:27 +0100 Subject: [PATCH] experimental: more info about PSRAM and Flash * PSRAM speed and transfer mode (serial only) * added all possible modes and speed flags (-P4 included) --- wled00/json.cpp | 11 +++++++--- wled00/wled.cpp | 56 ++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 63 insertions(+), 4 deletions(-) diff --git a/wled00/json.cpp b/wled00/json.cpp index ce2d0d74..af7583c7 100644 --- a/wled00/json.cpp +++ b/wled00/json.cpp @@ -1145,16 +1145,19 @@ void serializeInfo(JsonObject root) root[F("tpsram")] = ESP.getPsramSize(); //WLEDMM root[F("psram")] = ESP.getFreePsram(); root[F("psusedram")] = ESP.getMinFreePsram(); - #if CONFIG_ESP32S3_SPIRAM_SUPPORT // WLEDMM -S3 has "qspi" or "opi" PSRAM mode + // WLEDMM -S3 has "qspi" or "opi" PSRAM mode, -P4 has "hex" #if CONFIG_SPIRAM_MODE_OCT root[F("psrmode")] = F("πŸš€ OPI"); #elif CONFIG_SPIRAM_MODE_QUAD root[F("psrmode")] = F("qspi"); + #elif CONFIG_SPIRAM_MODE_HEX + root[F("psrmode")] = F("πŸš€πŸš€ HEX"); + #else + root[F("psrmode")] = F("dio"); #endif #endif } #endif - #endif // begin WLEDMM #ifdef ARDUINO_ARCH_ESP32 @@ -1191,8 +1194,10 @@ void serializeInfo(JsonObject root) case FM_QOUT: root[F("e32flashtext")] = F(" (QOUT)");break; case FM_DIO: root[F("e32flashtext")] = F(" (DIO)"); break; case FM_DOUT: root[F("e32flashtext")] = F(" (DOUT or other)");break; - #if defined(CONFIG_IDF_TARGET_ESP32S3) && CONFIG_ESPTOOLPY_FLASHMODE_OPI + #if CONFIG_ESPTOOLPY_FLASHMODE_OPI case FM_FAST_READ: root[F("e32flashtext")] = F(" (πŸš€OPI)");break; + #elif CONFIG_ESPTOOLPY_FLASHMODE_HEX + case FM_FAST_READ: root[F("e32flashtext")] = F(" (πŸš€πŸš€HEX)");break; #else case FM_FAST_READ: root[F("e32flashtext")] = F(" (fast_read)");break; #endif diff --git a/wled00/wled.cpp b/wled00/wled.cpp index 1434c491..611f4e41 100644 --- a/wled00/wled.cpp +++ b/wled00/wled.cpp @@ -702,10 +702,64 @@ void WLED::setup() } #endif + + #ifdef CONFIG_ESPTOOLPY_FLASH_SAMPLE_MODE_DTR + DEBUG_PRINTLN(F("FLASH access: DTR")); // faster + #elif CONFIG_ESPTOOLPY_FLASH_SAMPLE_MODE_STR + DEBUG_PRINTLN(F("FLASH access: STR")); // standard + #endif + #ifdef CONFIG_SPI_FLASH_HPM_ENA + DEBUG_PRINTLN(F("FLASH high performance mode: enabled")); + #endif + #ifdef CONFIG_SPI_FLASH_HPM_ON + DEBUG_PRINTLN(F("FLASH high performance mode: on")); // faster with STR + #endif + #if (defined(BOARD_HAS_PSRAM) || (ESP_IDF_VERSION_MAJOR > 3)) && (defined(WLED_USE_PSRAM) || defined(WLED_USE_PSRAM_JSON)) // WLEDMM if (psramFound()) { - DEBUG_PRINT(F("Total PSRAM: ")); DEBUG_PRINT(ESP.getPsramSize()/1024); DEBUG_PRINTLN("kB"); + USER_PRINTLN(); + USER_PRINT(F("Total PSRAM: ")); USER_PRINT(ESP.getPsramSize()/1024); USER_PRINTLN("kB"); DEBUG_PRINT(F("Free PSRAM : ")); DEBUG_PRINT(ESP.getFreePsram()/1024); DEBUG_PRINTLN("kB"); + #if CONFIG_SPIRAM_MODE_HEX + USER_PRINT(F("PSRAM mode: hex, ")); + #ifdef SPIRAM_USE_8LINE_MODE + USER_PRINTLN(F("8-line")); + #else + USER_PRINTLN(F("16-line")); + #endif + #elif CONFIG_SPIRAM_MODE_OCT + USER_PRINTLN(F("PSRAM mode: octal, DTR")); + #elif CONFIG_SPIRAM_MODE_QUAD + USER_PRINTLN(F("PSRAM mode: quad, STR")); + #endif + #ifdef SPIRAM_ECC_ENABLE + DEBUG_PRINTLN(F("PSRAM error correction: ECC enabled")); + #endif + #if defined(CONFIG_SPIRAM_SPEED_250M) + USER_PRINTLN(F("PSRAM speed: 250 MHz")); + #elif defined(CONFIG_SPIRAM_SPEED_200M) + USER_PRINTLN(F("PSRAM speed: 200 MHz")); + #elif defined(CONFIG_SPIRAM_SPEED_160M) + USER_PRINTLN(F("PSRAM speed: 160 MHz")); + #elif defined(CONFIG_SPIRAM_SPEED_120M) + USER_PRINTLN(F("PSRAM speed: 120 MHz")); + #elif defined(CONFIG_SPIRAM_SPEED_80M) + USER_PRINTLN(F("PSRAM speed: 80 MHz")); + #elif defined(CONFIG_SPIRAM_SPEED_40M) + USER_PRINTLN(F("PSRAM speed: 40 MHz")); + #elif defined(CONFIG_SPIRAM_SPEED_26M) + USER_PRINTLN(F("PSRAM speed: 26 MHz")); + #elif defined(CONFIG_SPIRAM_SPEED_20M) + USER_PRINTLN(F("PSRAM speed: 20 MHz")); + #endif + #ifdef CONFIG_SPIRAM_OCCUPY_HSPI_HOST + DEBUG_PRINTLN(F("PSRAM host: HSPI")); + #elif CONFIG_SPIRAM_OCCUPY_VSPI_HOST + DEBUG_PRINTLN(F("PSRAM host: VSPI")); + #elif CONFIG_SPIRAM_OCCUPY_NO_HOST + DEBUG_PRINTLN(F("PSRAM host: none")); + #endif + USER_PRINTLN(); } #else DEBUG_PRINTLN(F("PSRAM not used."));