OpenCores
URL https://opencores.org/ocsvn/ion/ion/trunk

Subversion Repositories ion

[/] [ion/] [trunk/] [src/] [common/] [makefile] - Blame information for rev 34

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 ja_rd
#-------------------------------------------------------------------------------
2
# This makefile does not contain any targets, only definitions used by the
3
# makefiles of all the code samples.
4
# It is meant to be included and not used standalone.
5
#-------------------------------------------------------------------------------
6 34 ja_rd
# SYSTEM PARAMETERS
7
#
8
# You can define here the size and address of the memory blocks of the system,
9
# though you can't change the number and type of blocks here (see
10
# /vhdl/mips_cache_*.vhdl).
11
# Addresses are duplicated in the linker script (ion*.lds).
12
#
13
#-------------------------------------------------------------------------------
14 2 ja_rd
# KNOWN PROBLEMS AND WORKAROUNDS
15
#
16
# 1.- LINK PROBLEM IF FLAG '-G0' NOT USED
17
#       If flag '-G0' is not used on gcc, linker fails with 'relocation
18
#       truncated to fit: R_MIPS_GPREL16' error message.
19
#       This only happens when you use global or static veriables, initialized
20
#       or not.
21
#       (See explaination in the project docs about $gp indexed addressing in
22
#       MIPS architectures and the -G0 flag).
23
#
24
#     SUSPECTED CAUSE:
25
#       I'm sure there is something wrong with my linker script.
26
#       With the default link scripts this does not happen. Yet we need to use
27
#       a script so that we can split code and data (including read-only) to
28
#       different sections (and later to different ram blocks).
29
#
30
#     WORKAROUND:
31
#       Use -G0 flag so that _gp indexing is disabled. There is a performance
32
#       hit, though. In effect we're telling the compiler to NOT use $gp for
33
#       indexed access to any global variables.
34
#       This is only necessary for the 'bare' target (no external ram and no
35
#       cache) and will have to be fixed for regular targets (by using a
36
#       standard link script or fixing mine).
37
#-------------------------------------------------------------------------------
38
 
39
 
40
### Toolchain config ###########################################################
41
 
42
ifeq ($(LANG),)
43
#****  Customize for Windows/Cygwin
44
 
45
# Some common file commands (Cygwin/sh version, use your own)
46
CP = cp
47
RM = RM
48
DWIN32 = -DWIN32
49
LINUX_PWD =
50
 
51
 
52
# MIPS GCC cross-toolchain: CodeSourcery -- replace with your own
53
 
54
BIN_MIPS = C:/desarrollo/SourceryGpp/bin
55
GCC_MIPS  = $(BIN_MIPS)/mips-sde-elf-gcc.exe $(CFLAGS)
56
AS_MIPS   = $(BIN_MIPS)/mips-sde-elf-as
57
LD_MIPS   = $(BIN_MIPS)/mips-sde-elf-ld
58
DUMP_MIPS = $(BIN_MIPS)/mips-sde-elf-objdump
59
COPY_MIPS = $(BIN_MIPS)/mips-sde-elf-objcopy
60
TO_VHDL   = python ../bin2hdl.py
61
 
62
else
63
#**** Customize for Linux
64
 
65
# MIPS GCC cross-toolchain: BuildRoot toolchain in my home directory -- replace with your own
66
# NOTE: we will not use gcc builtin functions or libc
67
 
68
BIN_MIPS = /home/jaruiz/desarrollo/uClinux/MIPS/buildroot/buildroot-2010.11/output/staging/usr/bin
69
GCC_MIPS = $(BIN_MIPS)/mips-unknown-linux-uclibc-gcc $(CFLAGS)
70
AS_MIPS = $(BIN_MIPS)/mips-unknown-linux-uclibc-as
71
LD_MIPS = $(BIN_MIPS)/mips-unknown-linux-uclibc-ld
72
DUMP_MIPS = $(BIN_MIPS)/mips-unknown-linux-uclibc-objdump
73
COPY_MIPS = $(BIN_MIPS)/mips-unknown-linux-uclibc-objcopy
74
TO_VHDL = python ../bin2hdl.py
75
 
76
endif
77
 
78
### System parameters ##########################################################
79
 
80 34 ja_rd
# FIXME clean up parameter names
81
# 'CODE_BRAM' is meant to be a small BRAM (2 to 4KB) used for bootstrapping.
82
# 'DATA_BRAM' is a small BRAM connected to the data ports, used for debugging.
83
# 'XRAM' is meant to be the main external RAM, either SRAM or SDRAM.
84
 
85
 
86
# Default location of code BRAM is on the reset vector address
87
CODE_BRAM_ADDRESS = 0
88 2 ja_rd
# Default size of code BRAM in 32-bit words
89 34 ja_rd
CODE_BRAM_SIZE = 1024
90 2 ja_rd
# Default size of data BRAM in 32-bit words
91 34 ja_rd
DATA_BRAM_SIZE = 256
92
# Default address of BRAM -- used in some simulation-only tests, see makefiles
93
DATA_BRAM_ADDRESS = 0x10000
94
# Default size of data external RAM (XRAM) in 32-bit words (for simulation)
95
XRAM_SIZE = 2048
96
# Default address of XRAM
97
XRAM_ADDRESS = 0x80000000
98 2 ja_rd
 
99 34 ja_rd
 
100 2 ja_rd
### Build options ##############################################################
101
 
102
# Don't use gcc builtin functions, and try to target MIPS-I architecture
103 34 ja_rd
# This will prevent usage of unimplemented opcodes but will insert nops after
104
# load instructions, which Ion does not need.
105 2 ja_rd
# (See comment above about -G0 flag)
106
CFLAGS = -O2 -Wall -c -s -fno-builtin -mips1 -G0
107
 
108 34 ja_rd
# For most simulations and demos we'll use these parameters
109
# Set code to BRAM and use XRAM for data
110
# This will only work for small programs that fit the BRAM
111
LFLAGS_BOOT = -Ttext $(CODE_BRAM_ADDRESS) -Tdata $(XRAM_ADDRESS) -eentry -I elf32-big
112
 
113
# For some simulations we'll want to use TB1 which requires splitting code and
114
# data. Use project 'bare cpu' linker script and build elf-bigendian objects.
115
LFLAGS_BARE = -T../ion_noxram.lds -I elf32-big -eentry
116
 
117 2 ja_rd
### Project directories ########################################################
118
 
119
# VHDL test bench directory, where VHDL output files will be created
120
TB_DIR = ../../vhdl/tb
121
# VHDL DE-1 board demo root directory, for vhdl output
122
DEMO_DIR = ../../vhdl/demo
123
# Root test code source directory, where python script and vhdl templates are
124
SRC_DIR = ..

powered by: WebSVN 2.1.0

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