Hallo,
Ich habe ein Programm für ein PWM-Modul geschrieben, bei dem verschedene
Lernwerte im EEPROM gesichert werden sollen. Dazu benutze ich die
AVR-GCC-EEPROM-Bibliothek.
Das sind die EEPROM Variablen und die enstprechenden SRAM Daten:
einzelne eeprom-Funktionen aus, kompiliert das Programm fehlerfrei,
wenn ich aber alles drin habe, kommt mehrfach - jedoch für mich nicht
nachvollziehbar dieser fehler:
Error: R_AVR_13_PCREL against symbol `__eerd_block_m168' defined in
.text.avr-libc section in c:/program files/atmel/avr studio 5.0/avr
toolchain/bin/../lib/gcc/avr/4.5.1/../../../../avr/lib/avr5\libc.a(eerd_
block_atmega168.o)
F:\Documents\AVRStudioFiles\PWM_V1.2\PWM_V1.2\Debug/.././PWM_V1.2.c
Ich benutze AVR-Studio5 und das aktuelle WinAVR. Weder im Datenblatt
noch im GCC-Tutorial habe ich irgendeine Lösung gefunden und ich glaube
nicht, dass es ein Bug im GCC ist.
Ich danke euch schonmal für eure Hilfe.
Klaus Wachtler schrieb:> 1. Fehlt da was in der Fehlermeldung?> z.B. ein "relocation truncated to fit"
Nein, die Fehlermeldung habe ich direkt aus dem Studio rauskopiert.
> 2. Hilft vielleicht ein Hinzufügen der math-lib?
Nein, falls du damit die math.h meinst, nicht.
> 3.> http://www.avrfreaks.net/index.php?name=PNphpBB2&f...
Das hat mir 'weitergeholfen'. Ich habe die in der Fehlermeldung
angegebene libc.a mit gelinked (das schreibt man sicher anders). Jetzt
geht's.
Danke Klaus.
Die math.h wird per #include beim Compilieren eingefügt.
Ich sprach dagegen vom Linken, dort ist das eine libm.a, die dazu
gelinkt werden kann.
Das geht je nach Umgebung z.B. durch Anklicken in der IDE irgendwo bei
den Linkeroptionen oder auf Kommandozeilenebene durch die Option -lm.
Bei Verwendung eines Makefiles halt irgendwo bei den Linkeroptionen, so
daß -lm an den Linker mit übergeben wird.
robert-p schrieb:> Linker-Optionen:> -Wl,-lc -Wl,-lm
Stattdessen einfach ein -lm als letzte Option beim Linken.
Und avr-gcc als Linker(Treiber) verwenden, was du offenbar schon machst.
Johann L. schrieb:> robert-p schrieb:>> Linker-Optionen:>> -Wl,-lc -Wl,-lm>> Stattdessen einfach ein -lm als letzte Option beim Linken.
Leider Nichts. -lm als letzte Option bringt mich wieder auf Anfang.
Werde mal ein bisschen mit den Linker-Optionen im Studio spielen.