1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
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
|