Forum: Mikrocontroller und Digitale Elektronik Fehler beim compilieren / linken branch out of range


von Fabio S. (codehamster)


Lesenswert?

Hallo zusammen,

ich habe heute ein Update meiner Programmierumgebung gemacht. Und 
bekomme nun einen Fehler den ich nicht kenne. Vermutlich habe ich ein 
problem beim Linken.

Das Projekt konnte ich mit der Vorgänger Version ohne Probleme 
compilieren.

Kann jemand etwas mit der Fehlermeldung branch out of range etwas 
anfangen??? Bin um jede Hilfe dankbar.

MFG codehamster

!E servicecard.s(865): branch out of range
!E servicecard.s(866): symbol 'L75': address changed at phase 3: old 
03DE new 03DC at line 866
!E servicecard.s(893): symbol 'L82': address changed at phase 3: old 
03FC new 03FA at line 893
!E servicecard.s(900): symbol 'L83': address changed at phase 3: old 
0400 new 03FE at line 900
!E servicecard.s(913): symbol 'L79': address changed at phase 3: old 
040C new 040A at line 913
...
...
...
!E servicecard.s(3862): symbol 'L270': address changed at phase 3: old 
172E new 172C at line 3862
C:\iccv7430\bin\imakew.exe: Error code 1
C:\iccv7430\bin\imakew.exe: 'servicecard.o' removed.

von Fabio S. (codehamster)


Lesenswert?

jemand eine idee?

wenn ich die golbale Optimierung einschalte wird nicht mehr gemeckert...

branch tönt nach einem Sprung, ich verwende keine goto befehle, jedoch 
werden wohl if / else und for Bedingungen auch mit Sprüngen abgebildet.

würde das ganze auch gerne ohne Optimierung kompilieren können.

von Bernhard R. (barnyhh)


Lesenswert?

Die Antwort ist 42!

Welcher Processor?
Welche Programmiersprache?
Welcher Compiler?
Welche Compiler-Versionen?

Bernhard

von Fabio S. (codehamster)


Lesenswert?

Bernhard R. schrieb:
> Die Antwort ist 42!
>
> Welcher Processor?
MSP430F449
> Welche Programmiersprache?
C
> Welcher Compiler?
ICC430 von Imagecraft.com
> Welche Compiler-Versionen?
Version 7.12B Professional
>


codehamster

von Kai S. (zigzeg)


Lesenswert?

Fabio S. schrieb:
> Hallo zusammen,
>
> Kann jemand etwas mit der Fehlermeldung branch out of range etwas
> anfangen??? Bin um jede Hilfe dankbar.
>

Relative branches haben oft einen beschraenkten Sprungbereich. Hier 
scheint dieser nicht auszureichen. Vielleicht erzeugt Deine neue 
Tool-Version (wenn ich das bei Dir richtig verstanden habe) groesseren 
Code ?

Moegliche Loesungen:
1) Andere Compiler-Optionen verwenden (z.B. fuer kompakteren code)
2) Module in anderer Reihenfolge zusammenlinken (vielleicht macht das 
die globale Optimierung ?)
3) Branch durch Jump ersezten. Ist bei C code (ist es C code ?) 
natuerlich nicht so einfach.

ZigZeg

von Fabio S. (codehamster)


Lesenswert?

Hallo Kai,

danke für die Tipps. Ich werde Sie verfolgen. Allenfalls diese 
Monsterfunktion in kleinere Pakete unterteilen. Ist ein älteres Projekt 
dass ich wieder hervorholen musste und nun mit dem neuen Compiler so 
nicht mehr funktioniert. Aber der wird ja aus gutem Grund meckern. Somit 
versuche ich erstmal die unschöne Monsterfunktion in kleinere 
unterfunktionen zu zerlegen. Ev. funktionierts ja dann.

MFG Codehamster

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.