Vor Kurzem ist mir aufgefallen, dass die IDE irgendwann mitteilt, dass der Speicherplatz wenig wird und dies zu Problemen führen kann.
Wie kritisch ist das, - bzw wie viel Speicher sollte man frei lassen ?
Vor Kurzem ist mir aufgefallen, dass die IDE irgendwann mitteilt, dass der Speicherplatz wenig wird und dies zu Problemen führen kann.
Wie kritisch ist das, - bzw wie viel Speicher sollte man frei lassen ?
Auf jeden Fall soviel, dass sich da nix ins Gehege kommt.
-> Geht es auch etwas Konkreter?
Nein!
-> Warum nicht?
Weil es von der konkreten Situation abhängig ist, und die ist geheim!
Nein, die ist nicht geheim, - es gibt aktuell keine Situatuin wo ich damit ein Problem habe.
Ist eine Weile her, da hatte ich die Situation als ich von einem LCD auf ein Oled Display wechseln wollte. Beim Umbau vom Sketch bekam ich dann die Warnmeldung.
Ist mir nur gerade wieder eingefallen weil ich im aktuellen Sketch gerade bei 75% belegtem Speicher bin, - da kommt aber nichts mehr dazu.
RAM Speicher wird zur Programmlaufzeit belegt. Wieviel wann im konkreten Fall weiß der Compiler nicht.
Wird übrigens auch nicht zur Laufzeit vom Betriebssystem überwacht, weil es ein solches gar nicht gibt. Die Auswirkungen sind also völlig unklar.
...ist interessant. Der Compiler kennt nur den static Teil des RAM.
Doch doch, z.B. ist geheim, ob du von Flash oder RAM sprichst.
Und ja, das macht einen Unterschied.
Und falls du RAM meinst, ist wichtig zu wissen, was du alles zur Laufzeit mit dem RAM anstellst.
OK, erwischt, - war ich wieder mal unpräzise...
Welchen Speicher die IDE damals beanstandet hat weiss ich nicht mehr...
Die 75% (die mich daran erinnert hatten dass da ja mal was war) sind Programmspeicher ( = Flasch ? ), der dynamische Speicher ist, beim gleichen Sketch, zu 63% belegt.
Aber wie gesagt, damit habe ich auch keine Probleme, das war einfach eine allgemeine Frage dazu.
Was ich damit anstelle? Ein paar Sensoren auslesen, die AD Werte umrechnen, am Display ausgeben und auf SD Karte schreiben.
Der ist egal, den kannst du zu 100% voll pumpen.
Ja, nein.
Was das für Auswirkungen auf den Stapel und Heap hat, ist die Frage, an der sich entscheidet, ob es gut geht.
Es gibt Verfahren, wie man das recht zuverlässig "messen" kann. Z.B:
z.B. FreeRTOS macht das so, nennt sich da Watermark
bei 75% Belegung SRAM:
Sketch uses 2290 bytes (7%) of program storage space. Maximum is 32256 bytes.
Global variables use 1537 bytes (75%) of dynamic memory, leaving 511 bytes for local variables. Maximum is 2048 bytes.
Low memory available, stability problems may occur.
wobei er bei 1536 bytes auch 75% ermittelt aber noch kein Warning wirft.
Leider:
Die Meldung basiert auf einer recht willkürlich festgelegten Grenze.
Die sagt nichts, bis wenig, über die konkrete Situation aus.
z.B. Mit der SD Lib knallt es meistens deutlich vor der Grenze.
Der Sketch verwendet 22360 Bytes (75%) des Programmspeicherplatzes. Das Maximum sind 29696 Bytes.
Globale Variablen verwenden 1299 Bytes (63%) des dynamischen Speichers, 749 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.
Das ist der aktuelle Stand von den Sketch an dem ich gerade sitze, - wie gesagt bei dem kommt nichts...
Das ist gut zu wissen, weil der LGT8F328P die SdFat.h nicht mag, ich ihn aber...
Edit:
Ich denke es waren 90% beim Programmspeicher, den Rest weiß ich wirklich nicht mehr...
Die SD Lib legt 512(?) Byte auf dem Heap an.
Da das zur Laufzeit geschieht, sieht der Compiler das nicht.
Das ist viel...
.
Adafruit_NeoPixel ist u.U. noch viel gieriger, verständlicher weise.
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.