Project

General

Profile

Download (7.66 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 basic-ssc-i2s-at73c213-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 = osmo-sdr
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 = 3
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= $(AT91LIB)/cmsis
58

    
59
# Output file basename
60
OUTPUT = osmo-sdr-test-$(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../include
96
INCLUDES += -I$(AT91LIB)/memories
97
INCLUDES += -I.
98
INCLUDES += -I$(EXT_LIBS)
99
INCLUDES += -I$(AT91_LIBS)/cmsis
100

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

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

    
113
#-------------------------------------------------------------------------------
114
#		Files
115
#-------------------------------------------------------------------------------
116

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

    
125
VPATH += $(UTILITY)
126
VPATH += $(PERIPH)/dbgu
127
VPATH += $(PERIPH)/pio
128
VPATH += $(PERIPH)/irq
129
VPATH += $(PERIPH)/ssc
130
VPATH += $(PERIPH)/spi
131
VPATH += $(PERIPH)/twi
132
VPATH += $(PERIPH)/pmc
133
VPATH += $(PERIPH)/rstc
134
VPATH += $(PERIPH)/cp15
135
VPATH += $(BOARDS)/$(BOARD)
136
VPATH += $(BOARDS)/$(BOARD)/$(CHIP)
137
#VPATH += $(PERIPH)/mci
138
VPATH += $(DRIVER)/twi
139
VPATH += $(PERIPH)/dma
140
VPATH += $(DRIVER)/dmad
141
VPATH += $(FATFS)/src
142
VPATH += $(AT91LIB)/cmsis
143
VPATH += ../src
144

    
145
VPATH += $(USB)/device/core
146
VPATH += $(USB)/device/dfu
147
VPATH += $(USB)/common/core
148
VPATH += $(USB)/common/audio
149

    
150
# Objects built from C source files
151
C_OBJECTS += main.o
152
C_OBJECTS += stdio.o
153
C_OBJECTS += math.o
154
C_OBJECTS += dbgu.o
155
C_OBJECTS += pio.o pio_it.o
156
C_OBJECTS += spi.o
157
C_OBJECTS += ssc.o
158
C_OBJECTS += twi.o
159
C_OBJECTS += pmc.o
160
C_OBJECTS += twid.o
161
C_OBJECTS += board_lowlevel.o
162
C_OBJECTS += trace.o
163
C_OBJECTS += led.o
164
C_OBJECTS += rstc.o
165
C_OBJECTS += board_memories.o
166

    
167
C_OBJECTS += USBD_UDPHS.o
168
C_OBJECTS += USBDDriver.o
169
C_OBJECTS += USBDCallbacks_Initialized.o
170
C_OBJECTS += USBDCallbacks_Reset.o
171
#C_OBJECTS += USBDCallbacks_Resumed.o
172
#C_OBJECTS += USBDCallbacks_Suspended.o
173
C_OBJECTS += USBDDriverCb_CfgChanged.o
174
#C_OBJECTS += USBDDriverCb_IfSettingChanged.o
175
C_OBJECTS += USBInterfaceRequest.o
176
C_OBJECTS += USBFeatureRequest.o
177
C_OBJECTS += USBGenericRequest.o
178
C_OBJECTS += USBGetDescriptorRequest.o
179
C_OBJECTS += USBSetAddressRequest.o
180
C_OBJECTS += USBSetConfigurationRequest.o
181
C_OBJECTS += USBGenericDescriptor.o
182
C_OBJECTS += USBConfigurationDescriptor.o
183
C_OBJECTS += USBEndpointDescriptor.o
184
C_OBJECTS += dfu_runtime.o
185
C_OBJECTS += dfu_driver.o
186
C_OBJECTS += AUDGenericRequest.o AUDFeatureUnitRequest.o
187

    
188
C_OBJECTS += fast_source_descr.o fast_source.o
189

    
190
C_OBJECTS += logging.o
191
C_OBJECTS += tuner_e4k.o
192
C_OBJECTS += tuner_e4k_transport.o
193
C_OBJECTS += si570.o
194
C_OBJECTS += osdr_fpga.o
195
C_OBJECTS += req_ctx.o osdr_ssc.o
196
C_OBJECTS += uart_cmd.o
197
C_OBJECTS += reg_field.o
198

    
199

    
200
# Objects for different chips
201
ifeq ($(CHIP_CORE), cortexm3)
202
C_OBJECTS += nvic.o
203
C_OBJECTS += exceptions.o
204
C_OBJECTS += board_cstartup_gnu.o
205
C_OBJECTS += core_cm3.o
206
else
207
C_OBJECTS += aic.o
208
C_OBJECTS += cp15.o
209
C_OBJECTS += pit.o
210
endif
211

    
212
ifeq ($(CHIP_IP_MCI), MCI_DMA)
213
C_OBJECTS += dmad.o
214
C_OBJECTS += dma.o
215
#C_OBJECTS += mci_hs.o
216
else
217
C_OBJECTS += mci.o
218
endif
219

    
220
# Objects built from Assembly source files
221
ifneq ($(CHIP_CORE), cortexm3)
222
ASM_OBJECTS += board_cstartup.o
223
ASM_OBJECTS += cp15_asm.o
224
endif
225

    
226
# Append OBJ and BIN directories to output filename
227
OUTPUT := $(BIN)/$(OUTPUT)
228

    
229
#-------------------------------------------------------------------------------
230
#		Rules
231
#-------------------------------------------------------------------------------
232

    
233
all: $(BIN) $(OBJ) $(MEMORIES)
234

    
235
$(BIN) $(OBJ):
236
	mkdir $@
237

    
238
define RULES
239
C_OBJECTS_$(1) = $(addprefix $(OBJ)/$(1)_, $(C_OBJECTS))
240
ASM_OBJECTS_$(1) = $(addprefix $(OBJ)/$(1)_, $(ASM_OBJECTS))
241

    
242
$(1): $$(ASM_OBJECTS_$(1)) $$(C_OBJECTS_$(1))
243
	$(CC) $(LDFLAGS) -T"$(AT91LIB)/boards/$(BOARD)/$(CHIP)/$$@.lds" -o $(OUTPUT)-$$@.elf $$^
244
	$(OBJCOPY) -O binary $(OUTPUT)-$$@.elf $(OUTPUT)-$$@.bin
245
	$(SIZE) $$^ $(OUTPUT)-$$@.elf
246

    
247
$$(C_OBJECTS_$(1)): $(OBJ)/$(1)_%.o: %.c Makefile $(OBJ) $(BIN)
248
	$(CC) $(CFLAGS) -D$(1) -c -o $$@ $$<
249

    
250
$$(ASM_OBJECTS_$(1)): $(OBJ)/$(1)_%.o: %.S Makefile $(OBJ) $(BIN)
251
	$(CC) $(ASFLAGS) -D$(1) -c -o $$@ $$<
252

    
253
debug_$(1): $(1)
254
	perl ../resources/gdb/debug.pl $(OUTPUT)-$(1).elf
255

    
256
endef
257

    
258
$(foreach MEMORY, $(MEMORIES), $(eval $(call RULES,$(MEMORY))))
259

    
260
clean:
261
	-rm -f $(OBJ)/*.o $(BIN)/*.bin $(BIN)/*.elf
262

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