Forum: Mikrocontroller und Digitale Elektronik Globale Variablen - Problem falls mehr als eine verwendet


von Adrian (Gast)


Lesenswert?

Hallo!

ich habe ein problem mit meinem MSP430 413. Wenn ich globale Variablen
verwende, was noetig ist um funktionsuebergreifend bestimmte Werte (in
meinem Fall hauptsaechlich Schaltzustaende, aber auch Temperaturwerte
u.ae.) zu schreiben und auszuwerten, dann funktioniert das mit maximal
EINER globalen Variable.

Sobald ich eine zweite auch nur deklariere, laeuft das Programm
nichtmal an und auch im Debugger fehlen schon einige Kontrollfenster.
Mehrere Variablen innerhalb einer Funktion sind kein Problem ....

Woran koennte das liegen? Wird die Variable vielleicht im falschen
Speicherbereich angelegt, muss ich irgendwelche
Konfigurationseinstellungen in der Entwicklungsumgebung aendern?

Danke fuer Eure Hilfe!

von Jens (Gast)


Lesenswert?

Hallo Adrian,

ich vermute, Deine Idee ist richtig: Der Speicherbereich für die
globalen Variablen ist ein ganz anderer als der für Variablen in den
Funktionen (dafür wird ja der Stack verwendet).

Für mich klingt es so, als gäbe es eine Überlappung mit dem Bereich,
der auch vom Monitor verwendet wird. Denn dieser ist dem Linker, der
sonst bei Überlappungen meckert, ja normalerweise nicht bekannt.

Irgendwo findet sich sicherlich eine Doku über den Monitor und die von
ihm verwendeten Ressourcen. Ich habe mir dann so geholfen, dass ich die
verwendeten Bereiche auch im Start-File der eigentlichen Anwendung
definiert habe - und schon meckert der Linker, wenn es zu Überlappungen
kommt.

Achso, es mag auch ein Blick in das Map-File des Linkers helfen, hier
werden ja alle Speicherbereiche und Variablenadressen dargestellt.
Überlappungen, die in der Anwendung selbst liegen, sollten hier zu
finden sein. Aber, wie oben gesagt, ein möglicher Monitor taucht da
natürlich nicht auf.

Vielleicht übersetzt Du Deinen Monitor selbst und bekommst auch hier
ein Map-File - dann kannst Du beide 'übereinanderlegen'.

Gruß,

Jens

(Ich habe meine M16C-Erfahrungen mal einfach auf den MSP430 übertragen,
weiss aber nicht, ob es dort diesen 'Monitor', der die Verbindung zum
Debugger aufrecht erhält und das Flashen oder zumindest Downloaden der
Anwendung übernimmt, wirklich gibt. Kann also alles Quark sein...)

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.