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
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!
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????
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.
Weiss jemand vielleicht wo man die Einstellung in der IAR Embedded Workbench Version 4.7 findet? Ich find es einfach nicht.
Project -> Options -> Linker -> List -> Generate Linker Listing -> Segment Map
Ich hab's gefunden unter Project-Options-linker-List. "Ja auch ein blindes Huhn findet mal einen Korn."
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.