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