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
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&file=viewtopic&t=42631
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.
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.
OK, danke. Ich brauch eigentlich nur das hex file. Welches makefile wäre denn da geeignet? Vielen Dank
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.