Część pamięci udało mi się odzyskać poprzez wyrzucenie "littlefs" z GG
Poniżej diff zmian, które trzeba zrobić:
Code: Select all
diff --git a/src/SuplaConfigManager.h b/src/SuplaConfigManager.h
index bce2c2ca..fff3e280 100644
--- a/src/SuplaConfigManager.h
+++ b/src/SuplaConfigManager.h
@@ -19,7 +19,6 @@
#ifdef ARDUINO_ARCH_ESP8266
#include "FS.h"
-#include <LittleFS.h>
#elif ARDUINO_ARCH_ESP32
#include "SPIFFS.h"
#include <os.h>
diff --git a/src/SuplaDeviceGUI.h b/src/SuplaDeviceGUI.h
index c63bca42..aeaae8c9 100644
--- a/src/SuplaDeviceGUI.h
+++ b/src/SuplaDeviceGUI.h
@@ -24,7 +24,6 @@
#include <SuplaDeviceExtensions.h>
#include <SuplaDevice.h>
-#include <supla/storage/littlefs_config.h>
#include "src/control/ControlGUI.h"
#include "GUIGenericCommon.h"
diff --git a/src/src/control/ThermostatGUI.h b/src/src/control/ThermostatGUI.h
index 5c6aa9b7..0a20460f 100644
--- a/src/src/control/ThermostatGUI.h
+++ b/src/src/control/ThermostatGUI.h
@@ -22,7 +22,6 @@
#include <SuplaDevice.h>
#include <supla/storage/eeprom.h>
-#include <supla/storage/littlefs_config.h>
#include <supla/control/hvac_base.h>
#include <supla/clock/clock.h>
#include <supla/control/internal_pin_output.h>
diff --git a/src/src/update/SuplaHTTPUpdateServer.cpp b/src/src/update/SuplaHTTPUpdateServer.cpp
index 0157ab33..09aaa13a 100644
--- a/src/src/update/SuplaHTTPUpdateServer.cpp
+++ b/src/src/update/SuplaHTTPUpdateServer.cpp
@@ -272,7 +272,7 @@ void HTTPUpdateServer::updateManual() {
if (_serial_output)
Serial.printf("Update: %s\n", upload.filename.c_str());
if (upload.name == "filesystem") {
- size_t fsSize = ((size_t)&_FS_end - (size_t)&_FS_start);
+ size_t fsSize = 0; //((size_t)&_FS_end - (size_t)&_FS_start);
close_all_fs();
if (!Update.begin(fsSize, U_FS, ConfigESP->getGpio(FUNCTION_CFG_LED),
ConfigESP->getLevel(ConfigESP->getGpio(FUNCTION_CFG_LED)))) { // start with max available size
Tą ostatnią zmianę trzeba inaczej poprawić, aby program dostał jakoś te symbole _FS_end i _FS_start, albo je podmienić na coś innego.
Do tej pory były one brane przez LittleFs.h i stąd między innymi ten duży wzrost binarki i RAMu.
Z tego co widzę, to te symbole są w flash_hal.h więc ten include powinien to załatwić, ale nie sprawdzałem.
Natomiast powyższe zmiany pomagają tylko na chwilę. Jak przeniosłem się na najnowsze GG + najnowsze supla-device, to binarka i tak puchnie i RAM i tak jest zjadany przez inne funkcje/metody/obiekty, które wcześniej były wycinane przez kompilator.
Także prawdopodobnie kompilator/linker przestają optymalizować kod pod kątem wyrzucania nieużywanych obiektów.
Warto sprawdzić, czy na platform.io występuje ten sam problem. Jeśli nie, to można by buildera przerzucić na pio.
Można też szukać dalej, co jest przyczyną tego, że kompilator przestaje wycinać nieużywany kod (może są jakieś flagi, które określają maksymalny rozmiar kodu?)
Możliwe też, że samo posprzątanie include'ów ten problem tymczasowo naprawi (wtedy kompialtor ma mniej do przeglądania, szybciej się kompiluje program i może te optymalizacje będą działać).
Można też cały kod spróbować mocniej uporządkować, spłaszczyć trochę strukturę klas, albo dodać odpowiednie "ifdefy", które wyrzucą większość klas z kompilacji.
Ja na razie temat odpuszczam, bo będę chwilę nieobecny na forum. Potem mogę wrócić do tematu.