- 论坛徽章:
- 0
|
CROSS=mipsel-linux-
CC=$(CROSS)gcc
LD=$(CROSS)ld
OBJCOPY=$(CROSS)objcopy
OBJDUMP=$(CROSS)objdump
# Set this to "n" for production (disabling UART output)
USE_UART = y
# Set this to "y" for signature block support
# When it's "n" XENV will be used instead
USE_SIGBLOCK = n
ifeq ($(USE_SIGBLOCK),y)
USE_XENV = n
else
USE_XENV = y
endif
SHELL=/bin/bash
internal_hex = 0x$(shell printf "%x" $$[$(1)])
INCS=-I.
# CFLAGS=-D_32_ -Wall -Werror -Wstrict-prototypes -O2 -G 0 -mno-abicalls -fno-pic -fno-builtin -mabi=32 -march=mips32 -Wa,-32 -Wa,-march=mips32 -Wa,-mips32 -Wa,--trap
# For GCC that supports MIPSr2
CFLAGS=-D_32_ -Wall -Werror -Wstrict-prototypes -Wsign-compare -O2 -G 0 -mno-abicalls -fno-pic -fno-builtin -mabi=32 -march=mips32r2 -Wa,-32 -Wa,-march=mips32r2 -Wa,-mips32r2 -Wa,--trap
ifeq ($(USE_UART),n)
CFLAGS+=-DUART_DISABLED
endif
ifneq ($(RMCFLAGS),)
CFLAGS+=$(RMCFLAGS)
else
# For Tango2 chip, default
CFLAGS+= -DEM86XX_CHIP=EM86XX_CHIPID_TANGO2
# For Tango3 chip
# CFLAGS+= -DEM86XX_CHIP=EM86XX_CHIPID_TANGO3
# For which revision? ES1-6=1-6, RevA-C=65-67, default is 6.
ifneq ($(EM86XX_REVISION),)
CFLAGS+= -DEM86XX_REVISION=$(EM86XX_REVISION)
else
ifneq '$(filter -DEM86XX_CHIP=EM86XX_CHIPID_TANGO3, $(CFLAGS))' ''
CFLAGS+= -DEM86XX_REVISION=1
else
CFLAGS+= -DEM86XX_REVISION=6
endif
endif
endif
ifneq ($(RELEASE_NAME),)
CFLAGS+= -DRELEASE_NAME=\"$(RELEASE_NAME)\"
endif
ifneq '$(filter -DEM86XX_CHIP=EM86XX_CHIPID_TANGO3, $(RMCFLAGS))' ''
include emhwlib_registers_tango3.inc
include emhwlib_dram_tango3.inc
# To be re-defined later
ZBOOT_MEM_BASE=0x10000000
else
# default with Tango2
include emhwlib_registers_tango2.inc
include emhwlib_dram_tango2.inc
ZBOOT_MEM_BASE=$(MEM_BASE_dram_controller_0)
endif
CFLAGS+= -DZBOOT_MEM_BASE=$(ZBOOT_MEM_BASE)
# Start address of KSEGX, either 0x80000000 (KSEG0), or 0xa0000000 (KSEG1)
KSEG0ADDR=0x80000000
KSEG1ADDR=0xa0000000
KSEGXADDR=$(KSEG0ADDR)
# Start address of stage0 (either 0x9fc00000 or 0xbfc00000, depends on KSEGXADDR)
STAGE0_ADDR=$(call internal_hex,$(KSEGXADDR)+0x1fc00000)
# Start address of stage1 (in DRAM, has to be larger than or equal to 0x90010000 due to memcfg data structure)
STAGE1_ADDR=$(call internal_hex,$(KSEGXADDR)+$(ZBOOT_MEM_BASE)+$(FM_ZBOOT))
# The size of signature block plus 20bytes sha1sum
IMG_OFFSET=212
TARGETS = zboot.bin
ifeq ($(USE_XENV),y)
CFLAGS += -DCONFIG_XENV_SUPPORT
BUILD_SCRIPT=./build_xload.bash
ifneq '$(filter -DWITH_PROD=1 -DWITH_FACSPROD=1, $(RMCFLAGS))' ''
CERT_ID=000b
#CERT_ID=0009
CERT_TYPE=ES4_prod
else
CERT_ID=000a
CERT_TYPE=ES4_dev
endif
TARGETS += xrpc_xload_zboot_$(CERT_TYPE).bin
else
ifeq ($(USE_SIGBLOCK),y)
CFLAGS += -DCONFIG_SIGBLOCK_SUPPORT
TARGETS += zboot.img
endif
endif
CFLAGS+=$(INCS)
COMMON_C=uart.c util.c vsprintf.c xenv.c full_sha1.c fastsha1.c
STAGE0_C=mt_utils.c mt_elementary.c mt_tests.c stage0_main.c
STAGE1_C=main.c romfs.c zboot.c xload.c kunzip.c
SRC_H=$(wildcard *.h)
SRC_S=$(wildcard *.S)
COMMON_O=$(notdir $(patsubst %.c, %.o, $(COMMON_C)))
STAGE0_O=$(notdir $(patsubst %.c, %.o, $(STAGE0_C)))
STAGE1_O=$(notdir $(patsubst %.c, %.o, $(STAGE1_C)))
OBJ_S=$(notdir $(patsubst %.S, %.o, $(SRC_S)))
OBJS=$(STAGE1_O) $(STAGE0_O) $(COMMON_O) $(OBJ_S)
SRC_H += Makefile
all: $(TARGETS)
clean:
rm -f $(OBJS) *.bin *.elf *.gz *.map *.dasm *.img *.xload
zboot.img.gz: zboot.img
gzip -c9 $< > $@
zboot.bin.gz: zboot.bin
gzip -c9 $< > $@
xrpc_xload_zboot_$(CERT_TYPE).bin: zboot.bin
$(BUILD_SCRIPT) zboot $(CERT_ID) $(CERT_TYPE) 0x10800000
zboot.img: zboot.bin
dd if=$< of=$@ bs=1 skip=$(IMG_OFFSET)
zboot.bin: stage1.bin stage0.bin
cat stage0.bin stage1.bin > $@
stage0.elf: reset.o $(STAGE0_O) $(COMMON_O) stage0.ld.script
$(LD) -T stage0.ld.script -Ttext $(STAGE0_ADDR) --defsym stage1_handler=$(STAGE1_ADDR) -o $@ -Map stage0.map reset.o $(STAGE0_O) $(COMMON_O)
stage0.dasm: stage0.elf
$(OBJDUMP) -S --line-number $< > $@
stage0.bin: stage0.elf stage0.dasm
$(OBJCOPY) -O binary $< $@
stage1.elf: $(STAGE1_O) $(COMMON_O) start.o libVerifier.o stage1.ld.script
$(LD) -T stage1.ld.script -Ttext $(STAGE1_ADDR) -o $@ -Map stage1.map start.o $(STAGE1_O) $(COMMON_O)
stage1.dasm: stage1.elf
$(OBJDUMP) -S --line-number $< > $@
stage1.bin: stage1.elf stage1.dasm
$(OBJCOPY) -O binary $< $@
$(STAGE1_O) $(STAGE0_O) $(COMMON_O) : %.o : %.c $(SRC_H)
$(CC) -c $(CFLAGS) -o $@ $<
start.o: start.S $(SRC_H)
$(CC) -c $(CFLAGS) -D__ASSEMBLY__ -o $@ $<
reset.o: reset.S $(SRC_H) stage1.bin
$(CC) -c $(CFLAGS) -D__ASSEMBLY__ -DSTAGE1_SIZE=$(shell cat stage1.bin | POSIXLY_CORRECT=y wc -c) -o $@ $<
我需要在stage1.bin中增加libVerifier.o,要怎么改?
PS:
我在$(LD) -T stage1.ld.script -Ttext $(STAGE1_ADDR) -o $@ -Map stage1.map start.o $(STAGE1_O) $(COMMON_O)
这里加上libVerifier.o为什么没起到作用?
[ 本帖最后由 ksjok 于 2007-11-19 10:28 编辑 ] |
|