summaryrefslogtreecommitdiffstats
path: root/cfe/build/broadcom/bcm63xx_rom/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'cfe/build/broadcom/bcm63xx_rom/Makefile')
-rwxr-xr-xcfe/build/broadcom/bcm63xx_rom/Makefile160
1 files changed, 160 insertions, 0 deletions
diff --git a/cfe/build/broadcom/bcm63xx_rom/Makefile b/cfe/build/broadcom/bcm63xx_rom/Makefile
new file mode 100755
index 0000000..819cb21
--- /dev/null
+++ b/cfe/build/broadcom/bcm63xx_rom/Makefile
@@ -0,0 +1,160 @@
+
+CFG_MLONG64 ?= 0
+CFG_LITTLE ?= 0 # Mindbender
+CFG_RELOC ?= 0
+CFG_UNCACHED ?= 0 # Mindbender
+CFG_NEWRELOC ?= 0
+CFG_VAPI ?= 0
+CFG_BOOTRAM ?= 0
+CFG_RAMAPP ?= 0 # EPI
+CFG_BOARDNAME = "BCM9$(BRCM_CHIP)"
+CFG_PCI ?= 0
+CFG_ZLIB ?= 0 # enable zlib
+CFG_SBP ?= 0 # use Single Board Parameter if defined to 1
+
+TOP = ../../../cfe
+ARCH = mips
+CPU = bcmcore
+BOARD = bcm63xx_rom
+
+LINUX_KERNEL_DIR=../../../../kernel/linux
+HOSTTOOLS = ../../../../hostTools
+TARGETS_DIR = ../../../../targets
+SHARED_DIR = ../../../../shared
+INC_SHARED_PUB_PATH = $(SHARED_DIR)/opensource/include/bcm963xx
+INC_SHARED_PRIV_PATH = $(SHARED_DIR)/broadcom/include/bcm963xx
+FLASH_DIR = $(SHARED_DIR)/opensource/flash
+BCMSPI_DIR = $(SHARED_DIR)/opensource/spi
+
+BOOT_DIR = ${ARCH_TOP}/board/$(BOARD)/src
+ASM_FILE = flashimg.S
+RAM_BUILD = ../bcm63xx_ram
+
+TOOLS=../../../../uclibc-crosstools-gcc-4.4.2-1/usr/bin/mips-linux-
+
+include $(TOP)/arch/mips/board/$(BOARD)/src/rom_cfe.mk
+
+VPATH += ${FLASH_DIR} $(BCMSPI_DIR)
+INCDIRS += -I${ARCH_TOP}/board/bcm63xx_ram/include -I${INC_SHARED_PUB_PATH} -I${INC_SHARED_PRIV_PATH}
+
+BSPOBJS_ROM := $(BSPOBJS)
+ifneq ($(strip $(BRCM_IKOS)),y)
+BSPOBJS += flashimg.o $(LZMAOBJS)
+endif
+
+export INC_CFI_FLASH_DRIVER INC_SPI_FLASH_DRIVER INC_NAND_FLASH_DRIVER INC_SPI_PROG_NAND
+
+ALL : sanity_check cfe$(BRCM_CHIP)
+ifneq ($(strip $(INC_NAND_FLASH_DRIVER)),1)
+ gcc -o ${HOSTTOOLS}/addvtoken -I ${INC_SHARED_PUB_PATH} ${HOSTTOOLS}/addvtoken.c
+ @if [ $(shell find . -name cfe$(BRCM_CHIP).bin -printf '%s\n') -le 65536 ] ; then \
+ ${HOSTTOOLS}/addvtoken cfe$(BRCM_CHIP).bin bcm9$(BRCM_CHIP)_cfe.w; \
+ else \
+ find . -name cfe$(BRCM_CHIP).bin -printf '\nERROR: cfe.bin size, %s, is greater than 65536 maximum size.\n'; \
+ rm cfe$(BRCM_CHIP) cfe$(BRCM_CHIP).bin; \
+ fi
+endif
+ @echo done
+
+untar_check:
+ @if [ ! -e $(TOP)/api ]; then \
+ echo Untarring original CFE source...; \
+ (cd ../../.. && tar xfzk cfe*.tar.gz 2> /dev/null || true); \
+ fi
+
+sanity_check:
+ @if [ "$(BRCM_CHIP)" = "" ]; then \
+ echo You must specify chip ID using 'make BRCM_CHIP=[6328|6362|6368|6816]'; exit 1; \
+ fi
+ @if [ ! -e $(TOP)/api ]; then \
+ echo Untarring original CFE source...; \
+ (cd ../../.. && tar xfzk cfe*.tar.gz 2> /dev/null || true); \
+ $(MAKE) BRCM_CHIP=$(BRCM_CHIP) BLD_NAND=$(BLD_NAND); \
+ fi
+
+mksbp: ALL
+ @echo done
+
+sbp:
+ ${MAKE} clean
+ ${MAKE} CFG_SBP?=1 mksbp
+
+ifeq ($(strip $(INC_NAND_FLASH_DRIVER)),1)
+# Build NAND flash boot loader
+cfe$(BRCM_CHIP) cfe$(BRCM_CHIP).bin : $(CRT0OBJS) $(BSPOBJS_ROM) $(LIBCFE) noflashimg
+ $(MAKE) -C $(RAM_BUILD)
+ $(GLD) -o cfe$(BRCM_CHIP)rom -Map cfe$(BRCM_CHIP)rom.map $(LDFLAGS) $(CRT0OBJS) $(BSPOBJS_ROM) noflashimg.o -L. -lcfe $(LDLIBS)
+ $(OBJCOPY) --output-target=binary cfe$(BRCM_CHIP)rom cfe$(BRCM_CHIP)rom.bin
+ rm noflashimg.*
+
+noflashimg:
+ echo "char *_binArrayStart = (char *) 0, *_binArrayEnd = (char *) 0;" > $@.c; \
+ echo "int decompressLZMA(unsigned char *s, unsigned int sl, unsigned char *d, unsigned int dl);" >> $@.c; \
+ echo "int decompressLZMA(unsigned char *s, unsigned int sl, unsigned char *d, unsigned int dl){return 0;}" >> $@.c
+ $(GCC) $(CFLAGS) -o $@.o $@.c
+
+else
+# Build NOR flash boot loader
+cfe$(BRCM_CHIP) cfe$(BRCM_CHIP).bin : $(CRT0OBJS) $(BSPOBJS) $(LIBCFE) $(ASM_FILE)
+ $(GLD) -o cfe$(BRCM_CHIP) -Map cfe$(BRCM_CHIP).map $(LDFLAGS) $(CRT0OBJS) $(BSPOBJS) -L. -lcfe $(LDLIBS)
+ $(OBJDUMP) -d cfe$(BRCM_CHIP) > cfe$(BRCM_CHIP).dis
+ $(OBJCOPY) --output-target=binary cfe$(BRCM_CHIP) cfe$(BRCM_CHIP).bin
+
+$(ASM_FILE) : $(TOP)/arch/mips/board/bcm63xx_ram/src
+ rm -f $(ASM_FILE)
+ $(MAKE) -C $(RAM_BUILD)
+endif
+
+
+clean : untar_check
+ rm -f *.o *~ cfe* *.w *.srec
+ rm -f build_date.c
+ rm -f noflashimg.c >& /dev/null
+ rm -f libcfe.a
+ $(MAKE) -C $(RAM_BUILD) clean
+
+distclean : clean
+
+release : untar_check
+ $(MAKE) clean
+ $(MAKE) BRCM_CHIP=6328
+ cp -f cfe*.bin $(TARGETS_DIR)/cfe
+ $(MAKE) clean
+ $(MAKE) BRCM_CHIP=6328 BLD_NAND=1
+ cp -f cfe*.bin $(TARGETS_DIR)/cfe
+ cp -f $(RAM_BUILD)/cfe*ram.bin $(TARGETS_DIR)/cfe
+ $(MAKE) clean
+ $(MAKE) BRCM_CHIP=6362
+ cp -f cfe*.bin $(TARGETS_DIR)/cfe
+ $(MAKE) clean
+ $(MAKE) BRCM_CHIP=6362 BLD_NAND=1
+ cp -f cfe*.bin $(TARGETS_DIR)/cfe
+ cp -f $(RAM_BUILD)/cfe*ram.bin $(TARGETS_DIR)/cfe
+ $(MAKE) clean
+ $(MAKE) BRCM_CHIP=6368
+ cp -f cfe*.bin $(TARGETS_DIR)/cfe
+ $(MAKE) clean
+ $(MAKE) BRCM_CHIP=6368 BLD_NAND=1
+ cp -f cfe*.bin $(TARGETS_DIR)/cfe
+ cp -f $(RAM_BUILD)/cfe*ram.bin $(TARGETS_DIR)/cfe
+ $(MAKE) clean
+ $(MAKE) BRCM_CHIP=6816
+ cp -f cfe*.bin $(TARGETS_DIR)/cfe
+ $(MAKE) clean
+ $(MAKE) BRCM_CHIP=6816 BLD_NAND=1
+ cp -f cfe*.bin $(TARGETS_DIR)/cfe
+ cp -f $(RAM_BUILD)/cfe*ram.bin $(TARGETS_DIR)/cfe
+ $(MAKE) clean
+
+CFE_RAM_START_ADDR := $(OBJDUMP) -f $(RAM_BUILD)/cfe$(BRCM_CHIP) | grep start | cut -d'x' -f2
+VMLINUX_START_ADDR := $(OBJDUMP) -f $(LINUX_KERNEL_DIR)/vmlinux | grep start | cut -d'x' -f2
+
+# Must be called from base Linux build directory.
+ikos_finish:
+ @xxd -g4 cfe$(BRCM_CHIP) | sed -e "s/694b6f31/$(shell $(CFE_RAM_START_ADDR))/" | xxd -r > cfe$(BRCM_CHIP).tmp
+ @mv cfe$(BRCM_CHIP).tmp cfe$(BRCM_CHIP)
+ @xxd -g4 $(RAM_BUILD)/cfe$(BRCM_CHIP) | sed -e "s/694b6f32/$(shell $(VMLINUX_START_ADDR))/" | xxd -r > $(RAM_BUILD)/cfe$(BRCM_CHIP).tmp
+ @mv $(RAM_BUILD)/cfe$(BRCM_CHIP).tmp $(RAM_BUILD)/cfe$(BRCM_CHIP)
+ $(OBJCOPY) --output-target=binary cfe$(BRCM_CHIP) cfe$(BRCM_CHIP).bin
+ $(OBJCOPY) --output-target=srec $(RAM_BUILD)/cfe$(BRCM_CHIP) cferam$(BRCM_CHIP).srec
+