⚙ [TO DO] Co chcielibyście jeszcze dodać do GUI-Generic? ☕

User avatar
Goral64
Posts: 3258
Joined: Fri Dec 27, 2019 6:22 pm
Location: Żerniki Wrocławskie
Has thanked: 2 times
Been thanked: 1 time

Post

krycha88 wrote: Fri Aug 19, 2022 9:59 am Kiedyś jak próbowałem zmniejszyć rozmiar binarki to o dziwo ale konstrukcje typu
const char test[] PROGMEM = "test"
czy
#define test "test"
pomimo, że nie było nigdzie wykorzystane powiększało rozmiar.
Gdzieś niedawno czytałem o optymalizacji kodu w Arduino i ta nie zalecane było korzystanie z PROGMEM jeśli chciało się uzyskać mniejszy kod wynikowy...
Widzimy się na Supla Offline Party Season 2026 :D

Image
krycha88
Posts: 5575
Joined: Fri Nov 16, 2018 7:25 am
Been thanked: 5 times

Post

Goral64 wrote: Fri Aug 19, 2022 10:11 am Gdzieś niedawno czytałem o optymalizacji kodu w Arduino i ta nie zalecane było korzystanie z PROGMEM jeśli chciało się uzyskać mniejszy kod wynikowy...
Zgadza się, ale jeżeli tego nie zrobisz to zajmie pamięć RAM :)

ogólnie
PSTR("test");
można zapisać
char test[] PROGMEM = test";
https://gui-generic-builder.supla.io/
User avatar
Goral64
Posts: 3258
Joined: Fri Dec 27, 2019 6:22 pm
Location: Żerniki Wrocławskie
Has thanked: 2 times
Been thanked: 1 time

Post

krycha88 wrote: Fri Aug 19, 2022 10:20 am ogólnie
PSTR("test");
można zapisać
char test[] PROGMEM = test";
No tak, tylko PROGMEM jest deklaracją globalną i nie wiem czy kompiler odrzuca tą deklarację jeśli kod z niej nie korzysta w danej konfiguracji czy mimo wszystko to dołącza do kodu? Bo jeśli nie odrzuca, to wtedy lepiej jest to deklarować lokalnie dla danego modułu.
Widzimy się na Supla Offline Party Season 2026 :D

Image
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Goral64 wrote: Fri Aug 19, 2022 10:11 am Gdzieś niedawno czytałem o optymalizacji kodu w Arduino i ta nie zalecane było korzystanie z PROGMEM jeśli chciało się uzyskać mniejszy kod wynikowy...
Raczej to ma niewielki wpływ na rozmiar kodu.

Tu są dwa tematy:
1. Przechowywanie danych w pamięci, np.: char supla[] = "SUPLA";
2. Kod potrzebny aby dostać się do tych danych

Wrzucenie "SUPLA" w PROGMEM, czy bez, nie zmiania rozmiaru binarki ze względu na ilość danych - napis "SUPLA" i tak w pliku bin się znajduje. Jest natomiast umieszczany w innej sekcji programu. Domyślnie takie napisy są dawane w sekcji, która przy uruchamianiu aplikacji jest od razu wrzucana do pamięci RAM urządzenia, więc zabiera nam tą pamięć, natomiast dostęp do tego obszaru pamięci jest realizowany bez dodatkowych narzutów na instrukcje procesora, a więc może to dać nieco mniejszą binarkę.
Dodanie PROGMEM, albo jakiejś równoważnej konstrukcji, powoduje, że napis "SUPLA" jest częścią kodu, który nie jest automatycznie ładowany do pamięci RAM. Aby go odczytać i np. wrzucić do logów, to trzeba go najpierw skopiować z pamięci flash (z bina) do RAM-u i wtedy go wrzucić na Serial. Następnie pamięć RAM jest zwalniana, bo to z reguły odbywa się na stosie. Dzięki temu na stałe mamy więcej dostępnego RAM-u, ale te kilka instrukcji więcej w kodzie spowoduje, że binarka będzie nieco większa.
Najlepsze suple dla Twojego domu :mrgreen:
Patryk
Posts: 2944
Joined: Mon Jan 07, 2019 7:51 pm
Location: Rybnik

