www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SRAM zu klein


Autor: Divison (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Frank Linde (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.