From 8bd9f182d403f1839db4724800674bbdb74900e4 Mon Sep 17 00:00:00 2001 From: Mariano Alvira Date: Tue, 2 Mar 2010 14:32:34 -0500 Subject: [PATCH] link objects in as archives so only what we need gets linked. Add an option to build objects without space resevered for rom calls. --- Makefile.include | 19 ++++++++++++------- src/start.S | 33 +++++---------------------------- tests/Makefile | 6 ++---- 3 files changed, 19 insertions(+), 39 deletions(-) diff --git a/Makefile.include b/Makefile.include index 92b565b06..dd5cbd5b5 100644 --- a/Makefile.include +++ b/Makefile.include @@ -13,7 +13,7 @@ include $(LIBMC1322X)/Makefile.lib CFLAGS += -I$(MC1322X)/src -I. -ifdef USE_ROM_VARS +ifdef TARGET_ROM_VARS START = $(MC1322X)/src/start-romvars.o endif @@ -24,7 +24,7 @@ endif ifndef ISR ISR = $(MC1322X)/src/isr.o endif -SRCOBJS += $(MC1322X)/src/default_lowlevel.o +SRCOBJS += $(MC1322X)/src/default_lowlevel.o $(ISR) $(START) BOARDOBJS := $(addprefix $(OBJDIR)/,$(COBJS)) ARCH = arm @@ -49,15 +49,20 @@ endef $(START): $(START:.o=.s) $(CC) $(AFLAGS) -c -o $@ $< $(MC1322X)/src/start-romvars.s: $(MC1322X)/src/start.S - $(CPP) $(AFLAGS) -DUSE_ROM_VARS -o $@ $< + $(CPP) $(AFLAGS) -DUSE_INTS -DUSE_ROM_VECTS -DUSE_ROM_VARS -o $@ $< +$(MC1322X)/src/start-romvects.s: $(MC1322X)/src/start.S + $(CPP) $(AFLAGS) -DUSE_INTS -DUSE_ROM_VECTS -o $@ $< $(ISR): $(ISR:.o=.c) $(CC) $(CFLAGS) $(ARM_FLAGS) -MMD $< -c -o $@ @$(FINALIZE_DEPENDENCY) -%_$(BOARD).elf: $(START) $(ISR) $(SRCOBJS) $(OBJDIR)/%.o $(BOARDOBJS) $(LINKERSCRIPT) $(LIBMC1322X)/libmc1322x.a - $(CC) $(LDFLAGS) $(AOBJS) \ - $(filter %.o %.a,$+) -o $@ +$(OBJDIR)/board.a: $(OBJDIR)/board.a($(OBJDIR)/$(COBJS)) +$(MC1322X)/src/src.a: $(MC1322X)/src/src.a($(SRCOBJS)) + +%_$(BOARD).elf: $(OBJDIR)/%.o $(START) $(ISR) $(SRCOBJS) $(LINKERSCRIPT) $(LIBMC1322X)/libmc1322x.a $(OBJDIR)/board.a $(MC1322X)/src/src.a + $(CC) $(LDFLAGS) \ + -L $(LIBMC1322X) -L $(MC1322X)/src -L $(OBJDIR) $< -o $@ $(START) $(MC1322X)/src/src.a $(LIBMC1322X)/libmc1322x.a $(OBJDIR)/board.a %.srec: %.elf $(OBJCOPY) ${OBJCFLAGS} -O srec $< $@ @@ -117,7 +122,7 @@ endif all: $(OBJDIR)/board.h for target in $(TARGETS); do make $$target\_$(BOARD).bin; done - for target in $(TARGETS_WITH_ROM_VARS); do make USE_ROM_VARS=1 $$target\_$(BOARD).bin; done + for target in $(TARGETS_WITH_ROM_VARS); do make TARGET_ROM_VARS=1 $$target\_$(BOARD).bin; done allboards: for board in $(BOARDS); do make BOARD=$$board all; done diff --git a/src/start.S b/src/start.S index 2474a4ead..5944d6713 100644 --- a/src/start.S +++ b/src/start.S @@ -57,7 +57,6 @@ .set base, . .set _rom_data_init, 0x108d0 - .globl _start _start: b _begin ldr pc, _undefined_instruction @@ -67,7 +66,8 @@ _start: b _begin ldr pc, _not_used ldr pc, _irq ldr pc, _fiq - + +#ifdef USE_ROM_VARS /* these vectors are used for rom patching */ .org 0x20 .code 16 @@ -85,13 +85,13 @@ _RPTV_2_START: .org 0xe0 _RPTV_3_START: bx lr /* do nothing */ + -#ifdef USE_ROM_VARS .org 0x120 ROM_var_start: .word 0 .org 0x7ff ROM_var_end: .word 0 -#endif +#endif /*USE_ROM_VARS*/ .code 32 .align @@ -129,6 +129,7 @@ _begin: // mov sp,r1 b main + _undefined_instruction: .word undefined_instruction _software_interrupt: .word software_interrupt @@ -177,29 +178,6 @@ _bss_end: _start_armboot: .word main - -/* - ************************************************************************* - * - * CPU_init_critical registers - * - ************************************************************************* - */ - -cpu_init_crit: - # actually do nothing for now! - mov pc, lr - - -/* - ************************************************************************* - * - * Interrupt handling - * - ************************************************************************* - */ - - /* * exception handlers */ @@ -233,4 +211,3 @@ fiq: .globl reset_cpu reset_cpu: mov pc, r0 - diff --git a/tests/Makefile b/tests/Makefile index b646a7da7..a7a79c989 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -8,15 +8,13 @@ COBJS := tests.o # all of the target programs to build TARGETS := blink-red blink-green blink-blue blink-white blink-allio \ uart1-loopback \ - nvm-read nvm-write romimg flasher \ tmr tmr-ints \ sleep \ - rftest-rx rftest-tx \ - printf + printf # these targets are built with space reserved for variables needed by ROM services # this space is initialized with a rom call to rom_data_init -TARGETS_WITH_ROM_VARS := +TARGETS_WITH_ROM_VARS := nvm-read nvm-write romimg flasher rftest-rx rftest-tx include $(MC1322X)/Makefile.include