Hallo, Für ein WLAN System wollte ich was mit einem esp32 machen. Das ganze habe ich ohne WLAN oder ETH zurzeit auf einem stm32f4 über USB am laufen. Der RAM (168k)und Flash (560k) Verbrauch ist aktuell schon recht hoch und wird noch steigen. So wenn ich mir nun die Datenblätter vom esp32 anschaue dann steht da was wie 400k RAM 200k rom und 4 MB Flash. Also wenn ich das einfach vergleichen würde dann müsste es passen, aber da der esp32 ja anscheinend das Programm ins RAM hohlt würde es nicht passen. Was ist denn nun richtig? Habe ich das ram voll zur Verfügung oder was will der Prozessor für den Code? Die Doku dazu ist irgendwie da nicht so hilfreich, oder das richtig Dokument habe ich noch nicht gefunden.
Klaus schrieb: > Der RAM (168k)und Flash (560k) Verbrauch ist aktuell schon recht hoch > und wird noch steigen. Wenn das wirklich so ist, und nicht das Resultat mangelhafter Struktur, dann scheint mir für deinen Fall ein Raspberry Pi (oder ähnlich) eher geeignet zu sein. Soweit ich weiß, begrenzt die Toolchain den Programmcode auf maximal 1,2 Megabytes. Wie viel RAM frei ist, weiß ich nicht.
Arduino sagt bei einem kleinen Testprogramm: > Der Sketch verwendet 230565 Bytes (17%) des Programmspeicherplatzes. Das Maximum sind 1310720 Bytes. > Globale Variablen verwenden 16212 Bytes (4%) des dynamischen Speichers, 311468 Bytes für lokale Variablen verbleiben. Das Maximum sind 327680 Bytes.
Mal langsam, da muss ich erstmal mitkommen. Das Rom ist fest und hat viele Routinen für WLAN usw fest drin. Spart viel Code und viele Fehler. Flash da ist mein Programm drin, und je nach Typ sind 0-8 MB da. Psram haben einige Typen, wird aber nicht für high-speed Zugriffe gut sein. So und nun das große Fragezeichen das RAM. Da werden meine Variablen, stack und??? drin sein. Ist da nun code drin und wenn ja wieviel? Alles oder nur ein Teil ( zB. Ein Cash). Die Struktur ist sauber und geht nicht kleiner, da soll sogar noch mehr rein. Was auch noch offen ist bei mir ist das ich für einen 2. Anwendungsfall die i2s Schnittstelle brauche und irgendwie habe ich gelesen das Psram und Flash etliche Pins blockieren, ist das so? Ein rpi ist das dein Ernst? Ein System was von sd Karte läuft, groß und kein WLAN drauf hat. Zusätzlich würde in meinem Fall alleine der Platz und die Versorgungsspannung nicht passen.
Wie gross das Programm sein kann ist doch von der Partitionierungstabelle abhängig, oder? Welche toolchain beschränkt auf 1.2MiB? Von nem aktuellen Projekt von mir: RAM: [== ] 23.9% (used 78424 bytes from 327680 bytes) Flash: [===== ] 45.6% (used 956442 bytes from 2097152 bytes) Bei # Partitions.csv # Name, Type, SubType, Offset, Size, Flags nvs, data, nvs, 0x009000, 0x005000, otadata, data, ota, 0x00e000, 0x002000, app0, app, ota_0, 0x010000, 0x200000, app1, app, ota_1, 0x210000, 0x200000, spiffs, data, spiffs, 0x410000, 0x800000, Aber wenn man kein OTA update braucht, dann kann mann ja app1 auch weglassen. Ja, es sind recht viele pins schon von Flash und PS-Ram genutzt. Muss man echt vorsichtig sein. Wenn du code aus de ram ausfuehren willst musst du das selbst machen. Die shadowmemories und caches sind afaik nicht nach aussen hin memory gemapped. Aber nicht 100% sicher.
Ich muss wohl erstmal die IDE installieren und selber testen. Auch wenn am Ende heraus kommt das der esp32 so nicht funktioniert, als WLAN Knoten wird er auf jeden Fall gehen. Der Code wird doch wohl nicht aus dem Flash laufen, der ist doch nicht voll am Prozessor Bus dran. Genauso wie das PSRAM. Wenn ich dich aber richtig verstanden habe dann hat der einen eigenen cache und somit sollte ich also das ganze ram für mein programm haben.
Klaus schrieb: >das große Fragezeichen das RAM. > Da werden meine Variablen, stack und??? drin sein. und Heap > Ist da nun code drin und wenn ja wieviel? Alles oder nur ein Teil ( zB. > Ein Cash). Der Programmcode wird Blockweise ins RAM geladen, bevor und während er ausgeführt wird. Wie viel, ist konfigurierbar, deswegen nennt das Datenblatt keine konkreten zahlen. > Die Struktur ist sauber und geht nicht kleiner, da soll sogar noch mehr > rein. Deswegen habe ich dir einen kleinen Computer empfohlen, der dafür genug Platz frei hat. > Was auch noch offen ist bei mir ist das ich für einen 2. Anwendungsfall > die i2s Schnittstelle brauche und irgendwie habe ich gelesen das Psram > und Flash etliche Pins blockieren, ist das so? Ja ist so. > Ein rpi ist das dein Ernst? > Ein System was von sd Karte läuft, groß und kein WLAN drauf hat. Viele Modelle haben WLAN On-Board. Wenn dir die SD Karte nicht gut genug ist, warum dann der serielle Flash Chip des ESP32 Moduls? Oder meinst du dass das Linux ständig auf die SD Karte schreibt? Das ist ein Aberglaube, der sich hartnäckig hält. Wenn da jemand zu häufig auf die SD Karte schreibt, dann sind es Anwendungsprogramme die du zum Minimal-Setup hinzufügst. Selbst das kann man z.B. unterbinden, indem man den Programmen stattdessen eine RAM Disk bereit stellt, wenn es denn sein muss. Ich hatte einen Raspberry Pi 3B+ (als Set mit Gehäuse, Netzteil und SD Karte, original von der Raspberry Foundation) drei Jahre lang im Dauerbetrieb. Er hatte die Aufgabe, die Verfügbarkeit von 10 Web Diensten zu kontrollieren und protokollieren. Da wurde alle paar Sekunden die SD Karte beschrieben, und es gab auch ein paar Stromausfälle. Das alles lief die ganze Zeit ohne ein einziges Problem durch. Also: Ständige Schreibzugriffe müssen nicht zwangsläufig ein Problem sein.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.