GUI-Generic i SSL

krycha88
Posts: 5208
Joined: Fri Nov 16, 2018 7:25 am

Post

klew wrote: Sun Mar 17, 2024 6:46 pm Prosiłem już kilka razy, więc jeszcze raz poproszę.
Podaj dokładne rewizje które porównujesz (rozumiem że jedna to 23.11 a druga to obecny main, czy coś innego)?
Daj też proszę rewizję GG na której testujesz.
Podaj też parametry do kompilacji płytki, abym mógł to u siebie skompilować.
Nowa biblioteka
https://github.com/krycha88/GUI-Generic
https://github.com/krycha88/GUI-Generic ... properties

Stara biblioteka
https://github.com/krycha88/GUI-Generic/tree/develop
https://github.com/krycha88/GUI-Generic ... properties

Ale żeby wykluczyć błędy podmieniam po prostu bibliotekę na develop

A to flagi na których testuję:

Code: Select all

arduino-cli compile --no-color --quiet --clean -e --libraries "/var/www/html/code/lib" -b esp8266:esp8266:esp8285:eesz=1M64,xtal=160 --build-property "build.extra_flags=-DESP8266 '-DBUILD_VERSION=\"7.14.10\"' '-DOPTIONS_HASH=\"cc239bf77b79ef55436b762b80ec7b09\"' -DATOMIC_FS_UPDATE -DMIMETYPE_MINIMAL -DBEARSSL_SSL_BASIC -DNDEBUG -DSUPLA_CONFIG -DSUPLA_DISABLE_LOGS -DSUPLA_ENABLE_GUI -DSUPLA_EXCLUDE_LITTLEFS_CONFIG -DSUPLA_OTA " --output-dir /var/www/html/data/bv6.0/gv7.14.01/pl/cc239bf77b79ef55436b762b80ec7b09
https://gui-generic-builder.supla.io/
rafalekkalwak@wp.pl
Posts: 446
Joined: Mon Feb 06, 2023 8:56 am

Post

krycha88 wrote: Sun Mar 17, 2024 6:56 pm
klew wrote: Sun Mar 17, 2024 6:46 pm Prosiłem już kilka razy, więc jeszcze raz poproszę.
Podaj dokładne rewizje które porównujesz (rozumiem że jedna to 23.11 a druga to obecny main, czy coś innego)?
Daj też proszę rewizję GG na której testujesz.
Podaj też parametry do kompilacji płytki, abym mógł to u siebie skompilować.
Nowa biblioteka
https://github.com/krycha88/GUI-Generic
https://github.com/krycha88/GUI-Generic ... properties

Stara biblioteka
https://github.com/krycha88/GUI-Generic/tree/develop
https://github.com/krycha88/GUI-Generic ... properties

Ale żeby wykluczyć błędy podmieniam po prostu bibliotekę na develop

A to flagi na których testuję:

Code: Select all

arduino-cli compile --no-color --quiet --clean -e --libraries "/var/www/html/code/lib" -b esp8266:esp8266:esp8285:eesz=1M64,xtal=160 --build-property "build.extra_flags=-DESP8266 '-DBUILD_VERSION=\"7.14.10\"' '-DOPTIONS_HASH=\"cc239bf77b79ef55436b762b80ec7b09\"' -DATOMIC_FS_UPDATE -DMIMETYPE_MINIMAL -DBEARSSL_SSL_BASIC -DNDEBUG -DSUPLA_CONFIG -DSUPLA_DISABLE_LOGS -DSUPLA_ENABLE_GUI -DSUPLA_EXCLUDE_LITTLEFS_CONFIG -DSUPLA_OTA " --output-dir /var/www/html/data/bv6.0/gv7.14.01/pl/cc239bf77b79ef55436b762b80ec7b09
A co Ci wypluje vs code z platformio ?
Ciekaw jestem tych flag optymalizujacych o które kiedyś pytałem jak wyłączyć czy one tu coś zmieniają
User avatar
Robert Błaszczak
Posts: 4011
Joined: Sat Dec 22, 2018 8:55 pm
Location: Zielona Góra

Post

krycha88 wrote: Sun Mar 17, 2024 6:41 pm Jeżeli masz czas to przetestuj sobie wersję z
https://gui-generic-builder.supla.io/test.php
Jest to wersja oparta o bibliotekę 23.11 wg mnie ostatnia stabilna wersja na której nie było żadnych problemów.
1 kanał (krańcówka), SSL, GUI podczas pracy i Free Mem: 13.12kB

