Forum: Mikrocontroller und Digitale Elektronik Speicherüberlappung DATA16_AN IAR MSP430


von Ulf (Gast)


Lesenswert?

Hallo,
ich bin gerade dabei ein Projekt für den MSP430 auf IAR umzustellen.
Mein Projekt besteht sowohl aus .c als auch aus Assembler-Dateien.
Wenn der Linker einsetzt erhalte ich bei einem Rebuilt folgende
Fehlermeldung:

"Error[e78]: Absolute segment in module myassemblerfile ( 
myassemblerfile.r43 ) overlaps segment DATA16_AN"


Wenn ich jetzt "myassemblerfile.s43" mal separat kompiliere dann ist 
alles
o.k..
Aus der Fehlermeldung sehe ich nur, dass irgendwelche Speicherbereiche 
wohl
doppelt benutzt werden oder der Compiler denkt zumindest es sei so. In
"DATA16_AN" werden ja normalerweise nur Variablen für den RAM 
geschrieben, die nicht zu initialisieren sind (wenn ich da richtig 
liege). In der Datei
"myassemblerfile.s43" weise ich aber keinen Variablen Speicheradressen 
zu.

Gibt es irgendeine Möglichkeit zu sehen, welche Speicherbereiche 
eigentlich
doppelt belegt sind oder auf welche Segment/-e sich der Linker bezieht?


Mfg
Ulf

von Gast (Gast)


Lesenswert?

Im .map File sollten alle benutzten Speicherbereiche aufgelistet sein.
.map File im \Debug\List oder \Release\List Verzeichnis

Ausserdem: DATA16_AN beinhaltet jene Variablen, die zwar nicht 
intialisiert werden müssen, allerdings wurden diese Var's (z.B. mit 
#pragma location = ADR) an eine feste absolute Adresse gebunden!

von Ulf (Gast)


Lesenswert?

ja richtig das mit der Zuweisung hatte ich vergessen zu erwähnen.

Ich hab aber noch nicht verstanden wo ich die .map files finden soll.
Im Verzeichnis Debug/List gibt es nur die .list Dateien. Dort kann ich 
aber nicht erkennen wo Speicherüberlappungen auftreten, jedenfalls nicht 
unter den Segementen.

Und als .map Datei sind mir nur die mikrocntrollerspezifischen .xcl 
Dateien bekannt, die im Systemverzeichnis abgelegt sind. Allerdings auch 
dort finde ich keine Angaben zu Überlappungen oder DATA16_AN????

von Ulf (Gast)


Lesenswert?

Ja, ich hab jetzt rausgefunden, dass gem. Voreinstellung keine .map 
Dateien
genriert werden und man diese einstellen muss.
Ich muss jetzt noch sehen wo. In der Beschreibung steht unter dem "List 
Tab".
Das befindet sich ja in den Projektoptionen, aber da kann man nicht 
einstellen, dass .map Dateien generiert werden sollen.

von Ulf (Gast)


Lesenswert?

Weiss jemand vielleicht wo man die Einstellung in der IAR Embedded 
Workbench Version 4.7 findet?
Ich find es einfach nicht.

von Gast (Gast)


Lesenswert?

Project -> Options -> Linker -> List -> Generate Linker Listing -> 
Segment Map

von Ulf (Gast)


Lesenswert?

Ich hab's gefunden unter Project-Options-linker-List.
"Ja auch ein blindes Huhn findet mal einen Korn."

von barry (Gast)


Lesenswert?

Hi, ich denke du muss noch in deinem CStartup File gucken, ob du die 
Relativen Segmente mit einen Sprung von 1 Byte oder 2 Byte deklariert 
hast.
z.B.: RSEG INTVEC(0) oder RSEG INTVEC(1).
Barry

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.