mahlzeit, habe folgendes problem: ich habe winavr installiert und diverse testprogramme für den 90s2343 und den 90s4433 compiliert. klappt alles wunderbar, und läuft auch wie gewünscht in der schaltung. wenn ich aber mit dem atmega8 arbeiten will, kommt beim make eine fehlermeldung, dass der mega8 nicht unterstützt wird. das verwundert mich ein wenig, steht doch in der doku zur gcc dass der mega8 unterstützt wird... hab übrigens die neueste version von winavr (april 2003) installiert... kennt jemand den grund, warum das nicht funzt? gruss ms
Hi makefile nicht an die andere Architektur angepasst? Poste mal die genaue Fehlermeldung die der GCC ausspuckt. Matthias
södele, hat was gedauert weil ich erst meinen vdr runterfahren musste... hier der auswurf von dos: C:\Programme\avr\progs\test1>make avr-gcc -c -g -O3 -Wall -Wstrict-prototypes -Wa,-ahlms=test1.lst -mmcu=atmega8 - I. test1.c -o test1.o Wrong mcu `atmega8' specified Allowed mcu's: at90s2313 at90s2323 at90s2333 attiny22 at90s2343 at90s4433 at90s4414 at90s4434 at90s8515 at90s8535 atmega603 atmega103 cc1.exe: C:\PROGRA~1\AVR\BIN\MAKE.EXE: *** [test1.o] Error 1 für mich hört sich das so an, als würde der keine mega8 mögen... gruss ms
Das ist alles, nur nicht die neueste Version von Winavr. Ich vermute du hast noch die alte AVRFreaks-Version installiert & im Path stehen, lösch die einfach und probier's nochmal.
Btw., -O3 ist in 99 % der Fälle eher Unsinn (erzeugt sehr großen Code, der im günstigsten Fall weniger als 10 % schneller als der von -Os rechnet).
Jörg, der Zeilenumbruch erfolgt jetzt serverseitig bei 72 Zeichen, du kannst dir/deinem Editor die Arbeit sparen.
hmm, hab noch mal das ganze von hier runtergeladen (http://sourceforge.net/project/showfiles.php?group_id=68108&release_id=155082) ist aber das gleiche wie ich schon habe, also das aktuelle winavr... werd das ganze mal unter linux probieren... gruss ms
@Andreas, ja, bislang mußte man es ja manuell machen, damit es einigermaßen ,,aussah''... @[der Herr mit dem Namen, den er uns nicht nennt] es ging ja nicht darum, daß Du kein WinAVR hättest, sondern daß Du offenbar außerdem noch die alte avrfreaks.net-Version installiert hast. Da die im %PATH% vor der WinAVR-Version steht, wird sie dann zuerst gefunden. Daher diese deinstallieren, so daß nur noch WinAVR da ist.
hmmm, das einzige was ich installiert habe ist aber winavr (und avrstudio 4)... und bei der installation habe ich mich an die anleitung gehalten. (avrfreaks habe ich extra nicht weiter verfolgt weil ja überall dransteht, dass die nicht so häufig aktualisiert wird) jetzt schnall ich nix mehr... wie kann dann die freaks-version auf meinem rechner landen, wenn ich die gar nicht runtergeladen hab geschweige denn installiert (oder ist die beim winavr mit dabei?) gruss gerd alias ms ;)
hi matthias, -v werd ich wohl heut nicht mehr ausprobieren (kann den vdr heut nicht abstellen, dann killt mich die wg...), aber ich werds probieren, sobald ich die gelegenheit habe (was mit arbeiten nicht so leicht unter einen hut zu kriegen ist...) gruss (g/m)s
avr-gcc --target-help ist auch ganz nützlich, Gerd (und danke für den Namen, ich mag gern mit Menschen reden ;-). Ich bekomme für einen aktuellen avr-gcc hier: Target specific options: -msize Output instruction sizes to the asm file -mshort-calls Use rjmp/rcall (limited range) on >8K devices -mno-tablejump Do not generate tablejump insns -mtiny-stack Change only the low 8 bits of the stack pointer -mcall-prologues Use subroutines for function prologue/epilogue -mno-interrupts Change the stack pointer without disabling interrupts -mint8 Assume int to be 8 bit integer -mmcu= Specify the MCU name -minit-stack= Specify the initial stack address There are undocumented target specific options as well. AVR options: -mmcu=[avr-name] select microcontroller variant [avr-name] can be: avr1 - AT90S1200, ATtiny1x, ATtiny28 avr2 - AT90S2xxx, AT90S4xxx, AT90S8xxx, ATtiny22 avr3 - ATmega103, ATmega603 avr4 - ATmega83, ATmega85 avr5 - ATmega161, ATmega163, ATmega32, AT94K or immediate microcontroller name. -mall-opcodes accept all AVR opcodes, even if not supported by MCU -mno-skip-bug disable warnings for skipping two-word instructions (default for avr4, avr5) -mno-wrap reject rjmp/rcall instructions with 8K wrap-around (default for avr3, avr5) Known MCU names: avr1 avr2 avr3 avr4 avr5 at90s1200 attiny10 attiny11 attiny12 attiny15 attiny28 at90s2313 at90s2323 at90s2333 at90s2343 attiny22 attiny26 at90s4433 at90s4414 at90s4434 at90s8515 at90s8535 at90c8534 at86rf401 atmega603 atmega103 at43usb320 at43usb355 at76c711 atmega8 atmega83 atmega85 atmega8515 atmega8535 atmega16 atmega161 atmega162 atmega163 atmega169 atmega32 atmega323 atmega64 atmega128 at94k no emulation specific options. Die `Known MCU names' sind die, die Dich hier wohl interessieren.
mahlzeit... also, hab jetzt mittlerweile geschnallt was sache ist. meine gcc-version war die 2.95 von oktober 99... >8( fragt jetzt bitte nicht, wo und wie ich da dran gekommen bin... ich schiebs jetzt einfach auf die hitze und erfreue mich jetzt einfach einer 'wirklich' aktuellen version des compilers... danke für eure tips, jedenfalls hab ich jetzt einen funktionstüchtigen compiler. gruss gerd
hi ihrs, ich glaub mein avr pfeift... es kann doch nicht sein, dass die alte version von 99 für den 4433 300 byte hexcode macht, während das aktuelle teil den gleichen sourcecode für den mega8 auf 12k aufbläst... avr-gcc -c -mmcu=atmega8 -I. -g -O3 -funsigned-char -funsigned-bitfields -fpack- struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test1.lst test1.c -o t est1.o test1.c:29: warning: return type of `main' is not `int' avr-gcc -mmcu=atmega8 -I. -g -O3 -funsigned-char -funsigned-bitfields -fpack-str uct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test1.o test1.o --outp ut test1.elf -Wl,-Map=test1.map,--cref -Wl,-u,vfprintf -lprintf_flt -lm avr-objcopy -O ihex -R .eeprom test1.elf test1.hex avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section -lma .eeprom=0 -O ihex test1.elf test1.eep avr-objdump -h -S test1.elf > test1.lss Size after: test1.elf : section size addr .text 4564 0 .data 6 8388704 .bss 4 8388710 .noinit 0 8388714 .eeprom 0 8454144 .stab 948 0 .stabstr 1110 0 Total 6632 Errors: none -------- end --------
Hi ein "Fehler" im Beispielmakefile dieser Version ist dafür verantwortlich. Tust du auskommentieren LDFLAGS += -Wl,-u,vfprintf -lprintf_flt und LDFLAGS += -lm Matthias
danke matthias, sowas passiert, wenn man nicht wirklich weiss, was man tut... gg ich glaub, ich muss noch viel lesen (und verstehen). wenn nur mein englisch nicht so schlecht wäre... gruss gerd
-lm kannste auch drinlassen. Aus der math-Bibliothek werden nur die Sachen gelinkt, die auch wirklich gebraucht werden.
Hi Wieder was gelernt. was ist den in math was man für nicht float brauchen könnte? Matthias
Im Wesentlichen sind es die Funktionen dafür. Die Grundrechenarten macht der Compiler bzw. die libgcc.a.
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.