Jak widać jest różnica.

Przy wyłączonym GUI podczas pracy i przełączeniu Wemosa w tryb Config Free Mem: 29.40kB
Pozdrawiam
Robert Błaszczak


Moja prywatna strona: www.blaszczak.pl
krycha88
Posts: 5208
Joined: Fri Nov 16, 2018 7:25 am

Post

rafalekkalwak@wp.pl wrote: Sun Mar 17, 2024 7:21 pm
krycha88 wrote: Sun Mar 17, 2024 6:56 pm
klew wrote: Sun Mar 17, 2024 6:46 pm Prosiłem już kilka razy, więc jeszcze raz poproszę.
Podaj dokładne rewizje które porównujesz (rozumiem że jedna to 23.11 a druga to obecny main, czy coś innego)?
Daj też proszę rewizję GG na której testujesz.
Podaj też parametry do kompilacji płytki, abym mógł to u siebie skompilować.
Nowa biblioteka
https://github.com/krycha88/GUI-Generic
https://github.com/krycha88/GUI-Generic ... properties

Stara biblioteka
https://github.com/krycha88/GUI-Generic/tree/develop
https://github.com/krycha88/GUI-Generic ... properties

Ale żeby wykluczyć błędy podmieniam po prostu bibliotekę na develop

A to flagi na których testuję:

Code: Select all

arduino-cli compile --no-color --quiet --clean -e --libraries "/var/www/html/code/lib" -b esp8266:esp8266:esp8285:eesz=1M64,xtal=160 --build-property "build.extra_flags=-DESP8266 '-DBUILD_VERSION=\"7.14.10\"' '-DOPTIONS_HASH=\"cc239bf77b79ef55436b762b80ec7b09\"' -DATOMIC_FS_UPDATE -DMIMETYPE_MINIMAL -DBEARSSL_SSL_BASIC -DNDEBUG -DSUPLA_CONFIG -DSUPLA_DISABLE_LOGS -DSUPLA_ENABLE_GUI -DSUPLA_EXCLUDE_LITTLEFS_CONFIG -DSUPLA_OTA " --output-dir /var/www/html/data/bv6.0/gv7.14.01/pl/cc239bf77b79ef55436b762b80ec7b09
A co Ci wypluje vs code z platformio ?
Ciekaw jestem tych flag optymalizujacych o które kiedyś pytałem jak wyłączyć czy one tu coś zmieniają
Jeżeli wygeneruję soft pod PlatformIO to nie ma praktycznie różnicy w zużyciu RAM
Stara biblioteka
RAM: [===== ] 47.6% (used 38964 bytes from 81920 bytes)
Flash: [====== ] 57.3% (used 549449 bytes from 958448 bytes)

Nowa biblioteka
RAM: [===== ] 46.8% (used 38308 bytes from 81920 bytes)
Flash: [====== ] 58.3% (used 559089 bytes from 958448 bytes)

ale pomimo to rozmiar pliku jest już większy. Więc co boli Arduino CLI między tymi wersjami...
You do not have the required permissions to view the files attached to this post.
https://gui-generic-builder.supla.io/
User avatar
Goral64
Posts: 3135
Joined: Fri Dec 27, 2019 6:22 pm
Location: Żerniki Wrocławskie

Post

Istotną różnicą wydaje mi się jest prawdopodobnie brak w arduino-cli obsługi flagi -flto w kompilatorze gcc...
Nie ma tego zarówno w platform.txt jak i w samym gcc w systemie.
Póki co nie udało mi się tego uruchomić, ale muszę najpierw to zrobić gdzieś lokalnie, nie na produkcji. Ale to co najwyżej przybliży wynik kompilacji w arduino-cli do platformio, ale nie rozwiąże problemów z coraz mniej dostępną ilością pamięci w ESP8266 nawet przy minimalnych opcjach funkcjonalności.
Widzimy się na Supla Offline Party Season 2 :D

Image
krycha88
Posts: 5208
Joined: Fri Nov 16, 2018 7:25 am

Post

Goral64 wrote: Sun Mar 17, 2024 8:32 pm Istotną różnicą wydaje mi się jest prawdopodobnie brak w arduino-cli obsługi flagi -flto w kompilatorze gcc...
Nie ma tego zarówno w platform.txt jak i w samym gcc w systemie.
Póki co nie udało mi się tego uruchomić, ale muszę najpierw to zrobić gdzieś lokalnie, nie na produkcji. Ale to co najwyżej przybliży wynik kompilacji w arduino-cli do platformio, ale nie rozwiąże problemów z coraz mniej dostępną ilością pamięci w ESP8266 nawet przy minimalnych opcjach funkcjonalności.
to może przejść na platformio?

