Project

General

Profile

Download (7.31 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-fast-source-$(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
#-------------------------------------------------------------------------------
73
#		Tools
74
#-------------------------------------------------------------------------------
75

    
76
# Tool suffix when cross-compiling
77
CROSS_COMPILE = arm-cm3-eabi-
78

    
79
# Compilation tools
80
CC = $(CROSS_COMPILE)gcc
81
SIZE = $(CROSS_COMPILE)size
82
STRIP = $(CROSS_COMPILE)strip
83
OBJCOPY = $(CROSS_COMPILE)objcopy
84

    
85
# Flags
86
INCLUDES += -I$(AT91LIB)/boards/$(BOARD)
87
INCLUDES += -I$(AT91LIB)/peripherals
88
INCLUDES += -I$(AT91LIB)/components
89
INCLUDES += -I$(AT91LIB)/drivers
90
INCLUDES += -I$(AT91LIB)
91
INCLUDES += -I$(EXT_LIBS)
92
INCLUDES += -I$(AT91LIB)/cmsis
93
INCLUDES += -I.
94

    
95
ifeq ($(CHIP_CORE), cortexm3)
96
TARGET_OPTS = -mcpu=cortex-m3 -mthumb
97
else
98
TARGET_OPTS =
99
endif
100

    
101
CFLAGS += $(TARGET_OPTS)
102
CFLAGS += -Wall -mlong-calls -ffunction-sections
103
CFLAGS += -g $(OPTIMIZATION) $(INCLUDES) -D$(CHIP) -DTRACE_LEVEL=$(TRACE_LEVEL)
104
ASFLAGS = $(TARGET_OPTS) -Wall -g $(OPTIMIZATION) $(INCLUDES) -D$(CHIP) -D__ASSEMBLY__
105
LDFLAGS = -g $(OPTIMIZATION) -nostartfiles $(TARGET_OPTS) -Wl,--gc-sections
106

    
107
#-------------------------------------------------------------------------------
108
#		Files
109
#-------------------------------------------------------------------------------
110

    
111
# Directories where source files can be found
112
PERIPH = $(AT91LIB)/peripherals
113
BOARDS = $(AT91LIB)/boards
114
UTILITY = $(AT91LIB)/utility
115
COMP = $(AT91LIB)/components
116
DRIVER = $(AT91LIB)/drivers
117
USB  = $(AT91LIB)/usb
118

    
119
VPATH += $(UTILITY)
120
VPATH += $(PERIPH)/dbgu
121
VPATH += $(PERIPH)/pio
122
VPATH += $(PERIPH)/irq
123
VPATH += $(PERIPH)/ssc
124
VPATH += $(PERIPH)/twi
125
VPATH += $(PERIPH)/pmc
126
VPATH += $(PERIPH)/cp15
127
VPATH += $(BOARDS)/$(BOARD)
128
VPATH += $(BOARDS)/$(BOARD)/$(CHIP)
129
VPATH += $(DRIVER)/twi
130
VPATH += $(PERIPH)/mci
131
VPATH += $(PERIPH)/dma
132
VPATH += $(DRIVER)/dmad
133
VPATH += $(AT91LIB)/cmsis
134

    
135
VPATH += $(USB)/device/core
136
VPATH += $(USB)/device/dfu
137
VPATH += $(USB)/common/core
138
VPATH += $(USB)/common/audio
139

    
140
# Objects built from C source files
141
C_OBJECTS += main.o
142
C_OBJECTS += USBD_UDPHS.o
143
C_OBJECTS += USBDDriver.o
144
C_OBJECTS += USBDCallbacks_Initialized.o
145
C_OBJECTS += USBDCallbacks_Reset.o
146
#C_OBJECTS += USBDCallbacks_Resumed.o
147
#C_OBJECTS += USBDCallbacks_Suspended.o
148
C_OBJECTS += USBDDriverCb_CfgChanged.o
149
#C_OBJECTS += USBDDriverCb_IfSettingChanged.o
150
C_OBJECTS += USBInterfaceRequest.o
151
C_OBJECTS += USBFeatureRequest.o
152
C_OBJECTS += USBGenericRequest.o
153
C_OBJECTS += USBGetDescriptorRequest.o
154
C_OBJECTS += USBSetAddressRequest.o
155
C_OBJECTS += USBSetConfigurationRequest.o
156
C_OBJECTS += USBGenericDescriptor.o
157
C_OBJECTS += USBConfigurationDescriptor.o
158
C_OBJECTS += USBEndpointDescriptor.o
159
C_OBJECTS += dfu_runtime.o
160
C_OBJECTS += dbgu.o
161
C_OBJECTS += pio.o
162
C_OBJECTS += pio_it.o
163
C_OBJECTS += ssc.o
164
C_OBJECTS += twi.o
165
C_OBJECTS += pmc.o
166
C_OBJECTS += led.o
167
C_OBJECTS += twid.o
168
C_OBJECTS += string.o
169
C_OBJECTS += stdio.o
170
C_OBJECTS += math.o
171
C_OBJECTS += trace.o
172
C_OBJECTS += board_memories.o
173
C_OBJECTS += board_lowlevel.o
174

    
175
C_OBJECTS += AUDGenericRequest.o AUDFeatureUnitRequest.o
176

    
177
C_OBJECTS += AUDDFastSourceDescriptors.o fast_source.o
178

    
179

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

    
191
ifeq ($(CHIP_IP_MCI), MCI_DMA)
192
C_OBJECTS += dmad.o
193
C_OBJECTS += dma.o
194
C_OBJECTS += mci_hs.o
195
else
196
C_OBJECTS += mci.o
197
endif
198

    
199
# Objects built from Assembly source files
200
ifneq ($(CHIP_CORE), cortexm3)
201
ASM_OBJECTS += board_cstartup.o
202
ASM_OBJECTS += cp15_asm.o
203
endif
204

    
205
# Append OBJ and BIN directories to output filename
206
OUTPUT := $(BIN)/$(OUTPUT)
207

    
208
#-------------------------------------------------------------------------------
209
#		Rules
210
#-------------------------------------------------------------------------------
211

    
212
all: $(BIN) $(OBJ) $(MEMORIES)
213

    
214
$(BIN) $(OBJ):
215
	mkdir $@
216

    
217
define RULES
218
C_OBJECTS_$(1) = $(addprefix $(OBJ)/$(1)_, $(C_OBJECTS))
219
ASM_OBJECTS_$(1) = $(addprefix $(OBJ)/$(1)_, $(ASM_OBJECTS))
220

    
221
$(1): $$(ASM_OBJECTS_$(1)) $$(C_OBJECTS_$(1))
222
	$(CC) $(LDFLAGS) -T"$(AT91LIB)/boards/$(BOARD)/$(CHIP)/$$@.lds" -o $(OUTPUT)-$$@.elf $$^
223
	$(OBJCOPY) -O binary $(OUTPUT)-$$@.elf $(OUTPUT)-$$@.bin
224
	$(SIZE) $$^ $(OUTPUT)-$$@.elf
225

    
226
$$(C_OBJECTS_$(1)): $(OBJ)/$(1)_%.o: %.c Makefile $(OBJ) $(BIN)
227
	$(CC) $(CFLAGS) -D$(1) -c -o $$@ $$<
228

    
229
$$(ASM_OBJECTS_$(1)): $(OBJ)/$(1)_%.o: %.S Makefile $(OBJ) $(BIN)
230
	$(CC) $(ASFLAGS) -D$(1) -c -o $$@ $$<
231

    
232
debug_$(1): $(1)
233
	perl ../resources/gdb/debug.pl $(OUTPUT)-$(1).elf
234

    
235
endef
236

    
237
$(foreach MEMORY, $(MEMORIES), $(eval $(call RULES,$(MEMORY))))
238

    
239
clean:
240
	-rm -f $(OBJ)/*.o $(BIN)/*.bin $(BIN)/*.elf
241

    
(3-3/7)
Add picture from clipboard (Maximum size: 48.8 MB)