cdk
07.07.2019, 14:04
Hallo Leute,
ich komme mit meinem derzeitigen Projekt (Ereignislogger) so langsam in einen Bereich wo ich mir Sorgen um den Platz im Controller-RAM mache. Der Compiler sprach von 1200 belegten Bytes der insgesamt 2048 beim Uno. Bin durch kürzen und durch Verwendung identisch gleicher Texte für Konsole- und LCD-Ausgabe (der Compiler optimiert da anscheinend fleißig) dann wieder immerhin auf 800 belegte Byte runtergekommen. Aber das Programm ist ja noch lange nicht vollendet.
Daher meine Fragen:
- Wieviel RAM sollte man eigentlich für die Laufzeit so Pi*Daumen noch frei haben?
- Gibt's eine Möglichkeit den freien RAM zur Laufzeit zu bestimmen und zumindest eine kritische Knappheit zu erkennen?
- Was verbraucht denn außer lokalen Variablen noch RAM? Ich glaube bei Interrupts und bei Funktionsaufrufen werden zumindest mal die Prozessorregister auf den Stapel gelegt - was sich dann bei mehrfach verschachtelten Aufrufen wohl auch zusammenläppert. Oder?
- Kann man feste Texte nicht auch irgendwie im Programmcode "verstecken"? Im Flash habe ich noch reichlich Platz. Egal ob ich fest in den Programmcode getippte Texte verwende oder die als const char* übergebe - beides kostet RAM, und zwar gleich viel...
Und ja - wenn ich hier im Arduino-Board nach "RAM" suche bekomme ich keinen einzigen Treffer. Ist das normalerweise "kein Thema"....? :confused:
Gruß, Dieter
ich komme mit meinem derzeitigen Projekt (Ereignislogger) so langsam in einen Bereich wo ich mir Sorgen um den Platz im Controller-RAM mache. Der Compiler sprach von 1200 belegten Bytes der insgesamt 2048 beim Uno. Bin durch kürzen und durch Verwendung identisch gleicher Texte für Konsole- und LCD-Ausgabe (der Compiler optimiert da anscheinend fleißig) dann wieder immerhin auf 800 belegte Byte runtergekommen. Aber das Programm ist ja noch lange nicht vollendet.
Daher meine Fragen:
- Wieviel RAM sollte man eigentlich für die Laufzeit so Pi*Daumen noch frei haben?
- Gibt's eine Möglichkeit den freien RAM zur Laufzeit zu bestimmen und zumindest eine kritische Knappheit zu erkennen?
- Was verbraucht denn außer lokalen Variablen noch RAM? Ich glaube bei Interrupts und bei Funktionsaufrufen werden zumindest mal die Prozessorregister auf den Stapel gelegt - was sich dann bei mehrfach verschachtelten Aufrufen wohl auch zusammenläppert. Oder?
- Kann man feste Texte nicht auch irgendwie im Programmcode "verstecken"? Im Flash habe ich noch reichlich Platz. Egal ob ich fest in den Programmcode getippte Texte verwende oder die als const char* übergebe - beides kostet RAM, und zwar gleich viel...
Und ja - wenn ich hier im Arduino-Board nach "RAM" suche bekomme ich keinen einzigen Treffer. Ist das normalerweise "kein Thema"....? :confused:
Gruß, Dieter