| [2] | 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 |
|---|
| 6 | PROOT := $(shell cd ../../../ ; /bin/pwd) |
|---|
| 7 | |
|---|
| 8 | DEBUG ?= y |
|---|
| 9 | |
|---|
| 10 | MULTI_STAGE ?= y |
|---|
| 11 | |
|---|
| 12 | BLD_TARGET = bootloader12 |
|---|
| 13 | |
|---|
| 14 | # move BUILD_SHMOO to makefile as one of build options. |
|---|
| 15 | BUILD_SHMOO ?= n |
|---|
| 16 | DDR_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 |
|---|
| 20 | ifeq ($(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 |
|---|
| 26 | else |
|---|
| 27 | DDR_FREQ_MHZ ?= 400 |
|---|
| 28 | #DDR_FREQ_MHZ ?= 533 |
|---|
| 29 | #DDR_FREQ_MHZ ?= 333 |
|---|
| 30 | DDR_DEV_TECH_1GBYTE ?= 0x2 |
|---|
| 31 | endif |
|---|
| 32 | |
|---|
| 33 | DDR_WIDTH ?= 16 |
|---|
| 34 | # Dram scrambling test option. A0/A1 Multistage bootloader only. |
|---|
| 35 | ENABLE_BOOT_SCRAMBLE_DRAM ?= y |
|---|
| 36 | |
|---|
| 37 | include $(PROOT)/dta/build/platform.inc |
|---|
| 38 | |
|---|
| 39 | MAGNUM = $(PROOT)/magnum |
|---|
| 40 | BSP = $(PROOT)/rockford/bsp |
|---|
| 41 | LIBDIR = $(PROOT)/dta/lib |
|---|
| 42 | DTADIR = $(PROOT)/dta |
|---|
| 43 | BLDDIR = $(PROOT)/dta/src/bootloader |
|---|
| 44 | |
|---|
| 45 | CFLAGS += -ffunction-sections |
|---|
| 46 | |
|---|
| 47 | CFLAGS += -DBCHP_CHIP=$(BCHP_CHIP) -DBCHP_VER=BCHP_VER_$(BCHP_VER) |
|---|
| 48 | CFLAGS += -DBSTD_CPU_ENDIAN=BSTD_ENDIAN_LITTLE |
|---|
| 49 | |
|---|
| 50 | CFLAGS += -DMEMC_0_DEV_TECH=$(DDR_DEV_TECH_1GBYTE) |
|---|
| 51 | CFLAGS += -DMEMC_0_DDR_FREQ=$(DDR_FREQ_MHZ) |
|---|
| 52 | CFLAGS += -DMEMC_0_DDR_WIDTH=$(DDR_WIDTH) |
|---|
| 53 | CFLAGS += -DMEMC_0_DDR_MODE=$(DDR_MODE) |
|---|
| 54 | ifeq ($(MULTI_STAGE),y) |
|---|
| 55 | ifeq ($(ENABLE_BOOT_SCRAMBLE_DRAM),y) |
|---|
| 56 | CFLAGS += -DBOOT_SCRAMBLE_DRAM=1 |
|---|
| 57 | endif |
|---|
| 58 | endif |
|---|
| 59 | |
|---|
| 60 | ifeq ($(SHRINK_WIDTH),y) |
|---|
| 61 | CFLAGS += -DSHRINK_WIDTH |
|---|
| 62 | endif |
|---|
| 63 | |
|---|
| 64 | CFLAGS += -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 | |
|---|
| 74 | CFLAGS += -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 | |
|---|
| 78 | CFLAGS += -I$(DTADIR)/src -I$(DTADIR)/src/z |
|---|
| 79 | |
|---|
| 80 | SHA1_SRC = $(BLDDIR)/sha1/sha1o.c |
|---|
| 81 | |
|---|
| 82 | RSA_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 | |
|---|
| 89 | CFLAGS += -DRSA_BITS=2048 |
|---|
| 90 | |
|---|
| 91 | ifeq ($(MULTI_STAGE),y) |
|---|
| 92 | # bls1.S is first stage of multistage bootloader entry point. |
|---|
| 93 | S1_SRC := $(BLDDIR)/bls1.S |
|---|
| 94 | S1_SRC += s1_main.c |
|---|
| 95 | # sha1 sources |
|---|
| 96 | S1_SRC += $(SHA1_SRC) |
|---|
| 97 | # rsa sources |
|---|
| 98 | S1_SRC += $(RSA_SRC) |
|---|
| 99 | |
|---|
| 100 | ifeq ($(ENABLE_BOOT_SCRAMBLE_DRAM),y) |
|---|
| 101 | CFLAGS += -DBOOT_SCRAMBLE_DRAM=1 |
|---|
| 102 | ifeq ($(BCHP_VER),B0) |
|---|
| 103 | S1_SRC += $(BSP)/bcm9$(BCHP_CHIP)/no-os/src/sde/scramble.c |
|---|
| 104 | endif |
|---|
| 105 | endif |
|---|
| 106 | |
|---|
| 107 | S1_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. |
|---|
| 109 | BLD_SRC := $(BLDDIR)/bls2.S |
|---|
| 110 | else |
|---|
| 111 | # one stage bootloader entry point. boots from flash. |
|---|
| 112 | BLD_SRC := $(BLDDIR)/bl.S |
|---|
| 113 | endif |
|---|
| 114 | |
|---|
| 115 | BLD_SRC += s2_main.c image_selector.c |
|---|
| 116 | BLD_SRC += $(SHA1_SRC) $(RSA_SRC) |
|---|
| 117 | |
|---|
| 118 | BLD_OBJ := $(patsubst %.S,%.o,$(filter %.S,$(BLD_SRC))) $(patsubst %.s,%.o,$(filter %.s,$(BLD_SRC))) $(patsubst %.c,%.o,$(filter %.c,$(BLD_SRC))) |
|---|
| 119 | |
|---|
| 120 | BLD_DEP := $(patsubst %.o,%.d,$(filter %.o,$(BLD_OBJ))) |
|---|
| 121 | |
|---|
| 122 | ifeq ($(MULTI_STAGE),y) |
|---|
| 123 | LDFLAGS += -T $(BLDDIR)/bootloader12s.script --gc-sections |
|---|
| 124 | else |
|---|
| 125 | LDFLAGS += -T $(BLDDIR)/$(BLD_TARGET).script --gc-sections |
|---|
| 126 | endif |
|---|
| 127 | |
|---|
| 128 | ifeq ($(BUILD_SHMOO),y) |
|---|
| 129 | SHMOO_VERSION_MAJ = 1 |
|---|
| 130 | SHMOO_VERSION_MIN = 0 |
|---|
| 131 | SHMOO_FILES = memc_init.c mem_test_dis.c shmoo.c |
|---|
| 132 | SHMOO_DIR = $(BSP)/Shmoo/$(BCHP_CHIP)/shmoo_lib/src |
|---|
| 133 | SHMOO_SRC = $(addprefix $(SHMOO_DIR)/, $(SHMOO_FILES)) \ |
|---|
| 134 | $(BLDDIR)/shmoo_build_info.c |
|---|
| 135 | SHMOO_OBJ = $(patsubst %.c,%.o,$(filter %.c,$(SHMOO_SRC))) |
|---|
| 136 | SHMOO_DEP = $(patsubst %.o,%.d,$(filter %.o,$(SHMOO_OBJ))) |
|---|
| 137 | |
|---|
| 138 | # cflags for shmoo |
|---|
| 139 | CFLAGS += -DUSE_DIS_CLIENT=1 |
|---|
| 140 | #CFLAGS += -DSHMOO_DEBUG=1 |
|---|
| 141 | CFLAGS += -DWRITE_BYTE_LANE_SHMOO |
|---|
| 142 | CFLAGS += -DREAD_BYTE_LANE_SHMOO |
|---|
| 143 | CFLAGS += -DDDR_WIDTH=$(DDR_WIDTH) |
|---|
| 144 | endif |
|---|
| 145 | |
|---|
| 146 | all : $(BLD_TARGET).bin |
|---|
| 147 | |
|---|
| 148 | $(BLD_TARGET).bin : $(BLD_TARGET).elf |
|---|
| 149 | $(OBJCOPY) -S -O binary $< $@ |
|---|
| 150 | |
|---|
| 151 | ifeq ($(MULTI_STAGE),y) |
|---|
| 152 | $(BLD_TARGET).elf : $(BLD_TARGET)_s1l.o $(BLD_TARGET).o |
|---|
| 153 | $(LD) -Map $(basename $@).map $(LDFLAGS) $^ $(LDLIBS) -o $@ |
|---|
| 154 | else |
|---|
| 155 | $(BLD_TARGET).elf : $(BLD_TARGET).o $(LIBDIR)/libshmoo.a |
|---|
| 156 | $(LD) -Map $(basename $@).map $(LDFLAGS) $^ $(LDLIBS) -o $@ |
|---|
| 157 | endif |
|---|
| 158 | |
|---|
| 159 | |
|---|
| 160 | clean : $(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 | |
|---|
| 174 | ifeq ($(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 | |
|---|
| 208 | shmoo_clean : |
|---|
| 209 | $(RM) -f $(LIBDIR)/libshmoo.a $(SHMOO_OBJ) $(SHMOO_DEP) |
|---|
| 210 | |
|---|
| 211 | clean : shmoo_clean |
|---|
| 212 | |
|---|
| 213 | -include $(SHMOO_DEP) |
|---|
| 214 | endif |
|---|
| 215 | |
|---|
| 216 | -include $(BLD_DEP) |
|---|