Post

krycha88 wrote: Fri Aug 19, 2022 5:10 am Mogę zaproponować 3 drogi na przejście na nową bibliotekę supla-device:
....
4. inną o której jeszcze nie wiem.
A może rozdzielić te projekty na dotychczasowy GUI-Generic i np: GUI-Generic32.
Już kiedyś było to poruszone.
krycha88
Posts: 5575
Joined: Fri Nov 16, 2018 7:25 am
Been thanked: 5 times

Post

Patryk wrote: Fri Aug 19, 2022 12:07 pm A może rozdzielić te projekty na dotychczasowy GUI-Generic i np: GUI-Generic32.
Już kiedyś było to poruszone.
Masz na myśli aby nie rozwijać biblioteki dla ESP8266 a nowości robić tylko dla ESP32?
https://gui-generic-builder.supla.io/
User avatar
Goral64
Posts: 3258
Joined: Fri Dec 27, 2019 6:22 pm
Location: Żerniki Wrocławskie
Has thanked: 2 times
Been thanked: 1 time

Post

Patryk wrote: Fri Aug 19, 2022 12:07 pm A może rozdzielić te projekty na dotychczasowy GUI-Generic i np: GUI-Generic32.
Już kiedyś było to poruszone.
Większość kodu jest zdecydowanie wspólna dla obu architektur, więc prowadzenie równolegle dwóch projektów moim zdaniem mija się z celem.
Last edited by Goral64 on Fri Aug 19, 2022 12:36 pm, edited 1 time in total.
Widzimy się na Supla Offline Party Season 2026 :D

Image
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

To nie ESP8266 jest problematyczne, tylko ESP8266 z małym flashem jest problematyczne. Nie wszystkie ESP tak mają ;)
Najlepsze suple dla Twojego domu :mrgreen:
Patryk
Posts: 2944
Joined: Mon Jan 07, 2019 7:51 pm
Location: Rybnik

Post

krycha88 wrote: Fri Aug 19, 2022 12:16 pm
Patryk wrote: Fri Aug 19, 2022 12:07 pm A może rozdzielić te projekty na dotychczasowy GUI-Generic i np: GUI-Generic32.
Już kiedyś było to poruszone.
Masz na myśli aby nie rozwijać biblioteki dla ESP8266 a nowości robić tylko dla ESP32?
Absolutnie nie.
Zdecydowana większość użytkowników i tak używa esp82xx.
Chodzi mi o to, żeby "wymagające" układy np: MCP, PCF, ... i "zaawansowane" funkcje były raczej obsługiwane tylko przez ESP32.
Wtedy była by możliwość "odchudzania" kodu dla esp82xx.
Przynajmniej tak mi się wydaje.
User avatar
Goral64
Posts: 3258
Joined: Fri Dec 27, 2019 6:22 pm
Location: Żerniki Wrocławskie
Has thanked: 2 times
Been thanked: 1 time

Post

Patryk wrote: Fri Aug 19, 2022 12:37 pm Absolutnie nie.
Zdecydowana większość użytkowników i tak używa esp82xx.
Chodzi mi o to, żeby "wymagające" układy np: MCP, PCF, ... i "zaawansowane" funkcje były raczej obsługiwane tylko przez ESP32.
Wtedy była by możliwość "odchudzania" kodu dla esp82xx.
Przynajmniej tak mi się wydaje.
No ale w większości przypadków do ESP32 nie potrzebne są ekspandery portów bo ESP32 ma ich sporo więcej niż 82xx :)
Widzimy się na Supla Offline Party Season 2026 :D

Image

Return to “GUI Generic”