Forum: Mikrocontroller und Digitale Elektronik SRAM zu klein


von Divison (Gast)


Lesenswert?

Hallo,

baue hier gerade ne Anwendung mit einem 90s8535 und einem Display dran.
Aber ich glaube das wird langsam alles zu gross. avr-gcc sagt nämlich
das gleich kein Platz mehr für den Stack auf dem SRAM da ist, und ich
solle mir doch mal was einfallen lassen. :-)

Nur ist das Problem, das ich noch nicht wirklich fertig bin mit meinem
Programm. Da kommt also noch einiges dazu in Form von ASCII Zeichen
fürs Display. (Menueführung und so)

Was soll ich denn nun tun? Bleibt mir nur der Umstieg auf einen Mega?
Der ATMega128 hätte da 4k antatt einem halben k wie der 8535. Das würde
reichen, oder kann man da was anderen machen? Den Code verkleinern geht
nicht. Programm verkleinern bring mir nix. Dann wäre ich ja in
funktionalität des Endproduktes beschnitten.

Liebe Grüsse

Division

von Frank Linde (Gast)


Lesenswert?

Code optimieren (Verschachtelungstiefe der Funktionsaufrufe reduzieren,
Variablen reduzieren oder - falls selten benutzt - ins EEPROM
auslagern) oder für mehr RAM sorgen. Ohne Programmeinsicht sind
Vorschläge schwierig. Willst Du die ASCII-Zeichen auch im RAM ablegen?
Falls ja, wozu ist das gut?

Gruß, Frank

von crazy horse (Gast)


Lesenswert?

Thema Variablen: Nicht unnötig gross machen, oft schon gesehen, dass für
logische Bitvariablen chars eingesetzt werden, ebenso int und long
statt char und int. Wie gross sie wirklich sein müssen, können wir
nicht wissen.
Ganz wichtiges Thema: lokale statt globale Variablen einsetzen. Lokale
Variablen können überlagert werden (solange sie nicht static sind), im
Normalfall braucht man nur wenige globale Variablen.
Zeichenketten haben im RAM nichts verloren, sie stehen im Normalfall ja
schon im flash. Für Zeichenketten, die ans Display geschickt werden,
einen Buffer anlegen, max. so groß wie das Display Zeichen pro Zeile
hat. Alle Ausgaben werden in diesen Buffer geschrieben und dann ins
Display.
Sorgsam mit Arrays umgehen, die können ganz schnell richtige
Speicherfresser werden, int [10][2][2], schwups sind 80byte RAM weg.
Wie managt der Compiler die Verteilung von Daten- und Hardwarestack?

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
Noch kein Account? Hier anmelden.