OpenCores
URL https://opencores.org/ocsvn/usb_ft232h_avalon-mm_interface/usb_ft232h_avalon-mm_interface/trunk

Subversion Repositories usb_ft232h_avalon-mm_interface

[/] [usb_ft232h_avalon-mm_interface/] [trunk/] [testbench/] [altera_project/] [test_usb_ft232h/] [software/] [usb_ft232h_bsp/] [mem_init.mk] - Blame information for rev 6

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 6 melman701
 
2
#########################################################################
3
#######     M E M   I N I T    M A K E F I L E   C O N T E N T     ######
4
#########################################################################
5
 
6
#########################################################################
7
# This file is intended to be included by public.mk
8
#
9
#
10
# The following variables must be defined before including this file:
11
# - ELF
12
#
13
# The following variables may be defined to override the default behavior:
14
# - HDL_SIM_DIR
15
# - HDL_SIM_INSTALL_DIR
16
# - MEM_INIT_DIR
17
# - MEM_INIT_INSTALL_DIR
18
# - QUARTUS_PROJECT_DIR
19
# - SOPC_NAME
20
# - SIM_OPTIMIZE
21
# - RESET_ADDRESS
22
#
23
#########################################################################
24
 
25
ifeq ($(MEM_INIT_FILE),)
26
# MEM_INIT_FILE should be set equal to the working relative path to this
27
# mem_init.mk makefile fragment
28
MEM_INIT_FILE := $(wildcard $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)))
29
endif
30
 
31
ifeq ($(ELF2DAT),)
32
ELF2DAT := elf2dat
33
endif
34
 
35
ifeq ($(ELF2HEX),)
36
ELF2HEX := elf2hex
37
endif
38
 
39
ifeq ($(ELF2FLASH),)
40
ELF2FLASH := elf2flash
41
endif
42
 
43
ifeq ($(FLASH2DAT),)
44
FLASH2DAT := flash2dat
45
endif
46
 
47
ifeq ($(ALT_FILE_CONVERT),)
48
ALT_FILE_CONVERT := alt-file-convert
49
endif
50
 
51
ifeq ($(NM),)
52
NM := nios2-elf-nm
53
endif
54
 
55
ifeq ($(MKDIR),)
56
MKDIR := mkdir -p
57
endif
58
 
59
ifeq ($(RM),)
60
RM := rm -f
61
endif
62
 
63
ifeq ($(CP),)
64
CP := cp
65
endif
66
 
67
ifeq ($(ECHO),)
68
ECHO := echo
69
endif
70
 
71
MEM_INIT_DIR ?= mem_init
72
HDL_SIM_DIR ?= $(MEM_INIT_DIR)/hdl_sim
73
 
74
ifdef QUARTUS_PROJECT_DIR
75
MEM_INIT_INSTALL_DIR ?= $(patsubst %/,%,$(QUARTUS_PROJECT_DIR))
76
ifdef SOPC_NAME
77
HDL_SIM_INSTALL_DIR ?= $(patsubst %/,%,$(QUARTUS_PROJECT_DIR))/$(SOPC_NAME)_sim
78
endif
79
endif
80
 
81
MEM_INIT_DESCRIPTOR_FILE ?= $(MEM_INIT_DIR)/meminit.spd
82
 
83
MEM_INIT_QIP_FILE ?= $(MEM_INIT_DIR)/meminit.qip
84
 
85
#-------------------------------------
86
# Default Flash Boot Loaders
87
#-------------------------------------
88
 
89
BOOT_LOADER_PATH ?= $(SOPC_KIT_NIOS2)/components/altera_nios2
90
BOOT_LOADER_CFI ?= $(BOOT_LOADER_PATH)/boot_loader_cfi.srec
91
BOOT_LOADER_CFI_BE ?= $(BOOT_LOADER_PATH)/boot_loader_cfi_be.srec
92
 
93
 
94
#-------------------------------------
95
# Default Target
96
#-------------------------------------
97
 
98
.PHONY: default_mem_init
99
ifeq ($(QSYS),1)
100
default_mem_init: mem_init_generate
101
else
102
default_mem_init: mem_init_install
103
endif
104
#-------------------------------------
105
# Runtime Macros
106
#-------------------------------------
107
 
108
define post-process-info
109
        @echo Post-processing to create $@...
110
endef
111
 
112
target_stem = $(notdir $(basename $@))
113
 
114
mem_start_address = $($(target_stem)_START)
115
mem_end_address = $($(target_stem)_END)
116
mem_span = $($(target_stem)_SPAN)
117
mem_width = $($(target_stem)_WIDTH)
118
mem_hex_width = $($(target_stem)_HEX_DATA_WIDTH)
119
mem_endianness = $($(target_stem)_ENDIANNESS)
120
mem_create_lanes = $($(target_stem)_CREATE_LANES)
121
 
122
mem_pad_flag = $($(target_stem)_PAD_FLAG)
123
mem_reloc_input_flag = $($(target_stem)_RELOC_INPUT_FLAG)
124
mem_no_zero_fill_flag = $($(target_stem)_NO_ZERO_FILL_FLAG)
125
 
126
flash_mem_epcs_flag = $($(target_stem)_EPCS_FLAGS)
127
flash_mem_cfi_flag = $($(target_stem)_CFI_FLAGS)
128
flash_mem_boot_loader_flag = $($(target_stem)_BOOT_LOADER_FLAG)
129
 
130
elf2dat_extra_args = $(mem_pad_flag)
131
elf2hex_extra_args = $(mem_no_zero_fill_flag)
132
elf2flash_extra_args = $(flash_mem_cfi_flag) $(flash_mem_epcs_flag) $(flash_mem_boot_loader_flag)
133
flash2dat_extra_args = $(mem_pad_flag) $(mem_reloc_input_flag)
134
 
135
#------------------------------------------------------------------------------
136
#                              BSP SPECIFIC CONTENT
137
#
138
# The content below is controlled by the BSP and SOPC System
139
#------------------------------------------------------------------------------
140
#START OF BSP SPECIFIC
141
 
142
#-------------------------------------
143
# Global Settings
144
#-------------------------------------
145
 
146
 
147
# The following TYPE comment allows tools to identify the 'type' of target this
148
# makefile is associated with.
149
# TYPE: BSP_MEMINIT_MAKEFILE
150
 
151
# This following VERSION comment indicates the version of the tool used to
152
# generate this makefile. A makefile variable is provided for VERSION as well.
153
# ACDS_VERSION: 16.1
154
ACDS_VERSION := 16.1
155
 
156
# This following BUILD_NUMBER comment indicates the build number of the tool
157
# used to generate this makefile.
158
# BUILD_NUMBER: 203
159
 
160
# Optimize for simulation
161
SIM_OPTIMIZE ?= 0
162
 
163
# The CPU reset address as needed by elf2flash
164
RESET_ADDRESS ?= 0x00800000
165
 
166
# The specific Nios II ELF file format to use.
167
NIOS2_ELF_FORMAT ?= elf32-littlenios2
168
 
169
#-------------------------------------
170
# Pre-Initialized Memory Descriptions
171
#-------------------------------------
172
 
173
# Memory: sdram
174
MEM_0 := sdram
175
$(MEM_0)_NAME := sdram
176
DAT_FILES += $(HDL_SIM_DIR)/$(MEM_0).dat
177
HDL_SIM_INSTALL_FILES += $(HDL_SIM_INSTALL_DIR)/$(MEM_0).dat
178
SYM_FILES += $(HDL_SIM_DIR)/$(MEM_0).sym
179
HDL_SIM_INSTALL_FILES += $(HDL_SIM_INSTALL_DIR)/$(MEM_0).sym
180
$(MEM_0)_START := 0x00800000
181
$(MEM_0)_END := 0x00ffffff
182
$(MEM_0)_SPAN := 0x00800000
183
$(MEM_0)_HIERARCHICAL_PATH := sdram
184
$(MEM_0)_WIDTH := 8
185
$(MEM_0)_HEX_DATA_WIDTH := 8
186
$(MEM_0)_ENDIANNESS := --little-endian-mem
187
$(MEM_0)_CREATE_LANES := 0
188
 
189
.PHONY: sdram
190
sdram: check_elf_exists $(HDL_SIM_DIR)/$(MEM_0).dat $(HDL_SIM_DIR)/$(MEM_0).sym
191
 
