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...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.
⚙ [TO DO] Co chcielibyście jeszcze dodać do GUI-Generic? ☕
-
Goral64
- Posts: 3258
- Joined: Fri Dec 27, 2019 6:22 pm
- Location: Żerniki Wrocławskie
- Has thanked: 2 times
- Been thanked: 1 time
Widzimy się na Supla Offline Party Season 2026

-
krycha88
- Posts: 5575
- Joined: Fri Nov 16, 2018 7:25 am
- Been thanked: 5 times
Zgadza się, ale jeżeli tego nie zrobisz to zajmie pamięć RAMGoral64 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...
ogólnie
PSTR("test");
można zapisać
char test[] PROGMEM = test";
https://gui-generic-builder.supla.io/
-
Goral64
- Posts: 3258
- Joined: Fri Dec 27, 2019 6:22 pm
- Location: Żerniki Wrocławskie
- Has thanked: 2 times
- Been thanked: 1 time
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.krycha88 wrote: Fri Aug 19, 2022 10:20 am ogólnie
PSTR("test");
można zapisać
char test[] PROGMEM = test";
Widzimy się na Supla Offline Party Season 2026

-
klew
- Posts: 13908
- Joined: Thu Jun 27, 2019 12:16 pm
- Location: Wrocław
- Has thanked: 134 times
- Been thanked: 137 times
Raczej to ma niewielki wpływ na rozmiar kodu.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...
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 
-
Patryk
- Posts: 2944
- Joined: Mon Jan 07, 2019 7:51 pm
- Location: Rybnik
A może rozdzielić te projekty na dotychczasowy GUI-Generic i np: GUI-Generic32.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.
Już kiedyś było to poruszone.
-
krycha88
- Posts: 5575
- Joined: Fri Nov 16, 2018 7:25 am
- Been thanked: 5 times
Masz na myśli aby nie rozwijać biblioteki dla ESP8266 a nowości robić tylko dla ESP32?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.
https://gui-generic-builder.supla.io/
-
Goral64
- Posts: 3258
- Joined: Fri Dec 27, 2019 6:22 pm
- Location: Żerniki Wrocławskie
- Has thanked: 2 times
- Been thanked: 1 time
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.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.
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

-
Patryk
- Posts: 2944
- Joined: Mon Jan 07, 2019 7:51 pm
- Location: Rybnik
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.
-
Goral64
- Posts: 3258
- Joined: Fri Dec 27, 2019 6:22 pm
- Location: Żerniki Wrocławskie
- Has thanked: 2 times
- Been thanked: 1 time
No ale w większości przypadków do ESP32 nie potrzebne są ekspandery portów bo ESP32 ma ich sporo więcej niż 82xxPatryk 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.
Widzimy się na Supla Offline Party Season 2026

