mikrocontroller.net

Forum: Compiler & IDEs Fehlermeldung bei neuem Compiler


Autor: Martin M. (martin69)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Könnte sein, dass du ein neues Studio brauchst.

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sieht aus, wie ein Exception im Compiler.

Ich würde beide Compiler deinstallieren und dann den neuen neu 
aufsetzen.

Autor: Martin M. (martin69)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Thomas B. (yahp) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Martin M. (martin69)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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...

Autor: Thomas B. (yahp) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Martin M. (martin69)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Martin M. (martin69)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas B. (yahp) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.