Project

General

Profile

Download (7.13 KB) Statistics
| Branch: | Tag: | Revision:
1
# ----------------------------------------------------------------------------
2
#         ATMEL Microcontroller Software Support 
3
# ----------------------------------------------------------------------------
4
# Copyright (c) 2008, Atmel Corporation
5
#
6
# All rights reserved.
7
#
8
# Redistribution and use in source and binary forms, with or without
9
# modification, are permitted provided that the following conditions are met:
10
#
11
# - Redistributions of source code must retain the above copyright notice,
12
# this list of conditions and the disclaimer below.
13
#
14
# Atmel's name may not be used to endorse or promote products derived from
15
# this software without specific prior written permission.
16
#
17
# DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
18
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
20
# DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
21
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
23
# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
24
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
25
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
26
# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
# ----------------------------------------------------------------------------
28

    
29
# 	Makefile for compiling the usb-device-core-project project
30

    
31
#-------------------------------------------------------------------------------
32
#		User-modifiable options
33
#-------------------------------------------------------------------------------
34

    
35
# Chip & board used for compilation
36
# (can be overriden by adding CHIP=chip and BOARD=board to the command-line)
37
CHIP  = at91sam3u4
38
BOARD = at91sam3u-ek
39

    
40
# Trace level used for compilation
41
# (can be overriden by adding TRACE_LEVEL=#number to the command-line)
42
# TRACE_LEVEL_DEBUG      5
43
# TRACE_LEVEL_INFO       4
44
# TRACE_LEVEL_WARNING    3
45
# TRACE_LEVEL_ERROR      2
46
# TRACE_LEVEL_FATAL      1
47
# TRACE_LEVEL_NO_TRACE   0
48
TRACE_LEVEL = 4
49

    
50
# Optimization level, put in comment for debugging
51
OPTIMIZATION = -Os
52

    
53
# AT91 library directory
54
AT91LIB = ../../../at91lib
55

    
56
# External library
57
EXT_LIBS= ../external_libs
58

    
59
# Output file basename
60
OUTPUT = usb-dfu-experiment-$(BOARD)-$(CHIP)
61

    
62
# Compile with chip specific features
63
include $(AT91LIB)/boards/$(BOARD)/$(CHIP)/chip.mak
64

    
65
# Compile for all memories available on the board (this sets $(MEMORIES))
66
include $(AT91LIB)/boards/$(BOARD)/board.mak
67

    
68
# Output directories
69
BIN = bin
70
OBJ = obj
71

    
72
GIT_REVISION := $(shell ../../git-version-gen ../../.tarball_version)
73
ASFLAGS += -DGIT_REVISION=\"$(GIT_REVISION)\"
74
CFLAGS += -DGIT_REVISION=\"$(GIT_REVISION)\"
75

    
76
#-------------------------------------------------------------------------------
77
#		Tools
78
#-------------------------------------------------------------------------------
79

    
80
# Tool suffix when cross-compiling
81
CROSS_COMPILE = arm-cm3-eabi-
82

    
83
# Compilation tools
84
CC = $(CROSS_COMPILE)gcc
85
SIZE = $(CROSS_COMPILE)size
86
STRIP = $(CROSS_COMPILE)strip
87
OBJCOPY = $(CROSS_COMPILE)objcopy
88

    
89
# Flags
90
INCLUDES += -I$(AT91LIB)/boards/$(BOARD)
91
INCLUDES += -I$(AT91LIB)/peripherals
92
INCLUDES += -I$(AT91LIB)/components
93
INCLUDES += -I$(AT91LIB)/drivers
94
INCLUDES += -I$(AT91LIB)
95
INCLUDES += -I$(EXT_LIBS)
96
INCLUDES += -I$(AT91LIB)/cmsis
97
INCLUDES += -I.
98

    
99
ifeq ($(CHIP_CORE), cortexm3)
100
TARGET_OPTS = -mcpu=cortex-m3 -mthumb
101
else
102
TARGET_OPTS =
103
endif
104

    
105
CFLAGS += $(TARGET_OPTS)
106
CFLAGS += -Wall -mlong-calls -ffunction-sections
107
CFLAGS += -g $(OPTIMIZATION) $(INCLUDES) -D$(CHIP) -DTRACE_LEVEL=$(TRACE_LEVEL)
108
ASFLAGS = $(TARGET_OPTS) -Wall -g $(OPTIMIZATION) $(INCLUDES) -D$(CHIP) -D__ASSEMBLY__
109
LDFLAGS = -g $(OPTIMIZATION) -nostdlib -nostartfiles $(TARGET_OPTS) -Wl,--gc-sections
110

    
111
#-------------------------------------------------------------------------------
112
#		Files
113
#-------------------------------------------------------------------------------
114

    
115
# Directories where source files can be found
116
PERIPH = $(AT91LIB)/peripherals
117
BOARDS = $(AT91LIB)/boards
118
UTILITY = $(AT91LIB)/utility
119
COMP = $(AT91LIB)/components
120
DRIVER = $(AT91LIB)/drivers
121
USB  = $(AT91LIB)/usb
122

    
123
VPATH += $(UTILITY)
124
VPATH += $(PERIPH)/dbgu
125
VPATH += $(PERIPH)/pio
126
VPATH += $(PERIPH)/irq
127
VPATH += $(PERIPH)/pmc
128
VPATH += $(PERIPH)/rstc
129
VPATH += $(PERIPH)/cp15
130
VPATH += $(BOARDS)/$(BOARD)
131
VPATH += $(BOARDS)/$(BOARD)/$(CHIP)
132
VPATH += $(PERIPH)/eefc
133
VPATH += $(PERIPH)/dma
134
VPATH += $(DRIVER)/dmad
135
VPATH += $(AT91LIB)/cmsis
136
VPATH += $(AT91LIB)/memories/flash
137

    
138
VPATH += $(USB)/device/core
139
VPATH += $(USB)/device/dfu
140
VPATH += $(USB)/common/core
141
VPATH += $(USB)/common/audio
142

    
143
# Objects built from C source files
144
C_OBJECTS += main.o
145
C_OBJECTS += hardware.o
146
C_OBJECTS += slimpro.o
147
C_OBJECTS += dfu_desc.o
148
C_OBJECTS += sam3u_chipid_usbserial.o
149
C_OBJECTS += USBD_UDPHS.o
150
C_OBJECTS += USBDDriver.o
151
C_OBJECTS += USBDCallbacks_Initialized.o
152
C_OBJECTS += USBDCallbacks_Reset.o
153
#C_OBJECTS += USBDCallbacks_Resumed.o
154
#C_OBJECTS += USBDCallbacks_Suspended.o
155
C_OBJECTS += USBDDriverCb_CfgChanged.o
156
#C_OBJECTS += USBDDriverCb_IfSettingChanged.o
157
C_OBJECTS += USBInterfaceRequest.o
158
C_OBJECTS += USBFeatureRequest.o
159
C_OBJECTS += USBGenericRequest.o
160
C_OBJECTS += USBGetDescriptorRequest.o
161
C_OBJECTS += USBSetAddressRequest.o
162
C_OBJECTS += USBSetConfigurationRequest.o
163
C_OBJECTS += USBGenericDescriptor.o
164
C_OBJECTS += USBConfigurationDescriptor.o
165
C_OBJECTS += USBEndpointDescriptor.o
166
C_OBJECTS += dfu_driver.o
167
C_OBJECTS += dbgu.o
168
C_OBJECTS += pio.o
169
C_OBJECTS += pio_it.o
170
C_OBJECTS += pmc.o
171
C_OBJECTS += led.o
172
C_OBJECTS += string.o
173
C_OBJECTS += stdio.o
174
C_OBJECTS += math.o
175
C_OBJECTS += trace.o
176
C_OBJECTS += board_memories.o
177
C_OBJECTS += board_lowlevel.o
178
C_OBJECTS += flashd_eefc.o eefc.o
179
C_OBJECTS += rstc.o
180

    
181

    
182
# Objects for different chips
183
ifeq ($(CHIP_CORE), cortexm3)
184
C_OBJECTS += nvic.o
185
C_OBJECTS += exceptions.o
186
C_OBJECTS += board_cstartup_gnu.o
187
C_OBJECTS += core_cm3.o
188
else
189
C_OBJECTS += aic.o
190
C_OBJECTS += cp15.o
191
endif
192

    
193
# Objects built from Assembly source files
194
ifneq ($(CHIP_CORE), cortexm3)
195
ASM_OBJECTS += board_cstartup.o
196
ASM_OBJECTS += cp15_asm.o
197
endif
198

    
199
# Append OBJ and BIN directories to output filename
200
OUTPUT := $(BIN)/$(OUTPUT)
201

    
202
#-------------------------------------------------------------------------------
203
#		Rules
204
#-------------------------------------------------------------------------------
205

    
206
all: $(BIN) $(OBJ) $(MEMORIES)
207

    
208
$(BIN) $(OBJ):
209
	mkdir $@
210

    
211
define RULES
212
C_OBJECTS_$(1) = $(addprefix $(OBJ)/$(1)_, $(C_OBJECTS))
213
ASM_OBJECTS_$(1) = $(addprefix $(OBJ)/$(1)_, $(ASM_OBJECTS))
214

    
215
$(1): $$(ASM_OBJECTS_$(1)) $$(C_OBJECTS_$(1))
216
	$(CC) $(LDFLAGS) -T"$(AT91LIB)/boards/$(BOARD)/$(CHIP)/$$@.lds" -o $(OUTPUT)-$$@.elf $$^
217
	$(OBJCOPY) -O binary $(OUTPUT)-$$@.elf $(OUTPUT)-$$@.bin
218
	$(SIZE) $$^ $(OUTPUT)-$$@.elf
219

    
220
$$(C_OBJECTS_$(1)): $(OBJ)/$(1)_%.o: %.c Makefile $(OBJ) $(BIN)
221
	$(CC) $(CFLAGS) -D$(1) -c -o $$@ $$<
222

    
223
$$(ASM_OBJECTS_$(1)): $(OBJ)/$(1)_%.o: %.S Makefile $(OBJ) $(BIN)
224
	$(CC) $(ASFLAGS) -D$(1) -c -o $$@ $$<
225

    
226
debug_$(1): $(1)
227
	perl ../resources/gdb/debug.pl $(OUTPUT)-$(1).elf
228

    
229
endef
230

    
231
$(foreach MEMORY, $(MEMORIES), $(eval $(call RULES,$(MEMORY))))
232

    
233
clean:
234
	-rm -f $(OBJ)/*.o $(BIN)/*.bin $(BIN)/*.elf
235

    
(1-1/11)
Add picture from clipboard (Maximum size: 48.8 MB)