[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
3.17.4 AVR Options
These options are defined for AVR implementations:
-mmcu=mcu
-
Specify Atmel AVR instruction set architectures (ISA) or MCU type.
The default for this option is
avr2
.GCC supports the following AVR devices and ISAs:
avr2
“Classic” devices with up to 8 KiB of program memory.
mcu =attiny22
,attiny26
,at90c8534
,at90s2313
,at90s2323
,at90s2333
,at90s2343
,at90s4414
,at90s4433
,at90s4434
,at90s8515
,at90s8535
.avr25
“Classic” devices with up to 8 KiB of program memory and with the
MOVW
instruction.
mcu =ata5272
,ata6289
,attiny13
,attiny13a
,attiny2313
,attiny2313a
,attiny24
,attiny24a
,attiny25
,attiny261
,attiny261a
,attiny43u
,attiny4313
,attiny44
,attiny44a
,attiny45
,attiny461
,attiny461a
,attiny48
,attiny84
,attiny84a
,attiny85
,attiny861
,attiny861a
,attiny87
,attiny88
,at86rf401
.avr3
“Classic” devices with 16 KiB up to 64 KiB of program memory.
mcu =at43usb355
,at76c711
.avr31
“Classic” devices with 128 KiB of program memory.
mcu =atmega103
,at43usb320
.avr35
“Classic” devices with 16 KiB up to 64 KiB of program memory and with the
MOVW
instruction.
mcu =ata5505
,atmega16u2
,atmega32u2
,atmega8u2
,attiny1634
,attiny167
,at90usb162
,at90usb82
.avr4
“Enhanced” devices with up to 8 KiB of program memory.
mcu =ata6285
,ata6286
,atmega48
,atmega48a
,atmega48p
,atmega48pa
,atmega8
,atmega8a
,atmega8hva
,atmega8515
,atmega8535
,atmega88
,atmega88a
,atmega88p
,atmega88pa
,at90pwm1
,at90pwm2
,at90pwm2b
,at90pwm3
,at90pwm3b
,at90pwm81
.avr5
“Enhanced” devices with 16 KiB up to 64 KiB of program memory.
mcu =ata5790
,ata5790n
,ata5795
,atmega16
,atmega16a
,atmega16hva
,atmega16hva2
,atmega16hvb
,atmega16hvbrevb
,atmega16m1
,atmega16u4
,atmega161
,atmega162
,atmega163
,atmega164a
,atmega164p
,atmega164pa
,atmega165
,atmega165a
,atmega165p
,atmega165pa
,atmega168
,atmega168a
,atmega168p
,atmega168pa
,atmega169
,atmega169a
,atmega169p
,atmega169pa
,atmega26hvg
,atmega32
,atmega32a
,atmega32c1
,atmega32hvb
,atmega32hvbrevb
,atmega32m1
,atmega32u4
,atmega32u6
,atmega323
,atmega324a
,atmega324p
,atmega324pa
,atmega325
,atmega325a
,atmega325p
,atmega3250
,atmega3250a
,atmega3250p
,atmega3250pa
,atmega328
,atmega328p
,atmega329
,atmega329a
,atmega329p
,atmega329pa
,atmega3290
,atmega3290a
,atmega3290p
,atmega3290pa
,atmega406
,atmega48hvf
,atmega64
,atmega64a
,atmega64c1
,atmega64hve
,atmega64m1
,atmega64rfa2
,atmega64rfr2
,atmega640
,atmega644
,atmega644a
,atmega644p
,atmega644pa
,atmega645
,atmega645a
,atmega645p
,atmega6450
,atmega6450a
,atmega6450p
,atmega649
,atmega649a
,atmega649p
,atmega6490
,atmega6490a
,atmega6490p
,at90can32
,at90can64
,at90pwm161
,at90pwm216
,at90pwm316
,at90scr100
,at90usb646
,at90usb647
,at94k
,m3000
.avr51
“Enhanced” devices with 128 KiB of program memory.
mcu =atmega128
,atmega128a
,atmega128rfa1
,atmega1280
,atmega1281
,atmega1284
,atmega1284p
,at90can128
,at90usb1286
,at90usb1287
.avr6
“Enhanced” devices with 3-byte PC, i.e. with more than 128 KiB of program memory.
mcu =atmega2560
,atmega2561
.avrxmega2
“XMEGA” devices with more than 8 KiB and up to 64 KiB of program memory.
mcu =atmxt112sl
,atmxt224
,atmxt224e
,atmxt336s
,atxmega16a4
,atxmega16a4u
,atxmega16c4
,atxmega16d4
,atxmega16x1
,atxmega32a4
,atxmega32a4u
,atxmega32c4
,atxmega32d4
,atxmega32e5
,atxmega32x1
.avrxmega4
“XMEGA” devices with more than 64 KiB and up to 128 KiB of program memory.
mcu =atxmega64a3
,atxmega64a3u
,atxmega64a4u
,atxmega64b1
,atxmega64b3
,atxmega64c3
,atxmega64d3
,atxmega64d4
.avrxmega5
“XMEGA” devices with more than 64 KiB and up to 128 KiB of program memory and more than 64 KiB of RAM.
mcu =atxmega64a1
,atxmega64a1u
.avrxmega6
“XMEGA” devices with more than 128 KiB of program memory.
mcu =atmxt540s
,atmxt540sreva
,atxmega128a3
,atxmega128a3u
,atxmega128b1
,atxmega128b3
,atxmega128c3
,atxmega128d3
,atxmega128d4
,atxmega192a3
,atxmega192a3u
,atxmega192c3
,atxmega192d3
,atxmega256a3
,atxmega256a3b
,atxmega256a3bu
,atxmega256a3u
,atxmega256c3
,atxmega256d3
,atxmega384c3
,atxmega384d3
.avrxmega7
“XMEGA” devices with more than 128 KiB of program memory and more than 64 KiB of RAM.
mcu =atxmega128a1
,atxmega128a1u
,atxmega128a4u
.avr1
This ISA is implemented by the minimal AVR core and supported for assembler only.
mcu =attiny11
,attiny12
,attiny15
,attiny28
,at90s1200
.
-maccumulate-args
-
Accumulate outgoing function arguments and acquire/release the needed stack space for outgoing function arguments once in function prologue/epilogue. Without this option, outgoing arguments are pushed before calling a function and popped afterwards.
Popping the arguments after the function call can be expensive on AVR so that accumulating the stack space might lead to smaller executables because arguments need not to be removed from the stack after such a function call.
This option can lead to reduced code size for functions that perform several calls to functions that get their arguments on the stack like calls to printf-like functions.
-mbranch-cost=cost
-
Set the branch costs for conditional branch instructions to cost. Reasonable values for cost are small, non-negative integers. The default branch cost is 0.
-mcall-prologues
-
Functions prologues/epilogues are expanded as calls to appropriate subroutines. Code size is smaller.
-mint8
-
Assume
int
to be 8-bit integer. This affects the sizes of all types: achar
is 1 byte, anint
is 1 byte, along
is 2 bytes, andlong long
is 4 bytes. Please note that this option does not conform to the C standards, but it results in smaller code size. -mno-interrupts
-
Generated code is not compatible with hardware interrupts. Code size is smaller.
-mrelax
-
Try to replace
CALL
resp.JMP
instruction by the shorterRCALL
resp.RJMP
instruction if applicable. Setting-mrelax
just adds the--relax
option to the linker command line when the linker is called.Jump relaxing is performed by the linker because jump offsets are not known before code is located. Therefore, the assembler code generated by the compiler is the same, but the instructions in the executable may differ from instructions in the assembler code.
Relaxing must be turned on if linker stubs are needed, see the section on
EIND
and linker stubs below. -msp8
-
Treat the stack pointer register as an 8-bit register, i.e. assume the high byte of the stack pointer is zero. In general, you don’t need to set this option by hand.
This option is used internally by the compiler to select and build multilibs for architectures
avr2
andavr25
. These architectures mix devices with and withoutSPH
. For any setting other than-mmcu=avr2
or-mmcu=avr25
the compiler driver will add or remove this option from the compiler proper’s command line, because the compiler then knows if the device or architecture has an 8-bit stack pointer and thus noSPH
register or not. -mstrict-X
-
Use address register
X
in a way proposed by the hardware. This means thatX
is only used in indirect, post-increment or pre-decrement addressing.Without this option, the
X
register may be used in the same way asY
orZ
which then is emulated by additional instructions. For example, loading a value withX+const
addressing with a small non-negativeconst < 64
to a register Rn is performed asadiw r26, const ; X += const ld Rn, X ; Rn = *X sbiw r26, const ; X -= const
-mtiny-stack
-
Only change the lower 8 bits of the stack pointer.
-Waddr-space-convert
-
Warn about conversions between address spaces in the case where the resulting address space is not contained in the incoming address space.
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated on October 19, 2013 using texi2html 5.0.