link objects in as archives so only what we need gets linked.
Add an option to build objects without space resevered for rom calls.
This commit is contained in:
parent
4a61c10879
commit
8bd9f182d4
|
@ -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
|
||||
|
|
31
src/start.S
31
src/start.S
|
@ -57,7 +57,6 @@
|
|||
.set base, .
|
||||
.set _rom_data_init, 0x108d0
|
||||
|
||||
|
||||
.globl _start
|
||||
_start: b _begin
|
||||
ldr pc, _undefined_instruction
|
||||
|
@ -68,6 +67,7 @@ _start: b _begin
|
|||
ldr pc, _irq
|
||||
ldr pc, _fiq
|
||||
|
||||
#ifdef USE_ROM_VARS
|
||||
/* these vectors are used for rom patching */
|
||||
.org 0x20
|
||||
.code 16
|
||||
|
@ -86,12 +86,12 @@ _RPTV_2_START:
|
|||
_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
|
||||
|
@ -130,6 +130,7 @@ _begin:
|
|||
|
||||
b main
|
||||
|
||||
|
||||
_undefined_instruction: .word undefined_instruction
|
||||
_software_interrupt: .word software_interrupt
|
||||
_prefetch_abort: .word prefetch_abort
|
||||
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
# 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
|
||||
|
||||
|
|
Loading…
Reference in a new issue