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
Sieht aus, wie ein Exception im Compiler. Ich würde beide Compiler deinstallieren und dann den neuen neu aufsetzen.
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...
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.
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...
Geändert nach obigem Schema. Einfach mal probieren. Für die ganzen Kniffe zu Make und der Toolchain müssen allerdings mal die Profis ran.
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.
@ 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...
Martin Müller wrote: > Nun kennt der Compiler nicht mal mehr die Registernamen für die > EEPROM-Routinen. Hast du denn #include <avr/io.h> nicht drin? Dort stehen diese Namen drin. <avr/eeprom.h> kennst du, ja?
#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
> 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.
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.