edit:
Ale może na początek warto ustalić co się zmieniło między bibliotekami, że pomimo takich samych parametrów kompilacji jest taka duża rozbieżność?
https://gui-generic-builder.supla.io/
User avatar
klew
Posts: 8357
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

krycha88 wrote: Sun Mar 17, 2024 10:36 pm edit:
Ale może na początek warto ustalić co się zmieniło między bibliotekami, że pomimo takich samych parametrów kompilacji jest taka duża rozbieżność?
Ogólnie mam na razie złą wiadomość.

Kompilowałem i odpalałem, aż dotarłem do rewizji, której dodanie zjada ~7 kB RAM-u i do tego sporo flasha. Pamięci nie ma już na samym starcie, gdy program wchodzi w "setup".

Niestety nie jest to związane z żadną allokacją pamięci, którą robi GG lub supla-device ;)

Wygląda to tak, jakby w pewnym momencie, dodanie jednego więcej pliku z jakmiś metodami/klasami (nieważne co robią), powoduje skokowy wzrost zużytego RAM-u. Przeglądając symbole w binarkach, widać, że po dołożeniu tej klasy, w binarce pojawiają się symbole od LittleFs (mimo flagi "exclude little fs").
Także ogóglnie to nie supla-device jest winna. GG też nie jest winne. A przynajmniej powód zużytej pamięci nie jest oczywisty. Możliwe, że ilość kodu przekracza jakiś próg, po którym kompilator/linker przestaje coś optymalizować i stąd ten problem.
Także trzymanie bibilioteki w wersji 23.11 tutaj nic nie zmieni. Bo prędzej, czy później jakaś kolejna funkcja w GG, czy aktualizacja innych bibilitotek też wygeneruje ten sam problem.

Ja szukam dalej. Dam znać, jak coś ustalę.
Widzimy się na Supla Offline Party vol. 2 :!:
User avatar
klew
Posts: 8357
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław

Post

Część pamięci udało mi się odzyskać poprzez wyrzucenie "littlefs" z GG :P

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.
Widzimy się na Supla Offline Party vol. 2 :!:
krycha88
Posts: 5208
Joined: Fri Nov 16, 2018 7:25 am

Post

klew wrote: Mon Mar 18, 2024 2:29 pm
@klew Dziękuję za nakierunkowanie i wskazanie potencjalnego problemu. Nie wiem jak to się stało, że używałem includów do littlefs_config.h to poprawiłem.

Zrobiłem odpowiednie "ifdefy" do wycięcia większości klas w obrębie GG i co mnie zaskoczyło to rozwiązanie zadziałało! Ale niestety wychodzi na to, że problem prędzej czy później powróci.

Na chwilę obecną mamy ArduinoCLI gdzie faktycznie zaczynają się problemy ale chociaż wiemy coraz więcej jak z nim walczyć. @Goral64 nadzieja w tobie aby przejść na PlatformIO i zażegnać te problemy 8-)
https://gui-generic-builder.supla.io/
rafalekkalwak@wp.pl
Posts: 446
Joined: Mon Feb 06, 2023 8:56 am

Post

krycha88 wrote: Mon Mar 18, 2024 4:38 pm
klew wrote: Mon Mar 18, 2024 2:29 pm
@klew Dziękuję za nakierunkowanie i wskazanie potencjalnego problemu. Nie wiem jak to się stało, że używałem includów do littlefs_config.h to poprawiłem.

Zrobiłem odpowiednie "ifdefy" do wycięcia większości klas w obrębie GG i co mnie zaskoczyło to rozwiązanie zadziałało! Ale niestety wychodzi na to, że problem prędzej czy później powróci.

Na chwilę obecną mamy ArduinoCLI gdzie faktycznie zaczynają się problemy ale chociaż wiemy coraz więcej jak z nim walczyć. @Goral64 nadzieja w tobie aby przejść na PlatformIO i zażegnać te problemy 8-)
Jakby jeszcze builder był publiczny to by się i jakiś skrypt napisalo testujacy budowanie z flagami w celu uniknięcia błędów kompilacji 😉

Return to “Ogólna dyskusja”