Fehlermeldung bei neuem Compiler

OP #628177
Lesenswert?

Hallo,

ich habe bisher mit einem ca. 2 Jahre alten GNU-Compiler gearbeitet. Nun 
bin ich auf die dumme Idee gekommen, den neuen zu instalieren 
(WinAVR-20070525-install.exe).

Der hat etliche "Unschönheiten" im Quellcode angemeckert, die den alten 
Compiler nicht gestört haben. Die Fehler habe ich soweit beseitigt. Nun 
kommt noch folgende Meldung beim Compilieren:


> "make.exe" all
avr-gcc -g -Wall -Os -mmcu=atmega128    -c -o master.o master.c
avr-gcc -g -Wall -Os -mmcu=atmega128  -Wl,-Map,master.c.map -o 
master.c.elf master.o
avr-objdump -h -S master.c.elf > master.c.lst
avr-objcopy -j .text -j .data -O ihex master.c.elf master.c.hex
avr-objcopy -j .text -j .data -O binary master.c.elf master.c.bin
avr-objcopy -j .text -j .data -O srec master.c.elf master.c.srec
avr-objcopy -j .eeprom --change-section-lma .eeprom=0 -O ihex 
master.c.elf master.c_eeprom.hex
avr-objcopy: there are no sections to be copied!
avr-objcopy: --change-section-lma .eeprom=0x00000000 never used
make.exe: *** [master.c_eeprom.hex] Error 1

> Process Exit Code: 2
> Time Taken: 00:04



Was genau ist denn nun das Problem für den einen Fehler? Hat es was mit 
dem EEPROM zu tun? Es handelt sich um ein ATMEGA128.

Ich habe auf meinem Entwicklungsrechner die alte Compiler-Version drauf 
gelassen, falls was schief läuft. Die hat nun das selbe Problem. Die 
Installation des neuen Compilers hat den alten Compiler anscheinend 
"verbogen", obwohl er in einem anderen Pfad installiert wurde.

Das AVR-Studio stürzt nun auch mit einer Fehlermeldung ab (siehe 
Anhang). Ich vermute es liegt auch an dem Fehler beim Compilieren...


Gruß
Martin
Angehängte Dateien:
OP #628194
Lesenswert?

Ich komme mit dem neuen AVR-Studio nicht ganz klar, daher verwende ich 
das alte. Aber trotzdem bringt der Compiler diese Meldung. Ich denke ich 
muß erst mal die Sache mit dem Compilerfehler lösen. Wenn dann das alte 
AVR-Studio immer noch abstürzt, dann werde ich mich wohl an das neue 
gewöhnen müssen.

Ich habe den neuen Compiler erst auf meinem neuen PC drauf gespielt 
(nicht der Entwicklungsrechner). Dort ist der alte Compiler nicht 
installiert gewesen. Daran kann es nicht liegen. Mit dem habe ich das 
selbe Problem...
Persönliche Seite #628203
Lesenswert?

avr-objcopy: there are no sections to be copied!
avr-objcopy: --change-section-lma .eeprom=0x00000000 never used

Soweit ich das letztens hatte, ist das das Problem mit dem neuen Winavr, 
wenn es keine Daten fürs EEPROM gibt. Trat bei mir auf beim make der 
avrlib. Zur Lösung hilft in Block 9 des Makefiles bei %.eep ein Minus 
vor $(OBJCOPY)


%.eep: %.elf
  -$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" 
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@

Normalerweise steht da kein Minus davor. OBJCOPY ist mit avr-objcopy 
belegt.

Die Idee habe ich hier aus dem Forum, weil das objcopy Sorgen hätte, 
wenn kein eep-File existiert. Ich schätze, du musst deine Makefiles 
entsprechend anpassen.
OP #628224
Lesenswert?

Hallo Thomas,

hab das nicht so ganz verstanden. Hier mein Makefile im Anhang. Kannst 
Du mir dieses bitte ändern?

Mit dem ATMEGA128 hatte ich bisher auch immer das Problem, daß das 
EEPROM bei jedem Ladevorgang vom neu compilierten File gelöscht wurde. 
Beim ATMEGA 88 hatte ich dieses Problem nicht. Vielleicht ist damit dann 
auch dieses Problem gelöst...
Angehängte Dateien:
#628354
Lesenswert?

Martin Müller wrote:
> Ich komme mit dem neuen AVR-Studio nicht ganz klar, daher verwende ich
> das alte. Aber trotzdem bringt der Compiler diese Meldung. Ich denke ich
> muß erst mal die Sache mit dem Compilerfehler lösen. Wenn dann das alte
> AVR-Studio immer noch abstürzt, dann werde ich mich wohl an das neue
> gewöhnen müssen.
Die 2007er WINAVR-Versionen laufen nur mit AVRStudio 4.13! Die alten 
Versionen unterstützen das nicht.
OP #628926
Lesenswert?

@ Thomas:

mit dem neuen Makefile steigt die Anzahl der Fehler:


> "make.exe" all
avr-objcopy -j .eeprom --change-section-lma .eeprom=0 -O ihex 
master.c.elf master.c_eeprom.hex
avr-objcopy: there are no sections to be copied!
avr-objcopy: --change-section-lma .eeprom=0x00000000 never used
make.exe: [master.c_eeprom.hex] Error 1 (ignored)
avr-objcopy -j .eeprom --change-section-lma .eeprom=0 -O binary 
master.c.elf master.c_eeprom.bin
avr-objcopy: there are no sections to be copied!
avr-objcopy: --change-section-lma .eeprom=0x00000000 never used
make.exe: [master.c_eeprom.bin] Error 1 (ignored)
avr-objcopy -j .eeprom --change-section-lma .eeprom=0 -O srec 
master.c.elf master.c_eeprom.srec
avr-objcopy: there are no sections to be copied!
avr-objcopy: --change-section-lma .eeprom=0x00000000 never used
make.exe: [master.c_eeprom.srec] Error 1 (ignored)
avr-gcc -g -Wall -Os -mmcu=atmega128   -Wl,-Map,master.c.map  eeprom.c 
ehex ebin esrec   -o eeprom
eeprom.c: In function 'EEPROM_read':
eeprom.c:54: error: 'EECR' undeclared (first use in this function)
eeprom.c:54: error: (Each undeclared identifier is reported only once
eeprom.c:54: error: for each function it appears in.)
eeprom.c:54: error: 'EEWE' undeclared (first use in this function)
eeprom.c:57: error: 'EEAR' undeclared (first use in this function)
eeprom.c:59: error: 'EERE' undeclared (first use in this function)
eeprom.c:67: error: 'EEDR' undeclared (first use in this function)
avr-gcc: ehex: No such file or directory
avr-gcc: ebin: No such file or directory
avr-gcc: esrec: No such file or directory
make.exe: *** [eeprom] Error 1

> Process Exit Code: 2
> Time Taken: 00:00


Nun kennt der Compiler nicht mal mehr die Registernamen für die 
EEPROM-Routinen.




@ Johannes:
dann muß ich mich wohl an die neue Version gewöhnen...
OP #628950
Lesenswert?

#include <avr/io.h> war drin, bisher aber nur in der Hauptdatei 
"master.c". Nun habe ich #include <avr/io.h> auch in meine 
EEPROM-Funktionsdatei kopiert.

Immer noch ein Fehler beim Compilieren:


> "make.exe" all
avr-objcopy -j .eeprom --change-section-lma .eeprom=0 -O ihex 
master.c.elf master.c_eeprom.hex
avr-objcopy: there are no sections to be copied!
avr-objcopy: --change-section-lma .eeprom=0x00000000 never used
make.exe: [master.c_eeprom.hex] Error 1 (ignored)
avr-objcopy -j .eeprom --change-section-lma .eeprom=0 -O binary 
master.c.elf master.c_eeprom.bin
avr-objcopy: there are no sections to be copied!
avr-objcopy: --change-section-lma .eeprom=0x00000000 never used
make.exe: [master.c_eeprom.bin] Error 1 (ignored)
avr-objcopy -j .eeprom --change-section-lma .eeprom=0 -O srec 
master.c.elf master.c_eeprom.srec
avr-objcopy: there are no sections to be copied!
avr-objcopy: --change-section-lma .eeprom=0x00000000 never used
make.exe: [master.c_eeprom.srec] Error 1 (ignored)
avr-gcc -g -Wall -Os -mmcu=atmega128   -Wl,-Map,master.c.map  eeprom.c 
ehex ebin esrec   -o eeprom
avr-gcc: ehex: No such file or directory
avr-gcc: ebin: No such file or directory
avr-gcc: esrec: No such file or directory
make.exe: *** [eeprom] Error 1

> Process Exit Code: 2
> Time Taken: 00:00




Ich glaube da muß ich mal einen Spezialist fragen. Wo finde ich 
Spezialisten für den GNU-Compiler? Am besten einer, der das 
Compilerprogramm mit entwickelt hat...

Gruß
Martin
Persönliche Seite #629038
Lesenswert?

> mit dem neuen Makefile steigt die Anzahl der Fehler:

Das hat mit der Änderung aber nichts zu tun, wie du hier siehst:

> make.exe: [master.c_eeprom.bin] Error 1 (ignored)

Hier rattert er nämlich über die Stelle drüber, an der du vorher hängen 
geblieben bist.

> eeprom.c:54: error: 'EECR' undeclared (first use in this function)
> Nun kennt der Compiler nicht mal mehr die Registernamen für die
> EEPROM-Routinen.

Da ist jetzt jedenfalls nicht mehr objcopy dran schuld... Eher ein 
Problem mit Includefiles etc.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren