ConfiguringApps.txt 6.95 KB
Newer Older
1
2
3
4
5
/** \file
 *
 *  This file contains special DoxyGen information for the generation of the main page and other special
 *  documentation pages. It is not a project source file.
 */
6

7
8
/** \page Page_ConfiguringApps Configuring the Demos, Bootloaders and Projects
 *
9
10
11
12
 *  If the target microcontroller model, architecture, clock speed, board or other settings are different from the current
 *  settings, they must be changed and the project recompiled from the source code before being programmed into the microcontroller.
 *  Most project configuration options are located in the "makefile" build script inside each LUFA application's folder, however
 *  some demo or application-specific configuration settings (such as the output format in the AudioOut demo) are located in one or
Dean Camera's avatar
Dean Camera committed
13
 *  more of the source files of the project. See each project's individual documentation for application-specific configuration
14
15
16
17
18
19
20
21
22
 *  values.
 *
 *  Each project "makefile" contains all the script and configuration data required to compile each project. When opened with
 *  any regular basic text editor such as Notepad or WordPad (ensure that the save format is a pure ASCII text format) the
 *  build configuration settings may be altered.
 *
 *  Inside each makefile, a number of configuration variables are located, with the format "<VARIABLE NAME> = <VALUE>". For
 *  each application, the important variables which should be altered are:
 *
23
24
 *    - <b>MCU</b>, the target processor model
 *    - <b>ARCH</b>, the target microcontroller architecture
25
 *    - <b>BOARD</b>, the target board hardware
26
27
 *    - <b>F_CPU</b>, the target CPU master clock frequency, after any prescaling
 *    - <b>F_USB</b>, the target raw input clock to the USB module of the processor
28
29
30
31
32
33
 *    - <b>OPTIMIZATION</b>, the level of optimization to compile with
 *    - <b>TARGET</b>, the name of the target output binary and other files
 *    - <b>SRC</b>, the list of source files to compile/assemble/link
 *    - <b>LUFA_PATH</b>, the path to the LUFA library core source code
 *    - <b>CC_FLAGS</b>, the common command line flags to pass to the C/C++ compiler, assembler and linker
 *    - <b>LD_FLAGS</b>, the command line flags to pass to the linker
34
35
36
37
 *
 *  These values should be changed to reflect the build hardware.
 *
 *  \section Sec_MCU The MCU Parameter
38
39
40
 *  This parameter indicates the target microcontroller model for the compiled application. This should be set to the model of the target
 *  microcontroller (such as the AT90USB1287, or the ATMEGA32U4), in all lower-case (e.g. "at90usb1287"). Note that not all demos support all the
 *  microcontroller models and architectures, as they may make use of peripherals or modes only present in some devices.
41
 *
Dean Camera's avatar
Dean Camera committed
42
 *  For supported processor models, see \ref Page_DeviceSupport.
43
 *
44
45
46
47
48
49
50
 *  \section Sec_ARCH The ARCH Parameter
 *  This parameter indicates the target microcontroller architecture the library is to be compiled for. Different microcontroller
 *  architectures require different source files to be compiled into the final binary, and so this option must be set to the correct
 *  architecture for the selected platform.
 *
 *  For supported processor architectures, see \ref Page_DeviceSupport.
 *
51
 *  \section Sec_BOARD The BOARD Parameter
52
 *  This parameter indicates the target board hardware for the compiled application. Some LUFA library drivers are board-specific,
53
54
55
56
57
 *  such as the LED driver, and the library needs to know the layout of the target board. If you are using one of the board models listed
 *  on the main library page, change this parameter to the board name in all UPPER-case.
 *
 *  If you are not using any board-specific drivers in the LUFA library, or you are using a custom board layout, change this to read
 *  "USER" (no quotes) instead of a standard board name. If the USER board type is selected and the application makes use of one or more
58
 *  board-specific hardware drivers inside the LUFA library, then the appropriate stub drives files should be copied from the \c /CodeTemplates/DriverStubs/
59
60
61
 *  directory into a /Board/ folder inside the application directory, and the stub driver completed with the appropriate code to drive the
 *  custom board's hardware.
 *
Dean Camera's avatar
Dean Camera committed
62
63
 *  For boards with built in hardware driver support within the LUFA library, see \ref Page_DeviceSupport.
 *
64
 *  \section Sec_F_CPU The F_CPU Parameter
65
66
 *  This parameter indicates the target microcontroller's main CPU clock frequency, in Hz. This is used by many libraries (and applications) for
 *  timing related purposes, and should reflect the actual CPU speed after any prescaling or adjustments are performed.
67
 *
68
69
70
 *  \section Sec_F_USB The F_USB Parameter
 *  This parameter indicates the raw input clock frequency to the USB module within the microcontroller in Hz. This may be very different on some platforms
 *  to the main CPU clock or other peripheral/bus clocks.
71
 *
72
73
74
 *  \section Sec_OPTIMIZATION The OPTIMIZATION Parameter
 *  This parameter indicates the level of optimization to use when compiling the application. This will allow you to compile with an optimization level
 *  supported by GCC, from <tt>0</tt> (no optimization) to <tt>3</tt> (fastest runtime optimization) or <tt>s</tt> (smallest size).
75
 *
76
77
78
79
80
81
82
 *  \section Sec_TARGET The TARGET Parameter
 *  This parameter indicates the application target name, which is used as the base filename for the build binary and debugging files. This will be the
 *  name of the output files once linked together into the final application, ready to load into the target.
 *
 *  \section Sec_SRC The SRC Parameter
 *  This parameter indicates the source files used to compile the application, as a list of C (<tt>*.c</tt>), C++ (<tt>*.cpp</tt>) and Assembly (<tt>*.S</tt>) files. Note that
 *  all assembly files must end in a <b>capital</b> .S extension, as lowercase .s files are reserved for GCC intermediate files.
83
84
85
 *
 *  \section Sec_LUFA_PATH The LUFA_PATH Parameter
 *  As each LUFA program requires the LUFA library source code to compile correctly, the application must know where the LUFA library is located. This
86
87
88
89
90
91
92
93
94
95
96
 *  value specifies the path to the LUFA library core. This path may be relative or absolute, however note than even under Windows based systems the
 *  forward-slash (/) path seperator must be used.
 *
 *  \section Sec_CC_FLAGS The CC_FLAGS Parameter
 *  This parameter lists the compiler flags passed to the C/C++ compiler, the assembler and the linker. These are used as-is directly to GCC and thus
 *  must match GCC's command line options as given in the GCC manual. This variable may be used to define tokens directly on the command line, enable or
 *  disable warnings, adjust the target-specific tuning parameters or other options.
 *
 *  \section Sec_LD_FLAGS The LD_FLAGS Parameter
 *  This parameter lists the linker flags passed exclusively to the linker. These are used as-is directly to GCC and thus must match GCC's command line
 *  linker options as given in the GCC manual. This variable may be used to create or relocate custom data sections, or enable linker specific behaviors.
97
 */