mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Speicherende


Autor: Andreas Franke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
gibt es eine möglichkeit festzustellen, ob ein Programm in einem
AT90s8515 zur Laufzeit den kompletten Arbeitsspeicher (intern) belegt?
Also inklusive Stack.
Mein Programm zeigt nämlich komische Ausfallerscheinungen, wenn ich es
um genau eine Variable erweitere...
Ausfallerscheinungen in der hinsicht, dass z.b. andere Variablen
willkürlich überschrieben werden.

Wiess da jemand Rat ?

Gruß,
Andreas

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
in C gibts sog. stack-end-marker für die jeweiligen stackbereiche, da
wird einfach ein string "stack_end" z.B. an das Ende des stacks
geschrieben. Verschwindet auch das "s" im Laufe der Simulation, hast
du ein stackproblem. Das kann man natürlich auch in Assembler machen,
man muss sich allerdings selbst um die letzte stackadresse (letzte
Variable+1) kümmern.
Bei dem von dir geschilderten Verhalten scheint mir genau das der Fall
zu sein.
Lösungsmöglichkeiten:
-kleinere Variablentypen nehmen, wenn möglich (bit statt char, int
statt long, ich habe sogar schon mal 24bit-Variablen benutzt)
-lokale Variablen verwenden, die nach Beendigung des UP in anderen
verwendet werden können, typischer Fall z.B. Schleifenzähler, da kann
in jedem UP diesselbe Variable bzw. Register verwendet werden
-Verschachtelungstiefe des Programms verringern

Bei den "normalen" Variablen kann es da eigentlich kein Problem
geben, da die einen festen Speicherplatz haben. Es sei denn, sie werden
indirekt adressiert und der pointer läuft aus dem Ruder.
Aber das wäre doch mal eine sinnvolle Erweiterung für AVR-Studio, wenn
man irgendwie die tiefste SP-Adresse sehen könnte.

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.