192
 
193
#END OF BSP SPECIFIC
194
 
195
#-------------------------------------
196
# Pre-Initialized Memory Targets
197
#-------------------------------------
198
 
199
.PHONY: mem_init_install mem_init_generate mem_init_clean
200
 
201
ifeq ($(QSYS),1)
202
# Target mem_init_install is deprecated for QSys based systems
203
# To initialize onchip memories for Quartus II Synthesis with Qsys based systems:
204
#  1) Use "make mem_init_genearate"
205
#  2) Add the generated mem_init/meminit.qip file to your Quartus II Project
206
#
207
mem_init_install:
208
        $(error Deprecated Makefile Target: '$@'. Use target 'mem_init_generate' and then add $(MEM_INIT_QIP_FILE) to your Quartus II Project)
209
 
210
else # QSYS != 1, if SopcBuilder based system
211
 
212
ifneq ($(MEM_INIT_INSTALL_DIR),)
213
mem_init_install: $(MEM_INIT_INSTALL_FILES)
214
endif
215
 
216
ifneq ($(HDL_SIM_INSTALL_DIR),)
217
mem_init_install: $(HDL_SIM_INSTALL_FILES)
218
endif
219
 
220
mem_init_install: mem_init_generate
221
ifeq ($(MEM_INIT_INSTALL_DIR),)
222
        @echo "WARNING: MEM_INIT_INSTALL_DIR not set. Set your QUARTUS_PROJECT_DIR environment variable."
223
endif
224
ifeq ($(HDL_SIM_INSTALL_DIR),)
225
        @echo "WARNING: HDL_SIM_INSTALL_DIR not set. Set your QUARTUS_PROJECT_DIR and SOPC_NAME environment variable."
226
endif
227
 
228
$(MEM_INIT_INSTALL_FILES): $(MEM_INIT_INSTALL_DIR)/%: $(MEM_INIT_DIR)/%
229
        @$(MKDIR) $(@D)
230
        @$(CP) -v $< $@
231
 
232
$(HDL_SIM_INSTALL_FILES): $(HDL_SIM_INSTALL_DIR)/%: $(HDL_SIM_DIR)/%
233
        @$(MKDIR) $(@D)
234
        @$(CP) -v $< $@
235
 
236
endif # QSYS == 1
237
 
238
 
239
mem_init_generate: hex dat sym flash $(MEM_INIT_DESCRIPTOR_FILE) $(MEM_INIT_QIP_FILE)
240
 
241
mem_init_clean:
242
        @$(RM) -r $(MEM_INIT_DIR) $(HDL_SIM_DIR) $(FLASH_FILES)
243
 
244
.PHONY: hex dat sym flash
245
 
246
hex: check_elf_exists $(HEX_FILES)
247
 
248
dat: check_elf_exists $(DAT_FILES)
249
 
250
sym: check_elf_exists $(SYM_FILES)
251
 
252
flash: check_elf_exists $(FLASH_FILES)
253
 
254
#-------------------------------------
255
# Pre-Initialized Memory Rules
256
#-------------------------------------
257
 
258
.PHONY: check_elf_exists
259
check_elf_exists: $(ELF)
260
ifeq ($(ELF),)
261
        $(error ELF var not set in mem_init.mk)
262
endif
263
 
264
$(filter-out $(FLASH_DAT_FILES),$(DAT_FILES)): %.dat: $(ELF)
265
        $(post-process-info)
266
        @$(MKDIR) $(@D)
267
        $(ELF2DAT) --infile=$< --outfile=$@ \
268
                --base=$(mem_start_address) --end=$(mem_end_address) --width=$(mem_width) \
269
                $(mem_endianness) --create-lanes=$(mem_create_lanes) $(elf2dat_extra_args)
270
 
271
$(foreach i,0 1 2 3 4 5 6 7,%_lane$(i).dat): %.dat
272
        @true
273
 
274
ELF_TO_HEX_CMD_NO_BOOTLOADER = $(ELF2HEX) $< $(mem_start_address) $(mem_end_address) --width=$(mem_hex_width) \
275
                        $(mem_endianness) --create-lanes=$(mem_create_lanes) $(elf2hex_extra_args) $@
