To get help with the AVR GNU toolchain, you can do the following:
The API Alphabetical index can be consulted here
This section illustrates the GUI options available for the AVR GNU toolchain from the Microchip Studio frontend.
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:
|
|
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
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.
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:
-Wl,-section-start=bootloader=0x1fc00
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:
-Wl,-section-start=anewdatasegment=0x800
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 |