PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : avr-gcc unter Win32 bzw. Linux



SprinterSB
09.11.2006, 16:20
Momentan verwende ich den avr-gcc 3.4.6

Unter Windows bzw. Linux unterstützt er jedoch unterschiedliche AVRs, so daß ich zeimlich verwirrt darüber bin.


> avr-gcc -v

Reading specs from e:/WinAVR-20060421/lib/gcc/avr/3.4.6/specs
Configured with: ../gcc-3.4.6/configure --prefix=/c/WinAVR --target=avr --enable
-languages=c,c++ --with-dwarf2 --enable-win32-registry=WinAVR --disable-nls
Thread model: single
gcc version 3.4.6

> avr-gcc --target-help

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
attiny13 attiny2313 attiny261 attiny461 attiny861 attiny24 attiny44
attiny84 attiny25 attiny45 attiny85 atmega603 atmega103 at43usb320
at43usb355 at76c711 atmega48 atmega8 atmega83 atmega85 atmega88
atmega8515 atmega8535 at90pwm2 at90pwm3 atmega16 atmega161 atmega162
atmega163 atmega164p atmega165 atmega165p atmega168 atmega169 atmega169p
atmega32 atmega323 atmega324p atmega325 atmega329 atmega3250 atmega3290
atmega406 atmega64 atmega640 atmega644 atmega644p atmega128 atmega1280
atmega1281 atmega645 atmega649 atmega6450 atmega6490 at90can32 at90can64
at90can128 at90usb646 at90usb647 at90usb1286 at90usb1287 at94k


> avr-gcc -v

Reading specs from /local/own/atmel/avr/lib/gcc/avr/3.4.6/specs
Configured with: ../gcc-3.4.6/configure --target=avr --prefix=/local/own/atmel/avr --disable-nls --enable-language=c,c++
Thread model: single
gcc version 3.4.6

> avr-gcc --target-help

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.

Wie leicht zu sehen ist unerscheiden sich beide deutlich bei den unterstützten AVRs, sind aber beide Version 3.4.6 :-k

Weiß da jemand näheres oder ne Idee wo was schiefgeht? Was der Linux-gcc sagt stimmt jedenfalls mit den Quellen überein (gcc-core-3.4.6)

linux_80
09.11.2006, 18:26
Hallo,
Welche AVRs unterstützt werden liegt doch an der Version der avr-binutils, nicht am GCC, oder !?

SprinterSB
10.11.2006, 10:58
Ja, auch...stimmt ](*,)

Hab mir die avr-binutils 2.16.1 besorgt und die patches von WinAVR (avr-size.patch und binutils-2.16-newdevices.patch) eingespielt, ich hoffe das passt alles zusammen...

Danke nochmal