SRAM zu klein

Gast #68035
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
Gast
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
Gast
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?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.