276
 
277
ELF_TO_HEX_CMD_WITH_BOOTLOADER = $(ALT_FILE_CONVERT) -I $(NIOS2_ELF_FORMAT) -O hex --input=$< --output=$@ \
278
                        --base=$(mem_start_address) --end=$(mem_end_address) --reset=$(RESET_ADDRESS) \
279
                        --out-data-width=$(mem_hex_width) $(flash_mem_boot_loader_flag)
280
 
281
ELF_TO_HEX_CMD = $(strip $(if $(flash_mem_boot_loader_flag), \
282
        $(ELF_TO_HEX_CMD_WITH_BOOTLOADER), \
283
        $(ELF_TO_HEX_CMD_NO_BOOTLOADER) \
284
        ))
285
 
286
$(HEX_FILES): %.hex: $(ELF)
287
        $(post-process-info)
288
        @$(MKDIR) $(@D)
289
        $(ELF_TO_HEX_CMD)
290
 
291
$(SYM_FILES): %.sym: $(ELF)
292
        $(post-process-info)
293
        @$(MKDIR) $(@D)
294
        $(NM) -n $< > $@
295
 
296
$(FLASH_FILES): %.flash: $(ELF)
297
        $(post-process-info)
298
        @$(MKDIR) $(@D)
299
        $(ELF2FLASH) --input=$< --outfile=$@ --sim_optimize=$(SIM_OPTIMIZE) $(mem_endianness) \
300
                $(elf2flash_extra_args)
301
 
302
#
303
# Function generate_spd_entry
304
# Arg1: path to the memory initialization file
305
# Arg2: Type HEX or DAT
306
# Arg3: Output spd file to append
307
gen_spd_entry.BASE_FILE = $(basename $(notdir $1))
308
gen_spd_entry.PARAM_NAME = $($(gen_spd_entry.BASE_FILE)_MEM_INIT_FILE_PARAM_NAME)
309
gen_spd_entry.MEM_PATH = $($(gen_spd_entry.BASE_FILE)_HIERARCHICAL_PATH)
310
gen_spd_entry.SETTINGS = $(strip \
311
        path=\"$1\" \
312
        type=\"$2\" \
313
        $(if $(gen_spd_entry.PARAM_NAME),initParamName=\"$(gen_spd_entry.PARAM_NAME)\") \
314
        $(if $(gen_spd_entry.MEM_PATH),memoryPath=\"$(gen_spd_entry.MEM_PATH)\") \
315
)
316
define gen_spd_entry
317
$(ECHO) "" >> $3
318
endef
319
 
320
$(MEM_INIT_DESCRIPTOR_FILE).DAT_FILESET := $(patsubst $(dir $(MEM_INIT_DESCRIPTOR_FILE))%,%,$(DAT_FILES))
321
$(MEM_INIT_DESCRIPTOR_FILE).HEX_FILESET := $(patsubst $(dir $(MEM_INIT_DESCRIPTOR_FILE))%,%,$(HEX_FILES))
322
 
323
$(MEM_INIT_DESCRIPTOR_FILE): %.spd: $(MEM_INIT_FILE)
324
        $(post-process-info)
325
        @$(MKDIR) $(@D)
326
        @$(RM) $@
327
        @$(ECHO) "" > $@
328
        @$(ECHO) "" >> $@
329
        @$(foreach dat_file,$($@.DAT_FILESET),$(call gen_spd_entry,$(dat_file),DAT,$@) &&)true
330
        @$(foreach hex_file,$($@.HEX_FILESET),$(call gen_spd_entry,$(hex_file),HEX,$@) &&)true
331
        @$(ECHO) "" >> $@
332
 
333
.DELETE_ON_ERROR: $(MEM_INIT_DESCRIPTOR_FILE)
334
 
335
$(MEM_INIT_QIP_FILE): %.qip: $(MEM_INIT_FILE)
336
        $(post-process-info)
337
        @$(MKDIR) $(@D)
338
        @$(RM) $@
339
        @$(ECHO) "set_global_assignment -name SEARCH_PATH $$::quartus(qip_path)" > $@
340
 
341
.DELETE_ON_ERROR: $(MEM_INIT_QIP_FILE)

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.