Aktywne Wpisy
Jak na to mówicie?
Jak to nazywacie?
- Smoktasy 8.8% (53)
- Siuśki 48.4% (291)
- Susańce 10.3% (62)
- Ćmokańce 32.4% (195)
eazy-e +131
Niezła metamorfoza i antyreklama salonu xD z w miarę normalnej dziewczyny #patologiazewsi
#karyna #p0lka
#karyna #p0lka
Mam zatem pytanie do osób korzystających z ESP8266 oraz ESP32.
Robiłem przed chwilą test tej pamięci poprzez komendę ESP.getFreeHeap() i moje wyniki są następujące: ESP8266 = 50KB, ESP32 = 307KB. Pytanie mam, czy wartości te (KB) są stałe dla tych modułów? Czy może są inne odmiany ESP32 lub ESP8266 z większą ilością pamięci Heap?
PS. Na internecie trafiam na wartości, że ESP32 ma Pamięć SRAM 520 KB, a tymczasem ja otrzymałem wartość jedynie 307KB - dlaczego?
#arduino #nodemcu #esp8266 #esp32 #mikrokontrolery
Czemu mi brakuje, buduję czasami zaawansowane zestawy i bywa, że się wykrzacza. Dużo różnych sensorów, przekaźników i z tego co widzę to może być tak, że WiFi jest niestabilne pod względem wykorzystania RAM-u. Na innym module zauważam, że biblioteka Blynk IOT zużywa bardzo dużo RAM-u i powoduje codzienne restarty :/
@MisiekD: bo reszta jest zajęta przez inne rzeczy, statyczne alokacje, stosy dla wątków, cache dla flasha, kod siedzący w RAMie (żeby się szybciej wykonywał)
Przy kompilacji powinieneś mieć podsumowanie ze statycznymi alokacjami oraz plik map ze szczegółami
Total sizes:
Used stat D/IRAM: 43732 bytes ( 277564 remain, 13.6% used)
.data size: 3680 bytes <----------- dane zainicjalizowane
@MisiekD: to wynik polecenia idf.py size
Jak ci mało pamięci to kup sobie esp-32s3
@MisiekD: gcc, innego kompilatora przecież do tego nie ma. Plik map może być utworzony na etapie linkowania (potrzebna jest opcja -Map=nazwaprogramu.map) albo później narzędziem objdump. Zlokalizuj gdzie masz plik elf po zakończeniu kompilacji i wywołaj objdump na nim, np. dla esp32-c3 (riskV) robię to tak:
~/.espressif/tools/riscv32-esp-elf/esp-12.2.0_20230208/riscv32-esp-elf/bin/riscv32-esp-elf-objdump -x dupa.elf
Rozmiar:
~/.espressif/python_env/idf5.1_py3.10_env/bin/python ~/esp/esp-idf/tools/idf_size.py blink.map
`C:\Users\Misiek\Documents\PlatformIO\Projects\ESP8266 Kotłownia (czujniki temperatury, pompy obiegowe, wyświetlacz, 20x4)\.pio\build\Project\firmware.elf: file format elf32-little
C:\Users\Misiek\Documents\PlatformIO\Projects\ESP8266 Kotłownia (czujniki temperatury, pompy obiegowe, wyświetlacz, 20x4)\.pio\build\Project\firmware.elf
architecture: UNKNOWN!, flags 0x00000112:
EXECP, HASSYMS, DPAGED
start address 0x401000c0
Program Header:
LOAD off 0x000000d4 vaddr 0x00000000 paddr 0x00000000 align 212
filesz 0x00000000 memsz 0x00000000 flags ---
LOAD off 0x00001000 vaddr 0x3ffe8000 paddr 0x3ffe8000 align 212
filesz
https://www.esp8266.com/wiki/doku.php?id=esp8266_memory_map
Programuje sb ESP8266, włączam go teraz, pracuje 1h i nąjniższa wartość pamięci heap po 1h to 30KB, 3 dni później najniższa wartość heap zdarza się, że np
2KB. No i bywa, że spada poniżej tych 2KB, a to powoduje restart i tego restartu chcę uniknąć.
Masz jakieś przypuszczenia z czego to mogłoby być? I jak uniknąć?
PS. W ESP8266 używam WiFi jako klient
@MisiekD: wycieki pamięci - pamięć jest alokowana, ale nie jest zwalniana po zakończeniu jej użycia.
Albo tak pisać kod, żeby nie było wycieków ( ͡º ͜ʖ͡º) a jak już są to pisać kod przenośnie - tak, żebyś mógł go uruchomić na PC. Wtedy będziesz miał do dyspozycji różne narzędzia typu valgrind i sanitizery dostarczane przez