1 ################################################################################ 3 # Arch/Arch.atmega32uc3.mk 44 ################################################################################ 46 # Prevent mutliple inclusion 47 _ARCH_ATMEGA32UC3_MK = 1
49 # This architecture (required) 50 RNMAKE_ARCH = atmega32uc3
51 RNMAKE_ARCH_FQNAME = atmega32uc3-mcu
53 # Micro-Controller Unit 57 # Output format. One of: srec, ihex, binary
58 # Default is ihex. Override in including make file
if necessary.
62 # Device High Fuse Byte
63 # Override in including make file
if necessary.
65 # Field Bit Description Default
66 # ----- --- ----------- -------
67 # OCDEN 7 Enable OCD 1 (unprogrammed, OCD disabled)
68 # JTAGEN 6 Enable JTAG 0 (programmed, JTAG enabled) 69 # SPIEN 5 Enable SPI Serial Program 0 (programmed, SPI prog. enabled) 70 # and data Downloading 71 # CKOPT 4 Oscillator options 1 (unprogrammed) 72 # EESAVE 3 EEPROM memory is preserved 1 (unprogrammed, EEPROM not preserved) 73 # through the Chip Erase 74 # BOOTSZ1 2 Select Boot Size 0 (programmed) 75 # BOOTSZ0 1 Select Boot Size 0 (programmed) 76 # BOOTRST 0 Select reset vector 1 (unprogrammed) 80 # Device Low Fuse Byte 81 # Override in including make file if necessary. 83 # Field Bit Description Default 84 # ----- --- ----------- ------- 85 # BODLEVEL 7 Brown-out Detector trigger 1 (unprogrammed) 87 # BODEN 6 Brown-out Detector enable 1 (unprogrammed, BOD disabled) 88 # SUT1 5 Select start-up time 1 (unprogrammed) 89 # SUT0 4 Select start-up time 0 (programmed) 90 # CKSEL3 3 Select Clock source 0 (programmed) 91 # CKSEL2 2 Select Clock source 0 (programmed) 92 # CKSEL1 1 Select Clock source 0 (programmed) 93 # CKSEL0 0 Select Clock source 0 (unprogrammed) 97 #------------------------------------------------------------------------------ 99 #------------------------------------------------------------------------------ 101 # Cross compiler tool chain prefix 102 CROSS_COMPILE = avr32-
104 # Build Support Commands 105 AR = $(CROSS_COMPILE)ar
106 RANLIB = $(CROSS_COMPILE)ranlib
107 STRIP_LIB = $(CROSS_COMPILE)strip --strip-debug
108 STRIP_EXE = $(CROSS_COMPILE)strip --strip-all
109 OBJCOPY = $(CROSS_COMPILE)objcopy
110 OBJDUMP = $(CROSS_COMPILE)objdump
111 SIZE = $(CROSS_COMPILE)size
112 NM = $(CROSS_COMPILE)nm
115 #------------------------------------------------------------------------------ 116 # C Preprocessor Options 117 #------------------------------------------------------------------------------ 118 RNMAKE_ARCH_INCDIRS = /opt/avr32/include
119 RNMAKE_ARCH_CPPFLAGS =
121 #------------------------------------------------------------------------------ 122 # Assembler and Options 123 #------------------------------------------------------------------------------ 124 #AS = $(CROSS_COMPILE)as 128 ASFLAGS_MCU = -mpart=$(MCU)
131 # -gstabs: Have the assembler create line number information; note that 132 # for use in COFF files, additional information about filenames 133 # and function names needs to be present in the assembler source 134 # files -- see avr-libc docs [FIXME: not yet described there] 135 ASFLAGS_DEBUG = $(CFLAGS_DEBUG)
137 # Pass to other subprocesses
139 ASFLAGS_PASS = -x assembler-with-cpp
142 # -Wa,...: tell GCC to pass
this to the assembler.
143 # -adlms: create listing
144 ASFLAGS_LISTING = -Wa,-adhlns=$(<:.S=.lst)
147 # -Wa,...: tell GCC to pass this to the assembler. 148 # -adlms: create listing 149 ARCH_ASFLAGS = $(ASFLAGS_MCU) \
155 #------------------------------------------------------------------------------ 156 # C Compiler and Options 157 #------------------------------------------------------------------------------ 158 CC = $(CROSS_COMPILE)gcc
161 CFLAGS_MCU = -mpart=$(MCU)
163 # Compiler flags to generate dependency files. 164 # Not needed in rnmake system. 165 # -Wp pass comma-separated options to cpp 166 # -M build dependency rule for object file 167 # -MP add .PHONY to each rule for object file 168 # -MT set output object to next argument 169 # -MF depencency rule output in file in next argument 170 #CFLAGS_GENDEPFLAGS = -Wp,-M,-MP,-MT,$(*F).o,-MF,.dep/$(@F).d 172 # Optimization level, can be [0, 1, 2, 3, s]. 173 # 0 = turn off optimization. s = optimize for size. 174 # (Note: 3 is not always the best optimization level. See avr-libc FAQ.) 175 CFLAGS_OPTIMIZE_LEVEL = -O1
178 # Native formats for AVR-GCC's -g are stabs [default], or dwarf-2. 179 # AVR (extended) COFF requires stabs, plus an avr-objcopy run. 180 #CFLAGS_DEBUG = -gstabs 181 CFLAGS_DEBUG = -gdwarf-2
183 # Compiler flag to set the C Standard level. 185 # gnu89 - c89 plus GCC extensions 186 # c99 - ISO C99 standard (not yet fully implemented) 187 # gnu99 - c99 plus GCC extensions 188 CFLAGS_CSTANDARD = -std=gnu99
191 # characters are unsigned 192 # bitfields are unsigned 193 # pack structure members with no holes 194 # smallest enum posible 195 CFLAGS_OPTIMIZES = -funsigned-
char \
196 -funsigned-bitfields \
201 # All normal warnings
202 # Warn on strict prototypes
203 CFLAGS_WARNING = -Wall -Wstrict-prototypes
206 # -Wa,...: tell GCC to pass this to the assembler. 207 # -adlms: create listing 208 CFLAGS_LISTING = -Wa,-adhlns=$(<:.c=.lst)
211 CFLAGS_DEPS_ONLY = -M
213 RNMAKE_ARCH_CFLAGS = $(CFLAGS_MCU) \
215 $(CFLAGS_OPTIMIZE_LEVEL) \
216 $(CFLAGS_OPTIMIZES) \
219 $(CFLAGS_CSTANDARD) \
220 $(CFLAGS_GENDEPFLAGS)
222 # Make AS/C/CXX Dependencies Command
223 RNMAKE_MAKEDEPS = $(CC) $(CFLAGS_DEPS_ONLY)
226 #------------------------------------------------------------------------------
227 # C++ Compiler and Options
228 #------------------------------------------------------------------------------
229 CXX = $(CROSS_COMPILE)g++
230 CXXFLAGS_CPP_ONLY = -E
231 CXXFLAGS_DEPS_ONLY = -M
233 RNMAKE_ARCH_CXXFLAGS = $(CFLAGS_DEBUG) \
234 $(CFLAGS_OPTIMIZE_LEVEL) \
235 $(CFLAGS_OPTIMIZES) \
241 #------------------------------------------------------------------------------ 243 #------------------------------------------------------------------------------ 244 LD = $(CROSS_COMPILE)ld
248 # External memory options
250 # 64 KB of external RAM, starting after
internal RAM (ATmega128!),
251 # used for variables (.data/.bss) and heap (malloc()). 252 #ARCH_LDFLAGS_EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff 254 # 64 KB of external RAM, starting after internal RAM (ATmega128!), 255 # only used for heap (malloc()). 256 #ARCH_LDFLAGS_EXTMEMOPTS = -Wl,--defsym=__heap_start=0x801100,--defsym=__heap_end=0x80ffff 258 ARCH_LDFLAGS_EXTMEMOPTS =
261 # -Wl,...: tell GCC to pass this to linker. 262 # -Map: create map file 263 # --cref: add cross reference to map file 264 #ARCH_LDFLAGS_LD = -Wl,-Map=$(TARGET).map,--cref 266 ARCH_LDFLAGS = $(ARCH_LDFLAGS_LD) \
267 $(ARCH_LDFLAGS_EXTMEMOPTS)
268 ARCH_LD_LIBPATHS = -L/opt/avr32/lib
272 #------------------------------------------------------------------------------ 273 # Static Library Archiver and Options 274 #------------------------------------------------------------------------------ 280 #------------------------------------------------------------------------------ 281 # Other Useful Flags, Etc. 282 #------------------------------------------------------------------------------ 283 # Minimalistic printf version 284 PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min
286 # Floating point printf version (requires MATH_LIB = -lm below) 287 PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt
291 # Minimalistic scanf version 292 SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min
294 # Floating point + %[ scanf version (requires MATH_LIB = -lm below) 295 SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt