Forum: Compiler & IDEs atmega8 unter windoof...?


von mikrosaft (Gast)


Lesenswert?

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

von Matthias (Gast)


Lesenswert?

Hi

makefile nicht an die andere Architektur angepasst? Poste mal die genaue 
Fehlermeldung die der GCC ausspuckt.

Matthias

von mikrosaft (Gast)


Lesenswert?

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

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

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.

von Joerg Wunsch (Gast)


Lesenswert?

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).

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Jörg, der Zeilenumbruch erfolgt jetzt serverseitig bei 72 Zeichen, du
kannst dir/deinem Editor die Arbeit sparen.

von mikrosaft (Gast)


Lesenswert?

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

von Joerg Wunsch (Gast)


Lesenswert?

@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.

von Gerd Schroer (Gast)


Lesenswert?

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 ;)

von Matthias (Gast)


Lesenswert?

Hi

was spricht den "avr-gcc -v"?

Matthias

von Gerd Schroer (Gast)


Lesenswert?

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

von Joerg Wunsch (Gast)


Lesenswert?

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.

von Gerd Schroer (Gast)


Lesenswert?

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

von Gerd Schroer (Gast)


Angehängte Dateien:

Lesenswert?

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 --------

von Matthias (Gast)


Lesenswert?

Hi

ein "Fehler" im Beispielmakefile dieser Version ist dafür
verantwortlich. Tust du auskommentieren

LDFLAGS +=  -Wl,-u,vfprintf -lprintf_flt
und
LDFLAGS += -lm

Matthias

von Gerd Schroer (Gast)


Lesenswert?

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

von Joerg Wunsch (Gast)


Lesenswert?

-lm kannste auch drinlassen.  Aus der math-Bibliothek werden nur die
Sachen gelinkt, die auch wirklich gebraucht werden.

von Matthias (Gast)


Lesenswert?

Hi

Wieder was gelernt.
was ist den in math was man für nicht float brauchen könnte?

Matthias

von Joerg Wunsch (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.