From eea02437d75096cb3c4b8d03ef68ca094e5f90c6 Mon Sep 17 00:00:00 2001 From: Frank Voorburg Date: Wed, 16 Aug 2017 15:55:58 +0000 Subject: [PATCH] Refs #363. Updated GCC Makefiles in the Olimex LPC-L2294 demo programs. git-svn-id: https://svn.code.sf.net/p/openblt/code/trunk@341 5dc33758-31d5-4daf-9ae8-b24bf3d40d73 --- .../bin/openblt_olimex_lpc_l2294_20mhz.elf | Bin 98477 -> 210360 bytes .../bin/openblt_olimex_lpc_l2294_20mhz.hex | 395 ----------- .../bin/openblt_olimex_lpc_l2294_20mhz.map | 632 ++++++++++++------ .../bin/openblt_olimex_lpc_l2294_20mhz.srec | 498 ++++++++++++++ .../Boot/makefile | 214 +++--- .../bin/demoprog_olimex_lpc_l2294_20mhz.elf | Bin 21478 -> 55032 bytes .../bin/demoprog_olimex_lpc_l2294_20mhz.map | 366 ++++++---- .../bin/demoprog_olimex_lpc_l2294_20mhz.srec | 148 ++++ .../bin/demoprog_olimex_lpc_l2294_20mhz.sx | 242 ------- .../Prog/makefile | 182 ++--- 10 files changed, 1527 insertions(+), 1150 deletions(-) delete mode 100644 Target/Demo/ARM7_LPC2000_Olimex_LPC_L2294_GCC/Boot/bin/openblt_olimex_lpc_l2294_20mhz.hex create mode 100755 Target/Demo/ARM7_LPC2000_Olimex_LPC_L2294_GCC/Boot/bin/openblt_olimex_lpc_l2294_20mhz.srec create mode 100755 Target/Demo/ARM7_LPC2000_Olimex_LPC_L2294_GCC/Prog/bin/demoprog_olimex_lpc_l2294_20mhz.srec delete mode 100644 Target/Demo/ARM7_LPC2000_Olimex_LPC_L2294_GCC/Prog/bin/demoprog_olimex_lpc_l2294_20mhz.sx diff --git a/Target/Demo/ARM7_LPC2000_Olimex_LPC_L2294_GCC/Boot/bin/openblt_olimex_lpc_l2294_20mhz.elf b/Target/Demo/ARM7_LPC2000_Olimex_LPC_L2294_GCC/Boot/bin/openblt_olimex_lpc_l2294_20mhz.elf index 9731f86dcdeb95439ad232eecd3c8436de06002d..a1f0208e39af87092862706ccbab83d9750d2572 100644 GIT binary patch literal 210360 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 z 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 Returns all *.c and *.h files in the current directory and below +# $(call rwildcard, /lib/, *.c) +# --> Returns all *.c files in the /lib directory and below +rwildcard = $(strip $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))) + +# Collect all application files in the current directory and its subdirectories, but +# exclude flash-layout.c as this one is directly included in a source file, when used. +PROJ_FILES = $(filter-out flash_layout.c, $(call rwildcard, , *.c *.h *.s)) +# Collect bootloader core files +PROJ_FILES += $(wildcard ../../../Source/*.c) +PROJ_FILES += $(wildcard ../../../Source/*.h) +# Collect bootloader port files +PROJ_FILES += $(wildcard ../../../Source/ARM7_LPC2000/*.c) +PROJ_FILES += $(wildcard ../../../Source/ARM7_LPC2000/*.h) +# Collect bootloader port compiler specific files +PROJ_FILES += $(wildcard ../../../Source/ARM7_LPC2000/GCC/*.c) +PROJ_FILES += $(wildcard ../../../Source/ARM7_LPC2000/GCC/*.h) -#|---------------------------------------------------------------------------------------| -#| Extract file names | -#|---------------------------------------------------------------------------------------| +#|--------------------------------------------------------------------------------------| +#| Toolchain binaries | +#|--------------------------------------------------------------------------------------| +RM = rm +CC = $(TOOL_PATH)arm-none-eabi-gcc +LN = $(TOOL_PATH)arm-none-eabi-gcc +OC = $(TOOL_PATH)arm-none-eabi-objcopy +OD = $(TOOL_PATH)arm-none-eabi-objdump +AS = $(TOOL_PATH)arm-none-eabi-gcc +SZ = $(TOOL_PATH)arm-none-eabi-size + + +#|--------------------------------------------------------------------------------------| +#| Filter project files +#|--------------------------------------------------------------------------------------| PROJ_ASRCS = $(filter %.s,$(foreach file,$(PROJ_FILES),$(notdir $(file)))) PROJ_CSRCS = $(filter %.c,$(foreach file,$(PROJ_FILES),$(notdir $(file)))) PROJ_CHDRS = $(filter %.h,$(foreach file,$(PROJ_FILES),$(notdir $(file)))) -PROJ_CCMPL = $(patsubst %.c,%.cpl,$(PROJ_CSRCS)) -PROJ_ACMPL = $(patsubst %.s,%.cpl,$(PROJ_ASRCS)) -#|---------------------------------------------------------------------------------------| -#| Set important path variables | -#|---------------------------------------------------------------------------------------| -VPATH = $(foreach path,$(sort $(foreach file,$(PROJ_FILES),$(dir $(file)))) $(subst \,/,$(OBJ_PATH)),$(path) :) -OBJ_PATH = ./obj -BIN_PATH = ./bin -INC_PATH = $(patsubst %,-I%,$(sort $(foreach file,$(filter %.h,$(PROJ_FILES)),$(dir $(file))))) -INC_PATH += -I. -LIB_PATH = -L./ +#|--------------------------------------------------------------------------------------| +#| Set important path variables | +#|--------------------------------------------------------------------------------------| +VPATH = $(foreach path,$(sort $(foreach file,$(PROJ_FILES),$(dir $(file)))) $(subst \,/,$(OBJ_PATH)),$(path) :) +OBJ_PATH = obj +BIN_PATH = bin +INC_PATH = $(patsubst %/,%,$(patsubst %,-I%,$(sort $(foreach file,$(filter %.h,$(PROJ_FILES)),$(dir $(file)))))) +INC_PATH += -I./lib +LIB_PATH = -#|---------------------------------------------------------------------------------------| -#| Options for compiler binaries | -#|---------------------------------------------------------------------------------------| -AFLAGS = -ahls -mapcs-32 -mcpu=arm7tdmi-s -mfpu=softfpa -CFLAGS = $(INC_PATH) -O1 -Wall -fmessage-length=0 -mcpu=arm7tdmi-s -g -CFLAGS += -Wa,-adhlns="$(OBJ_PATH)/$(subst .o,.lst,$@)" -LFLAGS = $(LIB_PATH) -T"memory.x" -g -mcpu=arm7tdmi-s -nostartfiles -OCFLAGS = -O ihex -ODFLAGS = -x -SZFLAGS = -B -d +#|--------------------------------------------------------------------------------------| +#| Options for toolchain binaries | +#|--------------------------------------------------------------------------------------| +STDFLAGS = -mcpu=arm7tdmi-s -mlong-calls -fno-strict-aliasing +STDFLAGS += -Wno-unused-but-set-variable +STDFLAGS += -fdata-sections -ffunction-sections -Wall -g3 +OPTFLAGS = -O1 +CFLAGS = $(STDFLAGS) $(OPTFLAGS) +CFLAGS += -DDEBUG -Dgcc +CFLAGS += $(INC_PATH) +AFLAGS = $(CFLAGS) +LFLAGS = $(STDFLAGS) $(OPTFLAGS) +LFLAGS += -Wl,-script="memory.x" -Wl,-Map=$(BIN_PATH)/$(PROJ_NAME).map +LFLAGS += -specs=nano.specs -Wl,--gc-sections $(LIB_PATH) +OFLAGS = -O srec +ODFLAGS = -x +SZFLAGS = -B -d +RMFLAGS = -f -#|---------------------------------------------------------------------------------------| -#| Define targets | -#|---------------------------------------------------------------------------------------| +#|--------------------------------------------------------------------------------------| +#| Specify library files | +#|--------------------------------------------------------------------------------------| +LIBS = + + +#|--------------------------------------------------------------------------------------| +#| Define targets | +#|--------------------------------------------------------------------------------------| AOBJS = $(patsubst %.s,%.o,$(PROJ_ASRCS)) COBJS = $(patsubst %.c,%.o,$(PROJ_CSRCS)) -#|---------------------------------------------------------------------------------------| -#| Make ALL | -#|---------------------------------------------------------------------------------------| -all : $(BIN_PATH)/$(PROJ_NAME).hex +#|--------------------------------------------------------------------------------------| +#| Make ALL | +#|--------------------------------------------------------------------------------------| +.PHONY: all +all: $(BIN_PATH)/$(PROJ_NAME).srec -$(BIN_PATH)/$(PROJ_NAME).hex : $(BIN_PATH)/$(PROJ_NAME).elf - @$(OC) $(OCFLAGS) $< $@ + +$(BIN_PATH)/$(PROJ_NAME).srec : $(BIN_PATH)/$(PROJ_NAME).elf + @$(OC) $< $(OFLAGS) $@ @$(OD) $(ODFLAGS) $< > $(BIN_PATH)/$(PROJ_NAME).map @echo +++ Summary of memory consumption: @$(SZ) $(SZFLAGS) $< @@ -137,30 +141,32 @@ $(BIN_PATH)/$(PROJ_NAME).hex : $(BIN_PATH)/$(PROJ_NAME).elf $(BIN_PATH)/$(PROJ_NAME).elf : $(AOBJS) $(COBJS) @echo +++ Linking [$(notdir $@)] - @$(LN) $(LFLAGS) -o $@ $(patsubst %.o,$(OBJ_PATH)/%.o,$(^F)) + @$(LN) $(LFLAGS) -o $@ $(patsubst %.o,$(OBJ_PATH)/%.o,$(^F)) $(LIBS) -#|---------------------------------------------------------------------------------------| -#| Compile and assemble | -#|---------------------------------------------------------------------------------------| +#|--------------------------------------------------------------------------------------| +#| Compile and assemble | +#|--------------------------------------------------------------------------------------| $(AOBJS): %.o: %.s $(PROJ_CHDRS) - @echo +++ Assembling [$@] - @$(AS) $(AFLAGS) $< -o $(OBJ_PATH)/$(@F) > $(subst .o,.lst,$(OBJ_PATH)/$(@F)) + @echo +++ Assembling [$(notdir $<)] + @$(AS) $(AFLAGS) -c $< -o $(OBJ_PATH)/$(@F) $(COBJS): %.o: %.c $(PROJ_CHDRS) - @echo +++ Compiling [$@] - @$(CC) $(CFLAGS) -c -o $(OBJ_PATH)/$(@F) $< + @echo +++ Compiling [$(notdir $<)] + @$(CC) $(CFLAGS) -c $< -o $(OBJ_PATH)/$(@F) -#|---------------------------------------------------------------------------------------| -#| Make CLEAN | -#|---------------------------------------------------------------------------------------| -clean : + +#|--------------------------------------------------------------------------------------| +#| Make CLEAN | +#|--------------------------------------------------------------------------------------| +.PHONY: clean +clean: @echo +++ Cleaning build environment - @cs-rm -f $(foreach file,$(AOBJS),$(OBJ_PATH)/$(file)) - @cs-rm -f $(foreach file,$(COBJS),$(OBJ_PATH)/$(file)) - @cs-rm -f $(patsubst %.o,%.lst,$(foreach file,$(AOBJS),$(OBJ_PATH)/$(file))) - @cs-rm -f $(patsubst %.o,%.lst,$(foreach file,$(COBJS),$(OBJ_PATH)/$(file))) - @cs-rm -f $(BIN_PATH)/$(PROJ_NAME).hex $(BIN_PATH)/$(PROJ_NAME).map $(BIN_PATH)/$(PROJ_NAME).elf + @$(RM) $(RMFLAGS) $(foreach file,$(AOBJS),$(OBJ_PATH)/$(file)) + @$(RM) $(RMFLAGS) $(foreach file,$(COBJS),$(OBJ_PATH)/$(file)) + @$(RM) $(RMFLAGS) $(patsubst %.o,%.lst,$(foreach file,$(COBJS),$(OBJ_PATH)/$(file))) + @$(RM) $(RMFLAGS) $(BIN_PATH)/$(PROJ_NAME).elf $(BIN_PATH)/$(PROJ_NAME).map + @$(RM) $(RMFLAGS) $(BIN_PATH)/$(PROJ_NAME).srec @echo +++ Clean complete - + diff --git a/Target/Demo/ARM7_LPC2000_Olimex_LPC_L2294_GCC/Prog/bin/demoprog_olimex_lpc_l2294_20mhz.elf b/Target/Demo/ARM7_LPC2000_Olimex_LPC_L2294_GCC/Prog/bin/demoprog_olimex_lpc_l2294_20mhz.elf index 57fff7e95f6854d144cbbb5bff3e65ce9a4f09ce..11c5f00bf0c92666a9c02df7688246a955c47563 100644 GIT binary patch literal 55032 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 literal 21478 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 SIf!6BQ|Kj+CZY~Q8uouNZ(C;o diff --git a/Target/Demo/ARM7_LPC2000_Olimex_LPC_L2294_GCC/Prog/bin/demoprog_olimex_lpc_l2294_20mhz.map b/Target/Demo/ARM7_LPC2000_Olimex_LPC_L2294_GCC/Prog/bin/demoprog_olimex_lpc_l2294_20mhz.map index d5e2a729..1fffcc76 100644 --- a/Target/Demo/ARM7_LPC2000_Olimex_LPC_L2294_GCC/Prog/bin/demoprog_olimex_lpc_l2294_20mhz.map +++ b/Target/Demo/ARM7_LPC2000_Olimex_LPC_L2294_GCC/Prog/bin/demoprog_olimex_lpc_l2294_20mhz.map @@ -1,134 +1,232 @@ - -bin/demoprog_olimex_lpc_l2294_20mhz.elf: file format elf32-littlearm -bin/demoprog_olimex_lpc_l2294_20mhz.elf -architecture: armv4t, flags 0x00000112: -EXEC_P, HAS_SYMS, D_PAGED -start address 0x00002000 - -Program Header: - LOAD off 0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**15 - filesz 0x00002efc memsz 0x00002efc flags r-x - LOAD off 0x00008200 vaddr 0x40000200 paddr 0x00002efc align 2**15 - filesz 0x00000000 memsz 0x00000064 flags rw- -private flags = 5000202: [Version5 EABI] [soft-float ABI] [has entry point] - -Sections: -Idx Name Size VMA LMA File off Algn - 0 .text 00000efc 00002000 00002000 00002000 2**2 - CONTENTS, ALLOC, LOAD, READONLY, CODE - 1 .bss 00000064 40000200 00002efc 00008200 2**2 - ALLOC - 2 .ARM.attributes 0000002e 00000000 00000000 00002efc 2**0 - CONTENTS, READONLY - 3 .comment 00000030 00000000 00000000 00002f2a 2**0 - CONTENTS, READONLY - 4 .debug_info 0000059d 00000000 00000000 00002f5a 2**0 - CONTENTS, READONLY, DEBUGGING - 5 .debug_abbrev 000003bd 00000000 00000000 000034f7 2**0 - CONTENTS, READONLY, DEBUGGING - 6 .debug_aranges 000000c0 00000000 00000000 000038b4 2**0 - CONTENTS, READONLY, DEBUGGING - 7 .debug_line 0000027e 00000000 00000000 00003974 2**0 - CONTENTS, READONLY, DEBUGGING - 8 .debug_str 000003bc 00000000 00000000 00003bf2 2**0 - CONTENTS, READONLY, DEBUGGING - 9 .debug_frame 000003c4 00000000 00000000 00003fb0 2**2 - CONTENTS, READONLY, DEBUGGING -SYMBOL TABLE: -00002000 l d .text 00000000 .text -40000200 l d .bss 00000000 .bss -00000000 l d .ARM.attributes 00000000 .ARM.attributes -00000000 l d .comment 00000000 .comment -00000000 l d .debug_info 00000000 .debug_info -00000000 l d .debug_abbrev 00000000 .debug_abbrev -00000000 l d .debug_aranges 00000000 .debug_aranges -00000000 l d .debug_line 00000000 .debug_line -00000000 l d .debug_str 00000000 .debug_str -00000000 l d .debug_frame 00000000 .debug_frame -00000000 l df *ABS* 00000000 ./obj/cstart.o -00000100 l *ABS* 00000000 UND_STACK_SIZE -00000100 l *ABS* 00000000 ABT_STACK_SIZE -00000100 l *ABS* 00000000 FIQ_STACK_SIZE -00000100 l *ABS* 00000000 IRQ_STACK_SIZE -00000100 l *ABS* 00000000 SVC_STACK_SIZE -00000010 l *ABS* 00000000 MODE_USR -00000011 l *ABS* 00000000 MODE_FIQ -00000012 l *ABS* 00000000 MODE_IRQ -00000013 l *ABS* 00000000 MODE_SVC -00000017 l *ABS* 00000000 MODE_ABT -0000001b l *ABS* 00000000 MODE_UND -0000001f l *ABS* 00000000 MODE_SYS -00000080 l *ABS* 00000000 I_BIT -00000040 l *ABS* 00000000 F_BIT -00002000 l .text 00000000 _vectors -00002020 l .text 00000000 Reset_Addr -00002024 l .text 00000000 Undef_Addr -00002028 l .text 00000000 SWI_Addr -0000202c l .text 00000000 PAbt_Addr -00002030 l .text 00000000 DAbt_Addr -0000203c l .text 00000000 FIQ_Addr -00002038 l .text 00000000 IRQ_Addr -00000000 l df *ABS* 00000000 vectors.c -00000000 l df *ABS* 00000000 main.c -0000217c l F .text 00000214 Init -00000000 l df *ABS* 00000000 boot.c -00002424 l F .text 000000b8 BootComUartInit -00002824 l F .text 00000090 BootComCanInit -000024dc l F .text 0000014c BootComUartCheckActivationRequest -000028b4 l F .text 000000a8 BootComCanCheckActivationRequest -00002628 l F .text 00000060 UartReceiveByte -40000200 l .bss 00000000 xcpCtoRxInProgress.4107 -40000204 l .bss 00000000 xcpCtoReqPacket.4105 -40000248 l .bss 00000000 xcpCtoRxStartTime.4108 -4000024c l .bss 00000000 xcpCtoRxLength.4106 -00002ed8 l O .text 00000024 canTiming -00002688 l F .text 0000019c CanGetSpeedConfig -00000000 l df *ABS* 00000000 irq.c -40000250 l .bss 00000000 oldInterruptStatus -40000254 l .bss 00000000 interruptNesting -0000295c l F .text 00000028 IrqGetCPSR -00002984 l F .text 00000024 IrqSetCPSR -00000000 l df *ABS* 00000000 led.c -40000258 l .bss 00000000 timer_counter_last.4086 -4000025c l .bss 00000000 led_toggle_state.4085 -00000000 l df *ABS* 00000000 timer.c -40000260 l .bss 00000000 millisecond_counter -00000000 l df *ABS* 00000000 _divsi3.o -00002ca0 l .text 00000000 .divsi3_skip_div0_test -00000000 l df *ABS* 00000000 _dvmd_tls.o -00000000 l df *ABS* 00000000 memcpy-stub.c -00000000 l df *ABS* 00000000 -00002c1c g F .text 0000002c TimerUpdate -000029a8 g F .text 00000030 IrqInterruptEnable -000020d8 g F .text 00000044 TIMER0_ISR -00002efc g .text 00000000 _etext -00002de4 g F .text 000000f0 memcpy -40000200 g .bss 00000000 _bss_start -00002000 g .text 00000000 _startup -000023c8 g F .text 0000005c BootActivate -40000264 g .bss 00000000 _bss_end -00002040 g .text 00000000 Reset_Handler -00002ab4 g F .text 0000003c LedInit -00002c98 g F .text 00000000 .hidden __aeabi_idiv -00002a44 g F .text 00000070 IrqInterruptRestore -00002de0 w F .text 00000004 .hidden __aeabi_ldiv0 -0000213c g F .text 00000040 main -40003edc g *ABS* 00000000 _stack_end -00002c98 g F .text 00000128 .hidden __divsi3 -00002c48 g F .text 0000002c TimerSet -00002390 g F .text 0000001c BootComInit -00002128 g F .text 00000008 FIQ_ISR -40000200 g .text 00000000 _data -00002af0 g F .text 000000a8 LedToggle -40000200 g .text 00000000 _edata -40000264 g .bss 00000000 _end -00002130 g F .text 0000000c UNDEF_ISR -0000211c g F .text 0000000c SWI_ISR -000029d8 g F .text 0000006c IrqInterruptDisable -000023ac g F .text 0000001c BootComCheckActivationRequest -00002de0 w F .text 00000004 .hidden __aeabi_idiv0 -00002c74 g F .text 00000024 TimerGet -00002dc0 g F .text 00000020 .hidden __aeabi_idivmod -00002b98 g F .text 00000084 TimerInit - - + +bin/demoprog_olimex_lpc_l2294_20mhz.elf: file format elf32-littlearm +bin/demoprog_olimex_lpc_l2294_20mhz.elf +architecture: armv4t, flags 0x00000112: +EXEC_P, HAS_SYMS, D_PAGED +start address 0x00002000 + +Program Header: + LOAD off 0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**16 + filesz 0x000028b4 memsz 0x000028b4 flags r-x + LOAD off 0x00010200 vaddr 0x40000200 paddr 0x000028b4 align 2**16 + filesz 0x00000000 memsz 0x00000041 flags rw- + LOAD off 0x00010241 vaddr 0x40000241 paddr 0x000028b4 align 2**16 + filesz 0x00000000 memsz 0x00000001 flags rw- + LOAD off 0x00010242 vaddr 0x40000242 paddr 0x000028b4 align 2**16 + filesz 0x00000000 memsz 0x00000001 flags rw- + LOAD off 0x00010244 vaddr 0x40000244 paddr 0x000028b4 align 2**16 + filesz 0x00000000 memsz 0x00000004 flags rw- + LOAD off 0x00010248 vaddr 0x40000248 paddr 0x000028b4 align 2**16 + filesz 0x00000000 memsz 0x00000004 flags rw- + LOAD off 0x0001024c vaddr 0x4000024c paddr 0x000028b4 align 2**16 + filesz 0x00000000 memsz 0x00000001 flags rw- + LOAD off 0x00010250 vaddr 0x40000250 paddr 0x000028b4 align 2**16 + filesz 0x00000000 memsz 0x00000004 flags rw- +private flags = 5000200: [Version5 EABI] [soft-float ABI] + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .text 0000024c 00002000 00002000 00002000 2**2 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 1 .init 0000000c 0000224c 0000224c 0000224c 2**2 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .fini 0000000c 00002258 00002258 00002258 2**2 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 3 .text.IrqInterruptEnable 00000010 00002264 00002264 00002264 2**2 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 4 .text.BootComInit 00000140 00002274 00002274 00002274 2**2 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 5 .text.BootActivate 00000034 000023b4 000023b4 000023b4 2**2 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 6 .text.BootComCheckActivationRequest 000001bc 000023e8 000023e8 000023e8 2**2 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 7 .text.TIMER0_ISR 00000038 000025a4 000025a4 000025a4 2**2 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 8 .text.SWI_ISR 00000004 000025dc 000025dc 000025dc 2**2 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 9 .text.FIQ_ISR 00000004 000025e0 000025e0 000025e0 2**2 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 10 .text.UNDEF_ISR 00000004 000025e4 000025e4 000025e4 2**2 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 11 .text.main 00000188 000025e8 000025e8 000025e8 2**2 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 12 .text.LedInit 00000020 00002770 00002770 00002770 2**2 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 13 .text.LedToggle 00000088 00002790 00002790 00002790 2**2 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 14 .text.TimerInit 00000058 00002818 00002818 00002818 2**2 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 15 .text.TimerUpdate 00000018 00002870 00002870 00002870 2**2 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 16 .text.TimerGet 00000010 00002888 00002888 00002888 2**2 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 17 .text.memcpy 0000001c 00002898 00002898 00002898 2**2 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 18 .bss.xcpCtoReqPacket.4213 00000041 40000200 000028b4 00010200 2**2 + ALLOC + 19 .bss.xcpCtoRxLength.4214 00000001 40000241 000028b4 00010241 2**0 + ALLOC + 20 .bss.xcpCtoRxInProgress.4215 00000001 40000242 000028b4 00010242 2**0 + ALLOC + 21 .bss.xcpCtoRxStartTime.4216 00000004 40000244 000028b4 00010244 2**2 + ALLOC + 22 .bss.timer_counter_last.4194 00000004 40000248 000028b4 00010248 2**2 + ALLOC + 23 .bss.led_toggle_state.4193 00000001 4000024c 000028b4 0001024c 2**0 + ALLOC + 24 .bss.millisecond_counter 00000004 40000250 000028b4 00010250 2**2 + ALLOC + 25 .ARM.attributes 0000002c 00000000 00000000 000028b4 2**0 + CONTENTS, READONLY + 26 .comment 0000006e 00000000 00000000 000028e0 2**0 + CONTENTS, READONLY + 27 .debug_line 0000053a 00000000 00000000 0000294e 2**0 + CONTENTS, READONLY, DEBUGGING + 28 .debug_info 00000850 00000000 00000000 00002e88 2**0 + CONTENTS, READONLY, DEBUGGING + 29 .debug_abbrev 0000052f 00000000 00000000 000036d8 2**0 + CONTENTS, READONLY, DEBUGGING + 30 .debug_aranges 00000138 00000000 00000000 00003c08 2**3 + CONTENTS, READONLY, DEBUGGING + 31 .debug_loc 000001c5 00000000 00000000 00003d40 2**0 + CONTENTS, READONLY, DEBUGGING + 32 .debug_ranges 00000100 00000000 00000000 00003f05 2**0 + CONTENTS, READONLY, DEBUGGING + 33 .debug_macro 00001361 00000000 00000000 00004005 2**0 + CONTENTS, READONLY, DEBUGGING + 34 .debug_str 000068c7 00000000 00000000 00005366 2**0 + CONTENTS, READONLY, DEBUGGING + 35 .debug_frame 0000020c 00000000 00000000 0000bc30 2**2 + CONTENTS, READONLY, DEBUGGING +SYMBOL TABLE: +00002000 l d .text 00000000 .text +0000224c l d .init 00000000 .init +00002258 l d .fini 00000000 .fini +00002264 l d .text.IrqInterruptEnable 00000000 .text.IrqInterruptEnable +00002274 l d .text.BootComInit 00000000 .text.BootComInit +000023b4 l d .text.BootActivate 00000000 .text.BootActivate +000023e8 l d .text.BootComCheckActivationRequest 00000000 .text.BootComCheckActivationRequest +000025a4 l d .text.TIMER0_ISR 00000000 .text.TIMER0_ISR +000025dc l d .text.SWI_ISR 00000000 .text.SWI_ISR +000025e0 l d .text.FIQ_ISR 00000000 .text.FIQ_ISR +000025e4 l d .text.UNDEF_ISR 00000000 .text.UNDEF_ISR +000025e8 l d .text.main 00000000 .text.main +00002770 l d .text.LedInit 00000000 .text.LedInit +00002790 l d .text.LedToggle 00000000 .text.LedToggle +00002818 l d .text.TimerInit 00000000 .text.TimerInit +00002870 l d .text.TimerUpdate 00000000 .text.TimerUpdate +00002888 l d .text.TimerGet 00000000 .text.TimerGet +00002898 l d .text.memcpy 00000000 .text.memcpy +40000200 l d .bss.xcpCtoReqPacket.4213 00000000 .bss.xcpCtoReqPacket.4213 +40000241 l d .bss.xcpCtoRxLength.4214 00000000 .bss.xcpCtoRxLength.4214 +40000242 l d .bss.xcpCtoRxInProgress.4215 00000000 .bss.xcpCtoRxInProgress.4215 +40000244 l d .bss.xcpCtoRxStartTime.4216 00000000 .bss.xcpCtoRxStartTime.4216 +40000248 l d .bss.timer_counter_last.4194 00000000 .bss.timer_counter_last.4194 +4000024c l d .bss.led_toggle_state.4193 00000000 .bss.led_toggle_state.4193 +40000250 l d .bss.millisecond_counter 00000000 .bss.millisecond_counter +00000000 l d .ARM.attributes 00000000 .ARM.attributes +00000000 l d .comment 00000000 .comment +00000000 l d .debug_line 00000000 .debug_line +00000000 l d .debug_info 00000000 .debug_info +00000000 l d .debug_abbrev 00000000 .debug_abbrev +00000000 l d .debug_aranges 00000000 .debug_aranges +00000000 l d .debug_loc 00000000 .debug_loc +00000000 l d .debug_ranges 00000000 .debug_ranges +00000000 l d .debug_macro 00000000 .debug_macro +00000000 l d .debug_str 00000000 .debug_str +00000000 l d .debug_frame 00000000 .debug_frame +00000000 l df *ABS* 00000000 obj/cstart.o +00000100 l *ABS* 00000000 UND_STACK_SIZE +00000100 l *ABS* 00000000 ABT_STACK_SIZE +00000100 l *ABS* 00000000 FIQ_STACK_SIZE +00000100 l *ABS* 00000000 IRQ_STACK_SIZE +00000100 l *ABS* 00000000 SVC_STACK_SIZE +00000010 l *ABS* 00000000 MODE_USR +00000011 l *ABS* 00000000 MODE_FIQ +00000012 l *ABS* 00000000 MODE_IRQ +00000013 l *ABS* 00000000 MODE_SVC +00000017 l *ABS* 00000000 MODE_ABT +0000001b l *ABS* 00000000 MODE_UND +0000001f l *ABS* 00000000 MODE_SYS +00000080 l *ABS* 00000000 I_BIT +00000040 l *ABS* 00000000 F_BIT +00002000 l .text 00000000 _vectors +00002020 l .text 00000000 Reset_Addr +00002024 l .text 00000000 Undef_Addr +00002028 l .text 00000000 SWI_Addr +0000202c l .text 00000000 PAbt_Addr +00002030 l .text 00000000 DAbt_Addr +0000203c l .text 00000000 FIQ_Addr +00002038 l .text 00000000 IRQ_Addr +00000000 l df *ABS* 00000000 _divsi3.o +000020e0 l .text 00000000 .divsi3_skip_div0_test +00000000 l df *ABS* 00000000 _dvmd_tls.o +00000000 l df *ABS* 00000000 main.c +00000000 l df *ABS* 00000000 boot.c +40000200 l O .bss.xcpCtoReqPacket.4213 00000041 xcpCtoReqPacket.4213 +40000241 l O .bss.xcpCtoRxLength.4214 00000001 xcpCtoRxLength.4214 +40000242 l O .bss.xcpCtoRxInProgress.4215 00000001 xcpCtoRxInProgress.4215 +40000244 l O .bss.xcpCtoRxStartTime.4216 00000004 xcpCtoRxStartTime.4216 +00002228 l O .text 00000024 canTiming +00000000 l df *ABS* 00000000 /opt/gcc-arm-none-eabi-5_4-2016q3/bin/../lib/gcc/arm-none-eabi/5.4.1/crti.o +00000000 l df *ABS* 00000000 irq.c +00000000 l df *ABS* 00000000 vectors.c +00000000 l df *ABS* 00000000 led.c +40000248 l O .bss.timer_counter_last.4194 00000004 timer_counter_last.4194 +4000024c l O .bss.led_toggle_state.4193 00000001 led_toggle_state.4193 +00000000 l df *ABS* 00000000 timer.c +40000250 l O .bss.millisecond_counter 00000004 millisecond_counter +00000000 l df *ABS* 00000000 memcpy-stub.c +00000000 l df *ABS* 00000000 +00000000 l *UND* 00000000 __bss_start__ +00000000 l *UND* 00000000 __libc_fini_array +00000000 l *UND* 00000000 __sf_fake_stderr +00000000 l *UND* 00000000 __deregister_frame_info +00000000 l *UND* 00000000 __bss_end__ +00000000 l *UND* 00000000 __call_exitprocs +00000000 l *UND* 00000000 software_init_hook +00000000 l *UND* 00000000 __sf_fake_stdin +00000000 l *UND* 00000000 __init_array_end +00000000 l *UND* 00000000 hardware_init_hook +00000000 l *UND* 00000000 atexit +00000000 l *UND* 00000000 __preinit_array_end +00000000 l *UND* 00000000 __stack +00000000 l *UND* 00000000 __sf_fake_stdout +00000000 l *UND* 00000000 __init_array_start +00000000 l *UND* 00000000 _exit +00000000 l *UND* 00000000 _Jv_RegisterClasses +00000000 l *UND* 00000000 __preinit_array_start +00000000 l *UND* 00000000 __register_frame_info +00002870 g F .text.TimerUpdate 00000018 TimerUpdate +00002264 g F .text.IrqInterruptEnable 00000010 IrqInterruptEnable +000025a4 g F .text.TIMER0_ISR 00000038 TIMER0_ISR +0000224c g .text 00000000 _etext +00002898 g F .text.memcpy 0000001c memcpy +40000200 g .text.memcpy 00000000 _bss_start +00002000 g .text 00000000 _startup +0000224c g F .init 00000000 _init +000023b4 g F .text.BootActivate 00000034 BootActivate +40000200 g .text.memcpy 00000000 _bss_end +00002040 g .text 00000000 Reset_Handler +00002770 g F .text.LedInit 00000020 LedInit +000020d8 g F .text 00000000 .hidden __aeabi_idiv +00002220 w F .text 00000004 .hidden __aeabi_ldiv0 +000025e8 g F .text.main 00000188 main +40003edc g *ABS* 00000000 _stack_end +000020d8 g F .text 00000128 .hidden __divsi3 +00002274 g F .text.BootComInit 00000140 BootComInit +000025e0 g F .text.FIQ_ISR 00000004 FIQ_ISR +00002258 g F .fini 00000000 _fini +40000200 g .text.memcpy 00000000 _data +00002790 g F .text.LedToggle 00000088 LedToggle +40000200 g .text.memcpy 00000000 _edata +40000200 g .text.memcpy 00000000 _end +000025e4 g F .text.UNDEF_ISR 00000004 UNDEF_ISR +000025dc g F .text.SWI_ISR 00000004 SWI_ISR +000023e8 g F .text.BootComCheckActivationRequest 000001bc BootComCheckActivationRequest +00002220 w F .text 00000004 .hidden __aeabi_idiv0 +00002888 g F .text.TimerGet 00000010 TimerGet +00002200 g F .text 00000020 .hidden __aeabi_idivmod +00002818 g F .text.TimerInit 00000058 TimerInit + + diff --git a/Target/Demo/ARM7_LPC2000_Olimex_LPC_L2294_GCC/Prog/bin/demoprog_olimex_lpc_l2294_20mhz.srec b/Target/Demo/ARM7_LPC2000_Olimex_LPC_L2294_GCC/Prog/bin/demoprog_olimex_lpc_l2294_20mhz.srec new file mode 100755 index 00000000..736d7721 --- /dev/null +++ b/Target/Demo/ARM7_LPC2000_Olimex_LPC_L2294_GCC/Prog/bin/demoprog_olimex_lpc_l2294_20mhz.srec @@ -0,0 +1,148 @@ +S02B000062696E2F64656D6F70726F675F6F6C696D65785F6C70635F6C323239345F32306D687A2E73726563FD +S113200018F09FE518F09FE518F09FE518F09FE59C +S113201018F09FE50000A0E1F0FF1FE518F09FE530 +S113202040200000E4250000DC250000E425000039 +S1132030E42500000000000000000000E02500008E +S113204078009FE5DBF021E300D0A0E1010C40E241 +S1132050D7F021E300D0A0E1010C40E2D1F021E36C +S113206000D0A0E1010C40E2D2F021E300D0A0E1D5 +S1132070010C40E2D3F021E300D0A0E1010C40E2E6 +S1132080DFF021E300D0A0E134109FE534209FE588 +S113209034309FE5030052E104009134040082349B +S11320A0FBFFFF3A0000A0E320109FE520209FE5FE +S11320B0020051E104008134FCFFFF3A490100EAC7 +S11320C0DC3E00404C2200000002004000020040C0 +S11320D00002004000020040000051E34300000AF7 +S11320E001C020E000106142012051E22700000AF3 +S11320F00030B0E100306042010053E12600009A54 +S1132100020011E12800000A0E0211E38111A0016E +S11321100820A0030120A013010251E30300513160 +S11321200112A0310222A031FAFFFF3A020151E369 +S1132130030051318110A0318220A031FAFFFF3A0F +S11321400000A0E3010053E101304320020080219C +S1132150A10053E1A1304320A2008021210153E1D9 +S11321602131432022018021A10153E1A1314320E7 +S1132170A2018021000053E32222B0112112A011F8 +S1132180EFFFFF1A00005CE3000060421EFF2FE136 +S113219000003CE1000060421EFF2FE10000A0337C +S11321A0CC0FA001010080031EFF2FE1010851E3C1 +S11321B02118A0211020A0230020A033010C51E3FA +S11321C02114A02108208222100051E32112A02111 +S11321D004208222040051E303208282A120829001 +S11321E000005CE33302A0E1000060421EFF2FE127 +S11321F0000050E30201E0C30201A0B3070000EABB +S1132200000051E3F9FFFF0A03402DE9B3FFFFEBA0 +S11322100640BDE8920003E0031041E01EFF2FE1F9 +S11322201EFF2FE10102040805020602060307034C +S11322300803090309040A040B040C040C050D0526 +S10F22400E050F050F061006100710080D +S10F224C0DC0A0E1F8DF2DE904B04CE265 +S10F22580DC0A0E1F8DF2DE904B04CE259 +S113226400300FE18030C3E303F029E11EFF2FE1C6 +S1132274F84F2DE914219FE5003092E5053083E3FE +S1132284003082E508319FE50020A0E30420C3E583 +S11322940820C3E51420C3E57F10E0E30C10C3E574 +S11322A44110A0E30010C3E50420C3E50310A0E338 +S11322B40C10C3E50710A0E30810C3E50210A0E363 +S11322C4033883E20010C3E5023983E20110A0E37A +S11322D4001083E5102083E5082083E5B4509FE5CE +S11322E4249085E2B0809FE5B0B09FE5B0A09FE55F +S11322F40060D5E50170D5E5073086E0013083E25E +S1132304834263E0044183E00441A0E10410A0E1BA +S113231490009FE50FE0A0E118FF2FE1000051E3D6 +S11323241200001A0410A0E178009FE50FE0A0E178 +S11323341BFF2FE1013040E20338A0E123085AE1F6 +S11323440A00003A0038A0E12338A0E1013043E256 +S1132354017047E2016046E20668A0E1077A86E17B +S1132364037087E140309FE5147083E5020000EABE +S1132374025085E2090055E1DCFFFF1A0020A0E3C6 +S113238424309FE5002083E5F84FBDE81EFF2FE1CC +S113239400C002E000C000E0282200000022000087 +S11323A4D8200000FF03000060EA0000004004E0BD +S11323B40E32A0E3012BA0E3042083E50320A0E371 +S11323C40020C3E55520E0E30820C3E55510A0E34D +S11323D40810C3E50820C3E50020A0E30820C3E5F2 +S10723E41EFF2FE1C4 +S11323E810402DE98C319FE50030D3E5000053E31C +S11323F81600001A80319FE51430D3E5010013E379 +S11324083500000A70319FE50030D3E5FF3003E260 +S113241868219FE50030C2E5000053E32E00000A5E +S11324285C319FE50FE0A0E113FF2FE154319FE5F4 +S1132438000083E50120A0E338319FE50020C3E5CF +S11324480020A0E340319FE50020C3E5220000EA14 +S113245824319FE51430D3E5010013E33A00000A60 +S113246824119FE50030D1E50C219FE500C0D2E599 +S113247808219FE5030082E001C0C0E5013083E242 +S1132488FF3003E20030C1E50020D2E5030052E149 +S11324981100001A0020A0E3D8309FE50020C3E50E +S11324A8D8309FE50130D3E5FF0053E30A00001A52 +S11324B8C8309FE50230D3E5020053E10600001A54 +S11324C8C8309FE50FE0A0E113FF2FE1020000EA06 +S11324D80020A0E39C309FE50020C3E5B0309FE5D1 +S11324E81C3093E5010013E32000000AA0309FE5A7 +S11324F8242093E59C309FE5030052E11B00001A59 +S11325088C109FE5283091E5282091E50400A0E38C +S1132518040081E52224A0E1FF0012E30120A003C6 +S11325280020A013FF3003E2FF0053E30030A013A0 +S113253801300202000053E30C00000A4C309FE50E +S11325480FE0A0E113FF2FE1080000EA30309FE517 +S11325580FE0A0E113FF2FE128309FE5003093E559 +S1132568643083E2030050E1D8FFFF8ADAFFFFEA10 +S11325781040BDE81EFF2FE14202004000C000E009 +S11325880002004088280000440200404102004044 +S10F2598B4230000004004E067060000CB +S11325A404E04EE20F502DE90120A0E31C309FE526 +S11325B4002083E50020A0E30030E0E3CF2F03E50F +S11325C40C309FE50FE0A0E113FF2FE10F90FDE82D +S10B25D4004000E07028000043 +S10725DCFEFFFFEA11 +S10725E0FEFFFFEA0D +S10725E4FEFFFFEA09 +S11325E804E02DE50CD04DE20420A0E34C119FE556 +S11325F802008DE048319FE50FE0A0E113FF2FE1D1 +S11326080430DDE5832263E0023183E0033263E0D2 +S11326180333A0E1263A43E2163E43E224219FE530 +S1132628020053E11000009A04108DE20120A0E397 +S113263810019FE50130F1E583C263E00C3183E0CA +S1132648033263E00333A0E1263A43E2163E43E251 +S1132658000053E10500009A012082E2FF2002E213 +S1132668040052E3F2FFFF1A000000EA0020A0E38E +S11326788232A0E1023083E3FF3003E2C8209FE501 +S11326888430C2E55510E0E38C10C2E55530A0E370 +S11326988C30C2E50100A0E38000C2E58C10C2E5DD +S11326A88C30C2E50230A0E1B828D3E1010B12E373 +S11326B8FCFFFF0A90309FE50320A0E38020C3E5D8 +S11326C85520E0E38C20C3E55520A0E38C20C3E526 +S11326D80020A0E30020C3E50420A0E30420C3E510 +S11326E80220A0E30020C3E50120A0E3013C83E22B +S11326F80020C3E554309FE50FE0A0E113FF2FE16C +S11327084C309FE50FE0A0E113FF2FE144309FE533 +S11327180FE0A0E113FF2FE13C309FE50FE0A0E1BB +S113272813FF2FE134509FE534409FE50FE0A0E10B +S113273815FF2FE10FE0A0E114FF2FE1FAFFFFEAF4 +S11327482422000098280000A080020000C01FE096 +S1132758702700001828000064220000742200007A +S10B276890270000E8230000A3 +S113277014309FE5182093E5022582E3182083E5B1 +S11327800225A0E3142083E51EFF2FE1008002E070 +S113279010402DE96C309FE50FE0A0E113FF2FE11D +S11327A064309FE5003093E5003063E07D0F53E330 +S11327B01200003A54309FE50030D3E5000053E3A3 +S11327C00600001A0120A0E340309FE50020C3E585 +S11327D00225A0E338309FE51C2083E5050000EACC +S11327E00020A0E324309FE50020C3E50225A0E3F8 +S11327F01C309FE5142083E50C309FE5000083E541 +S11328001040BDE81EFF2FE1882800004802004068 +S10B28104C020040008002E0CC +S113281840309FE540209FE5182083E50320A0E38E +S1132828142083E50120A0E3042083E50030E0E3DD +S113283828209FE5FF2E03E52420A0E3FF2D03E5D0 +S11328481020A0E3EF2F03E50020A0E310309FE55C +S1132858002083E51EFF2FE1004000E05FEA00004E +S10B2868A42500005002004009 +S11328700C209FE5003092E5013083E2003082E5D0 +S10B28801EFF2FE1500200408D +S113288804309FE5000093E51EFF2FE1500200404D +S1132898013040E2022081E0020051E101C0D1147C +S10F28A801C0E315FBFFFF1A1EFF2FE127 +S9032000DC diff --git a/Target/Demo/ARM7_LPC2000_Olimex_LPC_L2294_GCC/Prog/bin/demoprog_olimex_lpc_l2294_20mhz.sx b/Target/Demo/ARM7_LPC2000_Olimex_LPC_L2294_GCC/Prog/bin/demoprog_olimex_lpc_l2294_20mhz.sx deleted file mode 100644 index df9b06a2..00000000 --- a/Target/Demo/ARM7_LPC2000_Olimex_LPC_L2294_GCC/Prog/bin/demoprog_olimex_lpc_l2294_20mhz.sx +++ /dev/null @@ -1,242 +0,0 @@ -S029000062696E2F64656D6F70726F675F6F6C696D65785F6C70635F6C323239345F32306D687A2E7378C1 -S113200018F09FE518F09FE518F09FE518F09FE59C -S113201018F09FE50000A0E1F0FF1FE518F09FE530 -S113202040200000302100001C210000302100006D -S11320303021000000000000000000002821000002 -S113204078009FE5DBF021E300D0A0E1010C40E241 -S1132050D7F021E300D0A0E1010C40E2D1F021E36C -S113206000D0A0E1010C40E2D2F021E300D0A0E1D5 -S1132070010C40E2D3F021E300D0A0E1010C40E2E6 -S1132080DFF021E300D0A0E134109FE534209FE588 -S113209034309FE5030052E104009134040082349B -S11320A0FBFFFF3A0000A0E320109FE520209FE5FE -S11320B0020051E104008134FCFFFF3A1E0000EAF3 -S11320C0DC3E0040FC2E0000000200400002004004 -S11320D0000200406402004004E04EE21F582DE973 -S11320E01CB08DE224309FE50120A0E3002083E5AD -S11320F01C309FE50020A0E3002083E514309FE519 -S11321000FE0A0E113FF2FE11CD04BE21F98FDE884 -S1132110004000E030F0FFFF1C2C000004B02DE56F -S113212000B08DE2FEFFFFEA04B04DE2FEFFFFEADD -S113213004B02DE500B08DE2FEFFFFEA00482DE972 -S113214004B08DE20C0000EB20309FE50FE0A0E12D -S113215013FF2FE118309FE50FE0A0E113FF2FE1FB -S113216010309FE50FE0A0E113FF2FE1F8FFFFEA35 -S113217090230000F02A0000AC23000000482DE961 -S113218004B08DE210D04DE2C8319FE510104BE24F -S11321900320A0E10430A0E30100A0E10210A0E1CB -S11321A00320A0E1B0319FE50FE0A0E113FF2FE190 -S11321B00330A0E306304BE506305BE5013043E233 -S11321C006304BE50030A0E305304BE51D0000EA86 -S11321D005205BE50B30E0E304104BE2022081E0D4 -S11321E0033082E00030D3E50320A0E10230A0E117 -S11321F08332A0E1033062E00331A0E1023083E0E6 -S11322000322A0E1022063E00233A0E10320A0E165 -S11322100230A0E10C300BE50C201BE53C319FE5BE -S1132220030052E10400009A0C201BE530319FE5C5 -S1132230030052E10000008A050000EA05305BE576 -S1132240013083E205304BE505305BE5030053E3E1 -S1132250DEFFFF9A0C319FE505205BE58222A0E1B9 -S1132260FF1002E206205BE5022081E1FF2002E28A -S1132270FF2002E20020C3E5EC309FE55520E0E3B7 -S11322800020C3E5E0309FE55520A0E30020C3E52E -S1132290D8309FE50120A0E30020C3E5C8309FE5C6 -S11322A05520E0E30020C3E5BC309FE55520A0E3C2 -S11322B00020C3E50000A0E1B4309FE5B030D3E1D5 -S11322C00338A0E12338A0E1013B03E2000053E31B -S11322D0F8FFFF0A94309FE50320A0E30020C3E544 -S11322E084309FE55520E0E30020C3E578309FE586 -S11322F05520A0E30020C3E578309FE50020A0E34B -S11323000020C3E570309FE50420A0E30020C3E56E -S113231060309FE50220A0E30020C3E55C309FE528 -S11323200120A0E30020C3E554309FE50FE0A0E1C5 -S113233013FF2FE14C309FE50FE0A0E113FF2FE1E5 -S113234044309FE50FE0A0E113FF2FE104D04BE2FE -S11323500048BDE81EFF2FE1D42E0000E42D00004C -S11323605F61020000E2040084C01FE08CC01FE033 -S113237080C01FE088C01FE000C01FE004C01FE051 -S113238000C11FE0B42A0000982B0000A829000017 -S113239000482DE904B08DE2210000EB200100EBA0 -S11323A004D04BE20048BDE81EFF2FE100482DE9B0 -S11323B004B08DE2480000EB3D0100EB04D04BE299 -S11323C00048BDE81EFF2FE104B02DE500B08DE20A -S11323D04E32A0E3012BA0E3002083E50E32A0E3FC -S11323E00320A0E30020C3E58E32A0E35520E0E300 -S11323F00020C3E58E32A0E35520A0E30020C3E50E -S11324008E32A0E35520E0E30020C3E58E32A0E342 -S11324100020A0E30020C3E500D04BE204B09DE41B -S11324201EFF2FE104B02DE500B08DE20CD04DE28B -S11324308C309FE588209FE5002092E5052082E30B -S1132440002083E57C309FE50020A0E30020C3E565 -S113245074309FE50020A0E30020C3E56C309FE5C5 -S11324600020A0E30020C3E564309FE57F20E0E383 -S11324700020C3E54130A0E308300BE554309FE56C -S113248008201BE5FF2002E20020C3E534309FE56D -S113249008201BE52224A0E1FF2002E20020C3E57E -S11324A02C309FE50320A0E30020C3E518309FE50E -S11324B00720A0E30020C3E500D04BE204B09DE474 -S11324C01EFF2FE100C002E004C000E008C000E0ED -S11324D014C000E00CC000E000C000E000482DE99A -S11324E004B08DE228319FE50030D3E5000053E3CA -S11324F01500001A1C019FE54A0000EB0030A0E122 -S1132500010053E33F00001A08319FE50030D3E592 -S1132510000053E33B00000AFC309FE50FE0A0E11C -S113252013FF2FE10020A0E1F0309FE5002083E5B8 -S1132530DC309FE50120A0E30020C3E5E0309FE507 -S11325400020A0E30020C3E52E0000EAD0309FE580 -S11325500030D3E5012083E2B8309FE5033082E008 -S11325600300A0E12F0000EB0030A0E1010053E3E1 -S11325701800001AA8309FE50030D3E5013083E24B -S1132580FF2003E298309FE50020C3E584309FE5F7 -S11325900020D3E588309FE50030D3E5030052E105 -S11325A01800001A68309FE50020A0E30020C3E56E -S11325B060309FE50130D3E5FF0053E31100001ABA -S11325C050309FE50230D3E5000053E30D00001ABC -S11325D07CFFFFEB0B0000EA3C309FE50FE0A0E13D -S11325E013FF2FE10020A0E130309FE5003093E598 -S11325F0643083E2030052E10200009A10309FE548 -S11326000020A0E30020C3E504D04BE20048BDE86D -S11326101EFF2FE10002004004020040742C000061 -S1132620480200404C02004004B02DE500B08DE2A9 -S11326300CD04DE208000BE540309FE50030D3E5B7 -S1132640FF3003E2013003E2000053E30600000A16 -S11326502C309FE50030D3E5FF2003E208301BE572 -S11326600020C3E50130A0E3000000EA0030A0E34D -S11326700300A0E100D04BE204B09DE41EFF2FE173 -S113268014C000E000C000E000482DE904B08DE271 -S113269010D04DE20030A0E114100BE5BE304BE148 -S11326A00030A0E305304BE5510000EABE305BE1A9 -S11326B005105BE558219FE58120D2E70210A0E1D7 -S11326C005005BE548C19FE50120A0E38000A0E18F -S11326D000008CE0022080E00020D2E5022081E0AE -S11326E0012082E2930202E028119FE528319FE550 -S11326F00100A0E10210A0E10FE0A0E113FF2FE12F -S11327000130A0E1000053E33600001ABE305BE163 -S113271005105BE5F8209FE58120D2E70210A0E1D7 -S113272005005BE5E8C09FE50120A0E38000A0E18F -S113273000008CE0022080E00020D2E5022081E04D -S1132740012082E2930202E0D0309FE5C4009FE5BD -S11327500210A0E10FE0A0E113FF2FE10030A0E19F -S1132760B8304BE1B8305BE1000053E31D00000AD0 -S1132770B8305BE1010B53E31A00008AB8305BE127 -S1132780013043E20320A0E114301BE5002083E57F -S113279014301BE5002093E505105BE570009FE510 -S11327A00130A0E38110A0E1011080E0033081E05A -S11327B00030D3E5013043E2031AA0E105005BE5F4 -S11327C04C309FE58030D3E7013043E20338A0E189 -S11327D0033081E1032082E114301BE5002083E50E -S11327E00130A0E3060000EA05305BE5013083E236 -S11327F005304BE505305BE5110053E3AAFFFF9A72 -S11328000030A0E30300A0E104D04BE20048BDE89F -S11328101EFF2FE1D82E000060EA0000C02D00004A -S1132820982C000000482DE904B08DE208D04DE258 -S113283068309FE50220A0E30020C3E560309FE5F7 -S11328400120A0E3002083E558309FE50020A0E3A9 -S1132850002083E550309FE50020A0E3002083E5BD -S113286008304BE27D0FA0E30310A0E185FFFFEBEE -S11328700030A0E1010053E30200001A2C309FE570 -S113288008201BE5002083E514309FE50020A0E329 -S1132890002083E504D04BE20048BDE81EFF2FE191 -S11328A000C003E0004004E0104004E0084004E0FD -S11328B0144004E000482DE904B08DE208D04DE254 -S11328C080309FE5003093E5013003E2000053E3DC -S11328D00000001A180000EA6C309FE5002093E520 -S11328E068309FE5030052E10000000A120000EA8C -S11328F05C309FE5003093E5FF3003E208304BE5A0 -S11329004C309FE5003093E52334A0E1FF3003E22F -S113291007304BE53C309FE50420A0E3002083E52D -S113292008305BE5FF0053E30300001A07305BE562 -S1132930000053E30000001AA2FEFFEB04D04BE2B8 -S11329400048BDE81EFF2FE11C4004E0244004E0E1 -S113295067060000284004E0044004E004B02DE5CC -S113296000B08DE20CD04DE200300FE108300BE5F1 -S113297008301BE50300A0E100D04BE204B09DE465 -S11329801EFF2FE104B02DE500B08DE20CD04DE226 -S113299008000BE508301BE503F029E100D04BE209 -S11329A004B09DE41EFF2FE100482DE904B08DE240 -S11329B008D04DE2E8FFFFEB08000BE508301BE50B -S11329C08030C3E30300A0E1EDFFFFEB04D04BE252 -S11329D00048BDE81EFF2FE100482DE904B08DE258 -S11329E008D04DE250309FE50030D3E5000053E3BA -S11329F00800001AD8FFFFEB08000BE508301BE5C0 -S1132A00803083E30300A0E1DDFFFFEB2C309FE582 -S1132A1008201BE5002083E51C309FE50030D3E54A -S1132A20013083E2FF2003E20C309FE50020C3E580 -S1132A3004D04BE20048BDE81EFF2FE154020040E1 -S1132A405002004000482DE904B08DE208D04DE268 -S1132A5054309FE50030D3E5013043E2FF2003E228 -S1132A6044309FE50020C3E53C309FE50030D3E5CA -S1132A70000053E30900001AB7FFFFEB08000BE561 -S1132A8008301BE58020C3E320309FE5003093E548 -S1132A90803003E2033082E10300A0E1B8FFFFEBE2 -S1132AA004D04BE20048BDE81EFF2FE15402004071 -S1132AB05002004004B02DE500B08DE224309FE5C3 -S1132AC020209FE5002092E5022582E3002083E593 -S1132AD014309FE50225A0E3002083E500D04BE2FB -S1132AE004B09DE41EFF2FE1188002E0148002E090 -S1132AF000482DE904B08DE208D04DE280309FE516 -S1132B000FE0A0E113FF2FE108000BE574309FE50F -S1132B10003093E508201BE5023063E07D0F53E3AA -S1132B200000002A130000EA5C309FE50030D3E582 -S1132B30000053E30600001A4C309FE50120A0E397 -S1132B400020C3E544309FE50225A0E3002083E58F -S1132B50050000EA30309FE50020A0E30020C3E533 -S1132B602C309FE50225A0E3002083E514309FE587 -S1132B7008201BE5002083E504D04BE20048BDE8B3 -S1132B801EFF2FE1742C0000580200405C0200403C -S1132B901C8002E0148002E000482DE904B08DE2BC -S1132BA054309FE554209FE5002083E550309FE595 -S1132BB00320A0E3002083E548309FE50120A0E343 -S1132BC0002083E540309FE540209FE5002083E519 -S1132BD03C309FE52420A0E3002083E534309FE5CA -S1132BE01020A0E3002083E50000A0E3150000EB23 -S1132BF004D04BE20048BDE81EFF2FE1184000E07E -S1132C005FEA0000144000E0044000E000F1FFFF30 -S1132C10D820000000F2FFFF10F0FFFF04B02DE504 -S1132C2000B08DE218309FE5003093E5012083E287 -S1132C300C309FE5002083E500D04BE204B09DE416 -S1132C401EFF2FE16002004004B02DE500B08DE2CC -S1132C500CD04DE208000BE510309FE508201BE581 -S1132C60002083E500D04BE204B09DE41EFF2FE179 -S1132C706002004004B02DE500B08DE210309FE505 -S1132C80003093E50300A0E100D04BE204B09DE4E2 -S1132C901EFF2FE160020040000051E34300000AE0 -S1132CA001C020E000106142012051E22700000A27 -S1132CB00030B0E100306042010053E12600009A88 -S1132CC0020011E12800000A0E0211E38111A001A3 -S1132CD00820A0030120A013010251E30300513195 -S1132CE00112A0310222A031FAFFFF3A020151E39E -S1132CF0030051318110A0318220A031FAFFFF3A44 -S1132D000000A0E3010053E10130432002008021D0 -S1132D10A10053E1A1304320A2008021210153E10D -S1132D202131432022018021A10153E1A13143201B -S1132D30A2018021000053E32222B0112112A0112C -S1132D40EFFFFF1A00005CE3000060421EFF2FE16A -S1132D5000003CE1000060421EFF2FE10000A033B0 -S1132D60CC0FA001010080031EFF2FE1010851E3F5 -S1132D702118A0211020A0230020A033010C51E32E -S1132D802114A02108208222100051E32112A02145 -S1132D9004208222040051E303208282A120829035 -S1132DA000005CE33302A0E1000060421EFF2FE15B -S1132DB0000050E30201E0C30201A0B3070000EAEF -S1132DC0000051E3F9FFFF0A03402DE9B3FFFFEBD5 -S1132DD00640BDE8920003E0031041E01EFF2FE12E -S1132DE01EFF2FE10F0052E3F0002DE92A00009AA4 -S1132DF0013080E1030013E33100001A106042E265 -S1132E002662A0E1065280E0105085E201C0A0E1F4 -S1132E100030A0E100409CE5004083E504409CE5CF -S1132E20044083E508409CE5084083E50C409CE5AC -S1132E30103083E2044003E5050053E110C08CE246 -S1132E40F3FFFF1A013086E20F7002E20332A0E1C1 -S1132E50030057E3031081E0033080E01A00009A76 -S1132E600150A0E10340A0E107C0A0E104C04CE28E -S1132E70046095E403005CE3046084E4FAFFFF8AE1 -S1132E8004C047E203C0CCE304C08CE20C3083E00E -S1132E900C1081E0032002E2000000EA0030A0E10F -S1132EA0000052E30400000A022081E001C0D1E4E2 -S1132EB0020051E101C0C3E4FBFFFF1AF000BDE8CA -S1132EC01EFF2FE10030A0E1F6FFFFEA0720A0E19A -S1132ED0F2FFFFEA010204080502060206030703E3 -S1132EE00803090309040A040B040C040C050D056A -S10F2EF00E050F050F0610061007100851 -S9032000DC diff --git a/Target/Demo/ARM7_LPC2000_Olimex_LPC_L2294_GCC/Prog/makefile b/Target/Demo/ARM7_LPC2000_Olimex_LPC_L2294_GCC/Prog/makefile index b30c516d..0ad106b3 100644 --- a/Target/Demo/ARM7_LPC2000_Olimex_LPC_L2294_GCC/Prog/makefile +++ b/Target/Demo/ARM7_LPC2000_Olimex_LPC_L2294_GCC/Prog/makefile @@ -1,11 +1,11 @@ #**************************************************************************************** -#| Description: Makefile for NXP LPC2000 using CodeSourcery GNU GCC compiler toolset +#| Description: Makefile for GNU ARM Embedded toolchain. #| File Name: makefile #| #|--------------------------------------------------------------------------------------- #| C O P Y R I G H T #|--------------------------------------------------------------------------------------- -#| Copyright (c) 2011 by Feaser http://www.feaser.com All rights reserved +#| Copyright (c) 2017 by Feaser http://www.feaser.com All rights reserved #| #|--------------------------------------------------------------------------------------- #| L I C E N S E @@ -25,89 +25,105 @@ #**************************************************************************************** SHELL = sh -#|---------------------------------------------------------------------------------------| -#| Configure project name | -#|---------------------------------------------------------------------------------------| +#|--------------------------------------------------------------------------------------| +#| Configure project name | +#|--------------------------------------------------------------------------------------| PROJ_NAME=demoprog_olimex_lpc_l2294_20mhz -#|---------------------------------------------------------------------------------------| -#| Speficy project source files | -#|---------------------------------------------------------------------------------------| -PROJ_FILES= \ -lpc2294.h \ -vectors.c \ -main.c \ -boot.c \ -boot.h \ -irq.c \ -irq.h \ -led.c \ -led.h \ -timer.c \ -timer.h \ -header.h \ -cstart.s +#|--------------------------------------------------------------------------------------| +#| Configure tool path | +#|--------------------------------------------------------------------------------------| +TOOL_PATH=/opt/gcc-arm-none-eabi-5_4-2016q3/bin/ -#|---------------------------------------------------------------------------------------| -#| Compiler binaries | -#|---------------------------------------------------------------------------------------| -CC = arm-none-eabi-gcc -LN = arm-none-eabi-gcc -OC = arm-none-eabi-objcopy -OD = arm-none-eabi-objdump -AS = arm-none-eabi-as -SZ = arm-none-eabi-size +#|--------------------------------------------------------------------------------------| +#| Collect project files | +#|--------------------------------------------------------------------------------------| +# Recursive wildcard function implementation. Example usages: +# $(call rwildcard, , *.c *.h) +# --> Returns all *.c and *.h files in the current directory and below +# $(call rwildcard, /lib/, *.c) +# --> Returns all *.c files in the /lib directory and below +rwildcard = $(strip $(foreach d,$(wildcard $1*),$(call rwildcard,$d/,$2) $(filter $(subst *,%,$2),$d))) + +# Collect all application files in the current directory and its subdirectories +PROJ_FILES = $(call rwildcard, , *.c *.h *.s) -#|---------------------------------------------------------------------------------------| -#| Extract file names | -#|---------------------------------------------------------------------------------------| +#|--------------------------------------------------------------------------------------| +#| Toolchain binaries | +#|--------------------------------------------------------------------------------------| +RM = rm +CC = $(TOOL_PATH)arm-none-eabi-gcc +LN = $(TOOL_PATH)arm-none-eabi-gcc +OC = $(TOOL_PATH)arm-none-eabi-objcopy +OD = $(TOOL_PATH)arm-none-eabi-objdump +AS = $(TOOL_PATH)arm-none-eabi-gcc +SZ = $(TOOL_PATH)arm-none-eabi-size + + +#|--------------------------------------------------------------------------------------| +#| Filter project files +#|--------------------------------------------------------------------------------------| PROJ_ASRCS = $(filter %.s,$(foreach file,$(PROJ_FILES),$(notdir $(file)))) PROJ_CSRCS = $(filter %.c,$(foreach file,$(PROJ_FILES),$(notdir $(file)))) PROJ_CHDRS = $(filter %.h,$(foreach file,$(PROJ_FILES),$(notdir $(file)))) -PROJ_CCMPL = $(patsubst %.c,%.cpl,$(PROJ_CSRCS)) -PROJ_ACMPL = $(patsubst %.s,%.cpl,$(PROJ_ASRCS)) -#|---------------------------------------------------------------------------------------| -#| Set important path variables | -#|---------------------------------------------------------------------------------------| -VPATH = $(foreach path,$(sort $(foreach file,$(PROJ_FILES),$(dir $(file)))) $(subst \,/,$(OBJ_PATH)),$(path) :) -OBJ_PATH = ./obj -BIN_PATH = ./bin -INC_PATH = $(patsubst %,-I%,$(sort $(foreach file,$(filter %.h,$(PROJ_FILES)),$(dir $(file))))) -INC_PATH += -I. -LIB_PATH = -L. +#|--------------------------------------------------------------------------------------| +#| Set important path variables | +#|--------------------------------------------------------------------------------------| +VPATH = $(foreach path,$(sort $(foreach file,$(PROJ_FILES),$(dir $(file)))) $(subst \,/,$(OBJ_PATH)),$(path) :) +OBJ_PATH = obj +BIN_PATH = bin +INC_PATH = $(patsubst %/,%,$(patsubst %,-I%,$(sort $(foreach file,$(filter %.h,$(PROJ_FILES)),$(dir $(file)))))) +INC_PATH += -I./lib +LIB_PATH = -#|---------------------------------------------------------------------------------------| -#| Options for compiler binaries | -#|---------------------------------------------------------------------------------------| -AFLAGS = -ahls -mapcs-32 -mcpu=arm7tdmi-s -mfpu=softfpa -CFLAGS = $(INC_PATH) -O0 -Wall -fmessage-length=0 -mcpu=arm7tdmi-s -g -mlong-calls -CFLAGS += -Wa,-adhlns="$(OBJ_PATH)/$(subst .o,.lst,$@)" -LFLAGS = $(LIB_PATH) -T"memory.x" -g -mcpu=arm7tdmi-s -nostartfiles -OCFLAGS = -O srec -ODFLAGS = -x -SZFLAGS = -B -d +#|--------------------------------------------------------------------------------------| +#| Options for toolchain binaries | +#|--------------------------------------------------------------------------------------| +STDFLAGS = -mcpu=arm7tdmi-s -mlong-calls -fno-strict-aliasing +STDFLAGS += -Wno-unused-but-set-variable +STDFLAGS += -fdata-sections -ffunction-sections -Wall -g3 +OPTFLAGS = -O1 +CFLAGS = $(STDFLAGS) $(OPTFLAGS) +CFLAGS += -DDEBUG -Dgcc +CFLAGS += $(INC_PATH) +AFLAGS = $(CFLAGS) +LFLAGS = $(STDFLAGS) $(OPTFLAGS) +LFLAGS += -Wl,-script="memory.x" -Wl,-Map=$(BIN_PATH)/$(PROJ_NAME).map +LFLAGS += -specs=nano.specs -Wl,--gc-sections $(LIB_PATH) +OFLAGS = -O srec +ODFLAGS = -x +SZFLAGS = -B -d +RMFLAGS = -f -#|---------------------------------------------------------------------------------------| -#| Define targets | -#|---------------------------------------------------------------------------------------| +#|--------------------------------------------------------------------------------------| +#| Specify library files | +#|--------------------------------------------------------------------------------------| +LIBS = + + +#|--------------------------------------------------------------------------------------| +#| Define targets | +#|--------------------------------------------------------------------------------------| AOBJS = $(patsubst %.s,%.o,$(PROJ_ASRCS)) COBJS = $(patsubst %.c,%.o,$(PROJ_CSRCS)) -#|---------------------------------------------------------------------------------------| -#| Make ALL | -#|---------------------------------------------------------------------------------------| -all : $(BIN_PATH)/$(PROJ_NAME).sx +#|--------------------------------------------------------------------------------------| +#| Make ALL | +#|--------------------------------------------------------------------------------------| +.PHONY: all +all: $(BIN_PATH)/$(PROJ_NAME).srec -$(BIN_PATH)/$(PROJ_NAME).sx : $(BIN_PATH)/$(PROJ_NAME).elf - @$(OC) $(OCFLAGS) $< $@ + +$(BIN_PATH)/$(PROJ_NAME).srec : $(BIN_PATH)/$(PROJ_NAME).elf + @$(OC) $< $(OFLAGS) $@ @$(OD) $(ODFLAGS) $< > $(BIN_PATH)/$(PROJ_NAME).map @echo +++ Summary of memory consumption: @$(SZ) $(SZFLAGS) $< @@ -115,30 +131,32 @@ $(BIN_PATH)/$(PROJ_NAME).sx : $(BIN_PATH)/$(PROJ_NAME).elf $(BIN_PATH)/$(PROJ_NAME).elf : $(AOBJS) $(COBJS) @echo +++ Linking [$(notdir $@)] - @$(LN) $(LFLAGS) -o $@ $(patsubst %.o,$(OBJ_PATH)/%.o,$(^F)) + @$(LN) $(LFLAGS) -o $@ $(patsubst %.o,$(OBJ_PATH)/%.o,$(^F)) $(LIBS) -#|---------------------------------------------------------------------------------------| -#| Compile and assemble | -#|---------------------------------------------------------------------------------------| +#|--------------------------------------------------------------------------------------| +#| Compile and assemble | +#|--------------------------------------------------------------------------------------| $(AOBJS): %.o: %.s $(PROJ_CHDRS) - @echo +++ Assembling [$@] - @$(AS) $(AFLAGS) $< -o $(OBJ_PATH)/$(@F) > $(subst .o,.lst,$(OBJ_PATH)/$(@F)) + @echo +++ Assembling [$(notdir $<)] + @$(AS) $(AFLAGS) -c $< -o $(OBJ_PATH)/$(@F) $(COBJS): %.o: %.c $(PROJ_CHDRS) - @echo +++ Compiling [$@] - @$(CC) $(CFLAGS) -c -o $(OBJ_PATH)/$(@F) $< + @echo +++ Compiling [$(notdir $<)] + @$(CC) $(CFLAGS) -c $< -o $(OBJ_PATH)/$(@F) -#|---------------------------------------------------------------------------------------| -#| Make CLEAN | -#|---------------------------------------------------------------------------------------| -clean : + +#|--------------------------------------------------------------------------------------| +#| Make CLEAN | +#|--------------------------------------------------------------------------------------| +.PHONY: clean +clean: @echo +++ Cleaning build environment - @cs-rm -f $(foreach file,$(AOBJS),$(OBJ_PATH)/$(file)) - @cs-rm -f $(foreach file,$(COBJS),$(OBJ_PATH)/$(file)) - @cs-rm -f $(patsubst %.o,%.lst,$(foreach file,$(AOBJS),$(OBJ_PATH)/$(file))) - @cs-rm -f $(patsubst %.o,%.lst,$(foreach file,$(COBJS),$(OBJ_PATH)/$(file))) - @cs-rm -f $(BIN_PATH)/$(PROJ_NAME).sx $(BIN_PATH)/$(PROJ_NAME).map $(BIN_PATH)/$(PROJ_NAME).elf + @$(RM) $(RMFLAGS) $(foreach file,$(AOBJS),$(OBJ_PATH)/$(file)) + @$(RM) $(RMFLAGS) $(foreach file,$(COBJS),$(OBJ_PATH)/$(file)) + @$(RM) $(RMFLAGS) $(patsubst %.o,%.lst,$(foreach file,$(COBJS),$(OBJ_PATH)/$(file))) + @$(RM) $(RMFLAGS) $(BIN_PATH)/$(PROJ_NAME).elf $(BIN_PATH)/$(PROJ_NAME).map + @$(RM) $(RMFLAGS) $(BIN_PATH)/$(PROJ_NAME).srec @echo +++ Clean complete - +