You can configure the compiler using the project configuration window. To open it, use the "Configure project" entry in the "Project" Menu. The window, which comes up then, is shown in figure 1.
|Figure 1: The project configuration window|
On the right hand side, You can choose the microcontroller unit You want to use for Your project. In this example, it is the mature AT90S8515 controller. Below, You can set the operating frequency in Hertz, and some information is shown about the selected controller.
The checkbox saying "External SRAM" is currently without function. For the future, if this checkbox is checked, we plan to add code that enables the external SRAM at a very early stage of execution. This is neccessary to ensure correct execution of Your program when using external RAM.
In the bottom of the tab, You can set the names of the HEX and MAP file. The former is used to program the controller, the latter is for debugging purposes.
You can configure the compiler on the "Compiler" tab, shown in figure 2.
|Figure 2: The compiler configuration window|
On that tab, You can set the command used for the avr-gcc compiler. Below, You can set some flags often used for compiling microcontroller programs:
- -mcall-prologues: Functions prologues/epilogues expanded as call to appropriate subroutines. The code size will be smaller.
- -Wstrict-prototypes: Warn if a function is declared or defined without specifying the argument types. (An old-style function definition is permitted without a warning if preceded by a declaration which specifies the argument types.)
- -Wall: This enables all the warnings about constructions that some users consider questionable, and that are easy to avoid (or modify to prevent the warning), even in conjunction with macros. This also enables some language-specific warnings described in C++ Dialect Options and Objective-C and Objective-C++ Dialect Options.
- -g: Produce debugging information. This is neccessary for debugger.
- Define F_CPU symbol: This adds a -DF_CPU=x to the compiler command, with x replaced by the freuqency You have set on the previous tab. Many libraries use that flag, for example to calculate the baud rate register for a given baud rate.
Below, You can set the optimization effort. Optimization level 0 (-O0) disables the optimizer, which is the best for debugging. Optimization level 1 (-O1) and optimization level 2 (-O2) are a good choice for fast code, s (-Os) optimizes for code size. Optimization level 3 (-O3) is not reccomended for microcontroller programs.