source: svn/branches/kctv/newcon3bcm2_21bu/dst/build/bootloader.mk @ 45

Last change on this file since 45 was 2, checked in by phkim, 11 years ago

1.phkim

  1. revision copy newcon3sk r27
  • Property svn:executable set to *
File size: 6.1 KB
Line 
1# WARNING: For two multi stage bootloader to compile makefile must run from the
2# bootloader directory otherwise it will not link! Please take this in to
3# consideration when modifying this makefile and build process.
4
5# Project Root Directory
6PROOT := $(shell cd ../../../ ; /bin/pwd)
7
8DEBUG ?= y
9
10MULTI_STAGE ?= y
11
12BLD_TARGET = bootloader12
13
14# move BUILD_SHMOO to makefile as one of build options.
15BUILD_SHMOO ?= n
16DDR_MODE ?= MEMC_MODE_DDR2
17
18# MEMC_MODE_DDR3 for DDR3 and FREQ should be 533 or 667 MHz if DDR3 is used
19# for 7574 we use the bootloader.mk under bootloader7572 diretory for following defines based on CFG_PROFILE
20ifeq ($(DDR_MODE),MEMC_MODE_DDR3)
21        # now more DDR speeds are support for DDR3 also, please refer to memc_0_config.h
22        DDR_FREQ_MHZ ?= 800
23    #DDR_FREQ_MHZ ?= 533
24    #DDR_FREQ_MHZ ?= 667
25        DDR_DEV_TECH_1GBYTE ?= 0x3      # 2GBYTE
26else
27    DDR_FREQ_MHZ ?= 400
28    #DDR_FREQ_MHZ ?= 533
29    #DDR_FREQ_MHZ ?= 333
30        DDR_DEV_TECH_1GBYTE ?= 0x2
31endif
32
33DDR_WIDTH ?= 16
34# Dram scrambling test option. A0/A1 Multistage bootloader only.
35ENABLE_BOOT_SCRAMBLE_DRAM ?= y
36
37include $(PROOT)/dta/build/platform.inc
38
39MAGNUM = $(PROOT)/magnum
40BSP = $(PROOT)/rockford/bsp
41LIBDIR = $(PROOT)/dta/lib
42DTADIR = $(PROOT)/dta
43BLDDIR = $(PROOT)/dta/src/bootloader
44
45CFLAGS += -ffunction-sections
46
47CFLAGS += -DBCHP_CHIP=$(BCHP_CHIP) -DBCHP_VER=BCHP_VER_$(BCHP_VER)
48CFLAGS += -DBSTD_CPU_ENDIAN=BSTD_ENDIAN_LITTLE
49
50CFLAGS += -DMEMC_0_DEV_TECH=$(DDR_DEV_TECH_1GBYTE)
51CFLAGS += -DMEMC_0_DDR_FREQ=$(DDR_FREQ_MHZ)
52CFLAGS += -DMEMC_0_DDR_WIDTH=$(DDR_WIDTH)
53CFLAGS += -DMEMC_0_DDR_MODE=$(DDR_MODE)
54ifeq ($(MULTI_STAGE),y)
55ifeq ($(ENABLE_BOOT_SCRAMBLE_DRAM),y)
56CFLAGS += -DBOOT_SCRAMBLE_DRAM=1
57endif
58endif
59
60ifeq ($(SHRINK_WIDTH),y)
61CFLAGS                          += -DSHRINK_WIDTH
62endif
63
64CFLAGS += -I$(MAGNUM)/basemodules/chp/$(BCHP_CHIP)/rdb/$(BCHP_VER_LOWER) \
65        -I$(MAGNUM)/basemodules/chp \
66        -I$(MAGNUM)/basemodules/std \
67        -I$(MAGNUM)/basemodules/std/config \
68        -I$(MAGNUM)/basemodules/std/types/ucos_ii \
69        -I$(MAGNUM)/basemodules/err \
70        -I$(MAGNUM)/basemodules/dbg \
71        -I$(MAGNUM)/basemodules/reg \
72        -I$(MAGNUM)/commonutils/lst \
73
74CFLAGS += -I$(BSP)/bcm9$(BCHP_CHIP)/no-os/src/sde \
75        -I$(BSP)/Shmoo/$(BCHP_CHIP)/shmoo_lib/include \
76        -I$(BSP)/Shmoo/$(BCHP_CHIP)/shmoo_lib/src
77
78CFLAGS += -I$(DTADIR)/src -I$(DTADIR)/src/z
79
80SHA1_SRC = $(BLDDIR)/sha1/sha1o.c
81
82RSA_SRC = $(BLDDIR)/rsa/mp2.c \
83$(BLDDIR)/rsa/mp2_addmul.c \
84$(BLDDIR)/rsa/mp2_mpcopy.c \
85$(BLDDIR)/rsa/mp2_mpzero.c \
86$(BLDDIR)/rsa/mp2_smalldiv.c \
87$(BLDDIR)/rsa/mpclshift.c
88
89CFLAGS += -DRSA_BITS=2048
90
91ifeq ($(MULTI_STAGE),y)
92# bls1.S is first stage of multistage bootloader entry point.
93S1_SRC := $(BLDDIR)/bls1.S
94S1_SRC += s1_main.c
95# sha1 sources
96S1_SRC += $(SHA1_SRC)
97# rsa sources
98S1_SRC += $(RSA_SRC)
99
100ifeq ($(ENABLE_BOOT_SCRAMBLE_DRAM),y)
101CFLAGS += -DBOOT_SCRAMBLE_DRAM=1
102ifeq ($(BCHP_VER),B0)
103S1_SRC += $(BSP)/bcm9$(BCHP_CHIP)/no-os/src/sde/scramble.c
104endif
105endif
106
107S1_OBJ :=  $(subst .S,.o,$(filter %.S, $(S1_SRC))) $(subst .c,.o, $(filter %.c, $(S1_SRC)))
108# second stage of multistage bootloader entry point. relocated in ram.
109BLD_SRC := $(BLDDIR)/bls2.S
110else
111# one stage bootloader entry point. boots from flash.
112BLD_SRC := $(BLDDIR)/bl.S
113endif
114
115BLD_SRC += s2_main.c image_selector.c
116BLD_SRC += $(SHA1_SRC) $(RSA_SRC)
117
118BLD_OBJ := $(patsubst %.S,%.o,$(filter %.S,$(BLD_SRC))) $(patsubst %.s,%.o,$(filter %.s,$(BLD_SRC)))  $(patsubst %.c,%.o,$(filter %.c,$(BLD_SRC)))
119
120BLD_DEP := $(patsubst %.o,%.d,$(filter %.o,$(BLD_OBJ))) 
121
122ifeq ($(MULTI_STAGE),y)
123LDFLAGS += -T $(BLDDIR)/bootloader12s.script --gc-sections
124else
125LDFLAGS += -T $(BLDDIR)/$(BLD_TARGET).script --gc-sections
126endif
127
128ifeq ($(BUILD_SHMOO),y)
129SHMOO_VERSION_MAJ = 1
130SHMOO_VERSION_MIN = 0
131SHMOO_FILES = memc_init.c mem_test_dis.c shmoo.c
132SHMOO_DIR = $(BSP)/Shmoo/$(BCHP_CHIP)/shmoo_lib/src
133SHMOO_SRC = $(addprefix $(SHMOO_DIR)/, $(SHMOO_FILES)) \
134        $(BLDDIR)/shmoo_build_info.c
135SHMOO_OBJ = $(patsubst %.c,%.o,$(filter %.c,$(SHMOO_SRC)))
136SHMOO_DEP = $(patsubst %.o,%.d,$(filter %.o,$(SHMOO_OBJ)))
137
138# cflags for shmoo
139CFLAGS += -DUSE_DIS_CLIENT=1
140#CFLAGS += -DSHMOO_DEBUG=1
141CFLAGS += -DWRITE_BYTE_LANE_SHMOO
142CFLAGS += -DREAD_BYTE_LANE_SHMOO
143CFLAGS += -DDDR_WIDTH=$(DDR_WIDTH)
144endif
145
146all : $(BLD_TARGET).bin
147
148$(BLD_TARGET).bin : $(BLD_TARGET).elf
149        $(OBJCOPY) -S -O binary $< $@
150
151ifeq ($(MULTI_STAGE),y)
152$(BLD_TARGET).elf : $(BLD_TARGET)_s1l.o $(BLD_TARGET).o
153        $(LD) -Map $(basename $@).map $(LDFLAGS) $^ $(LDLIBS) -o $@
154else
155$(BLD_TARGET).elf : $(BLD_TARGET).o $(LIBDIR)/libshmoo.a
156        $(LD) -Map $(basename $@).map $(LDFLAGS) $^ $(LDLIBS) -o $@
157endif
158
159
160clean : $(BLD_TARGET)_clean
161
162$(BLD_TARGET)_clean:
163        $(RM) -f $(BLD_TARGET).elf $(BLD_TARGET).bin $(BLD_TARGET).map $(BLD_OBJ) $(BLD_DEP) $(S1_OBJ) $(BLD_TARGET)_s1.o $(BLD_TARGET)_s1l.o $(BLD_TARGET).o
164
165$(BLD_TARGET)_s1.o : $(S1_OBJ) $(LIBDIR)/libshmoo.a
166        $(LD) -r $(LFLAGS) $^ -o $@
167
168$(BLD_TARGET)_s1l.o : $(BLD_TARGET)_s1.o
169        $(OBJCOPY) -w -G __start -G key1 $^ $@
170
171$(BLD_TARGET).o : $(BLD_OBJ)
172        $(LD) -r $(LFLAGS) $^ -o $@
173
174ifeq ($(BUILD_SHMOO),y)
175$(BLDDIR)/shmoo_build_info.c :
176        echo "#include \"memc_init.h\"" > $@
177        echo "char *shmoobuildinfo = \"`date`\";" >> $@
178        echo "#define SHMOO_VER_MAJ '$(SHMOO_VERSION_MAJ)'" >> $@
179        echo "#define SHMOO_VER_MIN '$(SHMOO_VERSION_MIN)'" >> $@
180        echo "int print_shmoo_ver ( void );" >> $@
181        echo "void print_char(uint32_t c);" >> $@
182        echo "int print_shmoo_ver(void){" >> $@
183        echo "print_char('\\\r');" >> $@
184        echo "print_char('\\\n');" >> $@
185        echo "print_char('S');" >> $@
186        echo "print_char('h');" >> $@
187        echo "print_char('m');" >> $@
188        echo "print_char('o');" >> $@
189        echo "print_char('o');" >> $@
190        echo "print_char(' ');" >> $@
191        echo "print_char('V');" >> $@
192        echo "print_char('e');" >> $@
193        echo "print_char('r');" >> $@
194        echo "print_char('s');" >> $@
195        echo "print_char('i');" >> $@
196        echo "print_char('o');" >> $@
197        echo "print_char('n');" >> $@
198        echo "print_char('=');" >> $@
199        echo "print_char(SHMOO_VER_MAJ);" >> $@
200        echo "print_char('.');" >> $@
201        echo "print_char(SHMOO_VER_MIN);" >> $@
202        echo "print_char('\\\r');" >> $@
203        echo "print_char('\\\n'); return 0;" >> $@
204        echo "}" >> $@
205
206$(LIBDIR)/libshmoo.a : $(SHMOO_OBJ) $(LIBDIR)/libshmoo.a($(SHMOO_OBJ))
207
208shmoo_clean :
209        $(RM) -f $(LIBDIR)/libshmoo.a  $(SHMOO_OBJ) $(SHMOO_DEP)
210
211clean : shmoo_clean
212
213-include $(SHMOO_DEP)
214endif
215
216-include $(BLD_DEP)
Note: See TracBrowser for help on using the repository browser.