Globale Variablen - Problem falls mehr als eine verwendet

Gast #207506
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!
Gast
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...)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 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.