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.