www.mikrocontroller.net

Forum: Compiler & IDEs avr-gcc mit ubuntu


Autor: Fritz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich hab's jetzt endlich geschafft einen einfachen Quellcode unter ubuntu 
(Linux) zu kompilieren. Allerdings erhalte ich ganz zum Schluss eine 
Fehlermeldung. die hex Datei wird aber trotzdem angelegt.



fritz@Fritz:~/avr/diverses$ make all

-------- begin --------
avr-gcc (GCC) 4.1.0
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is 
NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR 
PURPOSE.


Size before:
main.elf  :
section    size      addr
.text       266         0
.data         4   8388704
.bss          0   8388708
.noinit       0   8388708
.eeprom       0   8454144
.stab      1704         0
.stabstr   1727         0
Total      3701




Compiling: main.c
avr-gcc -c -mmcu=atmega16 -I. -gstabs   -O0 -fsigned-char 
-funsigned-bitfields -fpack-struct -fshort-enums -Wall 
-Wstrict-prototypes -Wa,-adhlns=main.lst  -std=gnu99 
-Wp,-M,-MP,-MT,main.o,-MF,.dep/main.o.d main.c -o main.o
main.c:17: warning: return type of ‘main’ is not ‘int’

Linking: main.elf
avr-gcc -mmcu=atmega16 -I. -gstabs   -O0 -fsigned-char 
-funsigned-bitfields -fpack-struct -fshort-enums -Wall 
-Wstrict-prototypes -Wa,-adhlns=main.o  -std=gnu99 
-Wp,-M,-MP,-MT,main.o,-MF,.dep/main.elf.d main.o   --output main.elf 
-Wl,-Map=main.map,--cref    -lm

Creating load file for Flash: main.hex
avr-objcopy -O ihex -R .eeprom main.elf main.hex

Creating load file for EEPROM: main.eep
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" \
        --change-section-lma .eeprom=0 -O ihex main.elf main.eep

Creating Extended Listing: main.lss
avr-objdump -h -S main.elf > main.lss

Creating Symbol Table: main.sym
avr-nm -n main.elf > main.sym

Converting to AVR Extended COFF: main.cof
avr-objcopy --debugging --change-section-address .data-0x800000 
--change-section-address .bss-0x800000 --change-section-address 
.noinit-0x800000 --change-section-address .eeprom-0x810000  -O 
coff-ext-avr main.elf main.cof
avr-objcopy: main.cof: Invalid bfd target
avr-objcopy: --change-section-vma .eeprom+0xff7f0000 nie benutzt
avr-objcopy: --change-section-lma .eeprom+0xff7f0000 nie benutzt
avr-objcopy: --change-section-vma .noinit+0xff800000 nie benutzt
avr-objcopy: --change-section-lma .noinit+0xff800000 nie benutzt
avr-objcopy: --change-section-vma .bss+0xff800000 nie benutzt
avr-objcopy: --change-section-lma .bss+0xff800000 nie benutzt
avr-objcopy: --change-section-vma .data+0xff800000 nie benutzt
avr-objcopy: --change-section-lma .data+0xff800000 nie benutzt
make: *** [extcoff] Fehler 1


Was hat das zu bedeuten?

Vielen Dank

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

Bewertung
0 lesenswert
nicht lesenswert
Fritz wrote:

> Was hat das zu bedeuten?

Dass du mit einem unsinnig alten Makefile-Template arbeitest (AVR COFF
hat man nur für alte AVR Studios gebraucht sowie braucht es noch für
VMlab), und dass die Ubuntu-Maintainer den AVR-COFF-Patch offenbar nicht
für nötig erachtet haben zu integrieren.

Das legt aber den Schluss nahe, dass sie auch andere Patches nicht
integriert haben werden, d. h. du wirst gegenüber den ,,Marktführern''
WinAVR, den FreeBSD-Ports und Bingo600s Build-Script (*) immer im
Nachteil bleiben.

(*) 
http://www.avrfreaks.net/index.php?name=PNphpBB2&f...

Autor: Fritz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ehrlich gesagt versteh ich jetzt nur Bahnhof!

Brauch ich ein anderes makefile, oder was? Ist das erzeugte hex file 
jetzt brauchbar oder nicht?

Was heißt jetzt "altes Makefile-Template"? Alt in Bezug auf was? An der 
Architektur des ATmega16 wird sich in den letzen Jahren nicht viel 
verändert haben.

Vielen Dank erst mal.

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

Bewertung
0 lesenswert
nicht lesenswert
Fritz wrote:
> Brauch ich ein anderes makefile, oder was?

Ja, oder avr-binutils, die AVR-COFF erzeugen können (Patch notwendig).
Das würdest du benötigen, falls du die Datei im AVR-COFF-Format wirklich
brauchst.  Der genannte Build-Script von Bingo600 holt sich die dafür
notwendigen Patches (und noch weitere, die dir wahrscheinlich ebenso
fehlen).

> Ist das erzeugte hex file
> jetzt brauchbar oder nicht?

Das hat damit nichts zu tun, das wird aus dem ELF-File generiert.
Das COFF-File würde ebenso aus dem ELF-File generiert (nur dass dieser
Schritt bei dir nicht funktioniert).

> Was heißt jetzt "altes Makefile-Template"? Alt in Bezug auf was?

AVR-COFF als Dateiformat ist praktisch (bis auf VMlab, aber das wird
nicht mehr gepflegt) “obsolet”, wie das so schön auf Neudeutsch heißt.
Google sollte dir darüber sicher was erzählen können, was es damit
auf sich hat.

Autor: Fritz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK, danke.

Ich brauch eigentlich nur das hex file. Welches makefile wäre denn da 
geeignet?

Vielen Dank

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.