Software

AVR® Compiler and Toolchain Options: GUI

To get help with the AVR GNU toolchain, you can do the following:

This section illustrates the GUI options available for the AVR GNU toolchain from the Microchip Studio frontend.

Figure 1. AVR® GNU Toolchain Options


AVR® GNU C Compiler Options

Table 1. AVR® GNU C Compiler Options
Option Description
General Options
-mcall-prologues Use subroutines for functions prologues and epilogues
-mno-interrupts Change stack pointer without disabling interrupts
-funsigned-char Default char type is unsigned
-funsigned-bitfield Default bit field is unsigned
Preprocessor Options
-nostdinc Do not search system directories
-E Preprocess only
Symbols Options

One can define (-D) or undefine (-U) in-source symbols. New symbol declarations can be added, modified, or reordered, using the interface buttons below:

  • Add a new symbol. This symbol and all following icons are reused with the same meaning in other parts of the Microchip Studio interface.

  • Remove a symbol.

  • Edit symbol.

  • Move the symbol up in the parsing order.

  • Move the symbol down in the parsing order.

Include Directories

Contains all the included header and definition directories, can be modified, using the same interface as symbols.
Optimization Options
Optimization level (drop-down menu): -O0, -O1, -O2, -O3, -Os No optimization, optimize for speed (level 1 - 3), optimize for size
Other optimization flags (manual input form) Here you should write optimization flags specific to the platform and your requirements
-ffunction-sections Prepare functions for garbage collection, if a function is never used, its memory will be scrapped
-fpack-struct Pack structure members together
-fshort-enums Allocate only as many bytes needed by the enumerated types
-mshort-calls Use rjmp/rcall limited range instructions on the >8K devices
Debug Options
Debug level (drop-down menu): none, -g1, -g2, -g3 Specifies the level of tracing and debugging code and headers left or inserted in the source code
Other debug options (form field) Architecture-specific debug options
Warning Messages Output Options
-Wall All warnings
-Werror Escalate warnings to errors
-fsyntax-only Check syntax only
-pedantic Check conformity to GNU, raise warnings on non-standard programming practice
-pedantic-errors Same as above, plus escalate warnings to errors
Miscellaneous Options
Other flags (form field) Input other project-specific flags
-v Verbose
-ansi Support ANSI programs
-save-temps Do not delete temporary files

AVR® GCC Linker Options

Table 2. AVR® GCC Linker Options
Option Description
-Wl -nostartfiles Do not use standard files
-Wl -nodefault Do not use default libraries
-Wl -nostdlib No start-up or default libraries
-Wl -s Omit all symbol information
-Wl -static Link statically
Libraries Options
Libraries -Wl, -l (form field) Add, prioritize, or edit library names here, using those buttons: , , , ,
Library search path -Wl,-L (form field) Add, prioritize, or edit the path where the linker will search for dynamically linked libraries. The same interface as above.
Optimization Options
-Wl, -gc-sections Garbage collect unused sections
--rodata-writable Put read-only data in writable spaces
-mrelax Relax branches
Miscellaneous Options
Other linker flags (form field) Input other project-specific flags

Memory Settings

Displays a dialog where it is possible to configure memory segments. (Syntax for specifying segment values: <segmentname> = <address>, for example boot=0xff)

The address must be given as a hexadecimal number prefixed with 0x. It is interpreted as a word address for Flash memory and a byte address for SRAM and EEPROM memory.

Figure 2. Memory Settings


Notes About the AVR® Port of GCC

The AVR is a Harvard architecture CPU, which means that it separates instruction memory and data memory. Originally the GCC was designed to support Von Neumann architectures, defining a single storage structure to hold both instructions and data. This dichotomy is solved by a series of nifty tricks in the AVR port of GCC, of which three should be noted:

These peculiarities have been abstracted away by the GUI, but users will see the truth when building projects with relocated segments.

A relocation definition for Flash will be passed to the GNU linker via avr-gcc as the option:

Note that the address has been multiplied by 2 to get the byte address.

A relocation definition for the .data section will be passed as:

AVR® Assembler Options

Table 3. AVR® Assembler Options
Option Description
Optimization Options
Assembler flags (form field) Miscellaneous assembler flags
Include path (form field) You can add, prioritize, or edit the path to the architecture and platform-specific included files here
-v Announce version in the assembler output
Debugging Options
Debugging (drop-down menu) None, -Wa -g Enables debugging symbol and debugging source insertion