From de66ec45b70d08d6933f217d4b4d6a14801b7bbc Mon Sep 17 00:00:00 2001 From: Frank Date: Sun, 28 Apr 2024 22:56:06 +0200 Subject: [PATCH] make ALL_JSON_TO_PSRAM the default PSRAM optimizations: always enable ALL_JSON_TO_PSRAM and WLED_USE_PSRAM_JSON --- platformio.ini | 4 ---- wled00/file.cpp | 4 ++-- wled00/wled.h | 10 ++++++++-- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/platformio.ini b/platformio.ini index 278d0248..dcc7b014 100644 --- a/platformio.ini +++ b/platformio.ini @@ -1660,7 +1660,6 @@ build_flags = ${esp32_4MB_V4_S_base.esp32_build_flags} -D ARDUINO_USB_CDC_ON_BOOT=0 ; needed for arduino-esp32 >=2.0.4; avoids errors on startup -D WLEDMM_FASTPATH ; WLEDMM experimental option. Reduces audio lag (latency), and allows for faster LED framerates. May break compatibility with previous versions. -DBOARD_HAS_PSRAM -D WLED_USE_PSRAM_JSON ;; -D WLED_USE_PSRAM ;; WLED_USE_PSRAM causes major slow-down (slow LEDs) on some ESP32 boards - ;; -DALL_JSON_TO_PSRAM ;; WLEDMM experimental --> try to force all JSON stuff into PSRAM; gives more free heap. -D WLED_DISABLE_LOXONE ; FLASH 1272 bytes -D WLED_DISABLE_HUESYNC ; RAM 122 bytes; FLASH 6308 bytes -D WLED_DISABLE_ALEXA ; RAM 116 bytes; FLASH 13524 bytes @@ -1695,7 +1694,6 @@ build_flags = ${esp32_4MB_V4_S_base.esp32_build_flags} ;;${Speed_Flags.build_flags} ;; optimize for speed instead of size --> over 100% flash, but works with 256KB filesystem (alternative partitions file) -D WLEDMM_FASTPATH ; WLEDMM experimental option. Reduces audio lag (latency), and allows for faster LED framerates. May break compatibility with previous versions. -DBOARD_HAS_PSRAM -D WLED_USE_PSRAM_JSON ;; -D WLED_USE_PSRAM ;; WLED_USE_PSRAM causes major slow-down (slow LEDs) on some ESP32 boards - ;; -DALL_JSON_TO_PSRAM ;; WLEDMM experimental --> try to force all JSON stuff into PSRAM; gives more free heap. ;;-D CONFIG_ESP32_REV_MIN=3 ;; disables PSRAM bug workarounds in the core, reducing the code size and improving overall performance. -D WLED_RELEASE_NAME=esp32_4MB_PSRAM_REV3_S -D WLED_WATCHDOG_TIMEOUT=0 #-D WLED_DISABLE_BROWNOUT_DET @@ -1904,7 +1902,6 @@ build_flags = ${common.build_flags} ${esp32s2.build_flags} -DARDUINO_USB_MSC_ON_BOOT=0 -DARDUINO_USB_DFU_ON_BOOT=0 -D SERVERNAME='"WLED-S2"' -DBOARD_HAS_PSRAM -D WLED_USE_PSRAM_JSON ;; -D WLED_USE_PSRAM - -DALL_JSON_TO_PSRAM ;; WLEDMM experimental --> try to force all JSON stuff into PSRAM; gives more free heap. -D WLED_DISABLE_LOXONE ;; FLASH 1272 bytes -D WLED_DISABLE_HUESYNC ;; RAM 122 bytes; FLASH 6308 bytes -D WLED_DISABLE_ALEXA ;; RAM 116 bytes; FLASH 13524 bytes @@ -1955,7 +1952,6 @@ build_flags = ${common.build_flags} ${esp32s2.build_flags} -Wno-misleading-indentation -Wno-format-truncation -D WLED_RELEASE_NAME=esp32s2_4MB_M -DBOARD_HAS_PSRAM -D WLED_USE_PSRAM_JSON ;; -D WLED_USE_PSRAM - ;; -DALL_JSON_TO_PSRAM ;; WLEDMM experimental --> try to force all JSON stuff into PSRAM; gives more free heap. -DLOLIN_WIFI_FIX -DWLEDMM_WIFI_POWERON_HACK ;; seems to work much better with this -DARDUINO_USB_CDC_ON_BOOT=0 -DARDUINO_USB_MSC_ON_BOOT=0 -DARDUINO_USB_DFU_ON_BOOT=1 -D WLED_DISABLE_ADALIGHT ;; disables serial protocols, as the board only has CDC USB diff --git a/wled00/file.cpp b/wled00/file.cpp index 1c325861..d14fe2fc 100644 --- a/wled00/file.cpp +++ b/wled00/file.cpp @@ -408,9 +408,9 @@ static String getContentType(AsyncWebServerRequest* request, String filename){ } #if defined(BOARD_HAS_PSRAM) && defined(WLED_USE_PSRAM) -// caching presets in PSRAM may prevent occasional flashes seen when HomeAssitant polls WLED +// caching presets in PSRAM may prevent occasional flashes seen when HomeAssistant polls WLED // original idea by @akaricchi (https://github.com/Akaricchi) -// returns a pointer to the PSRAM buffer updates size parameter +// returns a pointer to the PSRAM buffer, updates size parameter static const uint8_t *getPresetCache(size_t &size) { static unsigned long presetsCachedTime; static uint8_t *presetsCached; diff --git a/wled00/wled.h b/wled00/wled.h index 36170286..050df258 100644 --- a/wled00/wled.h +++ b/wled00/wled.h @@ -8,7 +8,7 @@ */ // version code in format yymmddb (b = daily build) -#define VERSION 2404280 +#define VERSION 2404281 // WLEDMM - you can check for this define in usermods, to only enabled WLEDMM specific code in the "right" fork. Its not defined in AC WLED. #define _MoonModules_WLED_ @@ -184,6 +184,12 @@ // There is a code that will still not use PSRAM though: // AsyncJsonResponse is a derived class that implements DynamicJsonDocument (AsyncJson-v6.h) #if defined(ARDUINO_ARCH_ESP32) && defined(BOARD_HAS_PSRAM) && (defined(WLED_USE_PSRAM) || defined(WLED_USE_PSRAM_JSON)) // WLEDMM +// WLEDMM the JSON_TO_PSRAM feature works, so use it by default +#undef WLED_USE_PSRAM_JSON +#define WLED_USE_PSRAM_JSON +#undef ALL_JSON_TO_PSRAM +#define ALL_JSON_TO_PSRAM + struct PSRAM_Allocator { void* allocate(size_t size) { if (psramFound()) return ps_malloc(size); // use PSRAM if it exists @@ -802,7 +808,7 @@ WLED_GLOBAL int8_t spi_sclk _INIT(HW_PIN_CLOCKSPI); WLED_GLOBAL PSRAMDynamicJsonDocument doc; #else WLED_GLOBAL PSRAMDynamicJsonDocument doc(JSON_BUFFER_SIZE); - #warning experimental - trying to always use dynamic JSON + //#warning trying to always use dynamic JSON in PSRAM #endif #else WLED_GLOBAL StaticJsonDocument doc;