📄 makefile
字号:
#**************************************************************************
# *
# PROJECT : ARM port for uC/OS-II *
# *
# MODULE : MAKEFILE *
# *
# AUTHOR : Michael Anburaj *
# URL : http://geocities.com/michaelanburaj/ *
# EMAIL: michaelanburaj@hotmail.com *
# *
# SPONSORS : Thanks to Martin Li (mli00@yahoo.com) & Don Williams *
# (donw@clearblu.net) for sponsoring hardware. *
# *
# PROCESSOR : LPC2xxx (32 bit ARM7TDMI-S RISC core from Philips) *
# *
# TOOL-CHAIN : SDT 2.51 or ADS 1.2 *
# *
# DESCRIPTION : *
# Make file for Ex1 ARM_UCOS builds. Use Microsoft's nmake utility to *
# build using this file. *
# Command options: *
# nmake -- Make image *
# nmake clean -- Remove all object files *
# nmake clean_all -- Remove all object & binary files *
# *
#*************************************************************************/
#**************************************************************************
#* Build Configuration
#**************************************************************************
#### Image ####
# possible values: 0 (for RAM), 1 (for ROM)
IMAGE = 0
#### Tools ####
# possible values: 0 (for ADS), 1 (for SDT)
TOOLS = 1
#### Project name ####
IMAGENAME = ex1
#### Endian ####
# possible values: 0 (for Little), little endian only
ENDIAN = 0
#### Debug ####
# possible values: 0 (for disable), 1 (for enable)
DEBUG = 0
#### Task Mode ####
# Possible values: 0 (for arm), 1 (for thumb)
TASK = 1
#### Target Mode ####
# Possible values: 0 (for arm), 1 (for armthumb)
!if $(TASK)==1
TARGET = 1
!else
TARGET = 0
!endif
#### LPC variant ####
# Possible values: 04 to 06 (for LPC2104/5/6), 31 to 38 (for LPC2131/2/4/6/8)
LPCVAR = 38
#### ARM tools path ####
!if $(TOOLS)==0
TPATH = C:\Progra~1\ARM\ADSv1_2
!else
TPATH = C:\ARM251
!endif
#### ARM tool Definition ####
ARMCC = armcc
TCC = tcc
ARMASM = armasm
ARMLINK= armlink
FROMELF= fromelf
REMOVEFILE = del
#### Destination path Definition ####
OBJDIR=.
# **********************************************
# Directories
# **********************************************
ROOT = ..\..
UCOSROOT = $(ROOT)\..
AUP_COMMONROOT = $(UCOSROOT)\arm_ucos\common
AUP_LPCROOT = $(UCOSROOT)\arm_ucos\lpc2xxx
ARM_COMMONDIR = $(AUP_COMMONROOT)\arm
LINKDIR = $(AUP_LPCROOT)\bin\arm
# **********************************************
# Image file names and map file
# **********************************************
IMAGE_ELF_ROM = $(IMAGENAME)_rom.axf
IMAGE_HEX_ROM = $(IMAGENAME)_rom.hex
IMAGE_MAP_ROM = $(IMAGENAME)_rom.map
IMAGE_LST_ROM = $(IMAGENAME)_rom.lst
IMAGE_ELF_RAM = $(IMAGENAME)_ram.axf
IMAGE_HEX_RAM = $(IMAGENAME)_ram.hex
IMAGE_SREC_RAM= $(IMAGENAME)_ram.rec
IMAGE_MAP_RAM = $(IMAGENAME)_ram.map
IMAGE_LST_RAM = $(IMAGENAME)_ram.lst
# **********************************************
# Compiler/Assembler and linker options
# **********************************************
!if $(DEBUG)==1
DEBUGFLAGS_C = -g -O2 -DUNDEF_EXCEP_APP
DEBUGFLAGS_A = -g -pd "UNDEF_EXCEP_APP SETL {TRUE}" -pd "UNDEF_EXCEP_GDB SETL {FALSE}"
!else
DEBUGFLAGS_C = -O2 -DUNDEF_EXCEP_APP
DEBUGFLAGS_A = -pd "UNDEF_EXCEP_APP SETL {TRUE}" -pd "UNDEF_EXCEP_GDB SETL {FALSE}"
!endif
!if $(IMAGE)==1
IMAGE_FLAG_C = -DROM_IMAGE
IMAGE_FLAG_A = -pd "ROM_IMAGE SETL {TRUE}" -pd "RAM_IMAGE SETL {FALSE}"
!else
IMAGE_FLAG_C = -DRAM_IMAGE
IMAGE_FLAG_A = -pd "ROM_IMAGE SETL {FALSE}" -pd "RAM_IMAGE SETL {TRUE}"
!endif
!if $(TASK)==1
CC = $(TCC)
!else
CC = $(ARMCC)
!endif
ACC = $(ARMCC)
AS = $(ARMASM)
LD = $(ARMLINK)
OBJCOPY = $(FROMELF)
OBJDUMP = $(FROMELF)
!if $(ENDIAN)==1
ENDIAN_FLAG = -bi
E_FLAG_C = -DEB
E_FLAG_A = -pd "EB SETL {TRUE}"
!else
ENDIAN_FLAG = -li
E_FLAG_C = -DEL
E_FLAG_A = -pd "EB SETL {FALSE}"
!endif
!if $(TARGET)==1
AC_FLAGS = -apcs /noswst/interwork -D__APCS_INTERWORK -DTHUMB_INTERWORK
AA_FLAGS = -apcs /noswst/interwork -pd "__APCS_INTERWORK SETL {TRUE}" -pd "THUMB_INTERWORK SETL {TRUE}"
AL_FLAGS =
!else
AC_FLAGS = -apcs /noswst
AA_FLAGS = -apcs /noswst -pd "__APCS_INTERWORK SETL {FALSE}" -pd "THUMB_INTERWORK SETL {FALSE}"
AL_FLAGS =
!endif
!if $(TASK)==0
TC_FLAGS =
TA_FLAGS = -pd "THUMB_CSTART SETL {FALSE}" -pd "THUMB_TASKS SETL {FALSE}"
!else
TC_FLAGS = -DTHUMB_TASKS
TA_FLAGS = -pd "THUMB_CSTART SETL {TRUE}" -pd "THUMB_TASKS SETL {TRUE}"
!endif
!if $(LPCVAR)==04
LD_SCRIPT_ROM = $(LINKDIR)/link2104_rom.ld
LD_SCRIPT_RAM = $(LINKDIR)/link2104_ram.ld
LPCVAR_FLAG_C = -DLPC2104
LPCVAR_FLAG_A = -pd "LPC2104 SETL {TRUE}" -pd "LPC2105 SETL {FALSE}" -pd "LPC2106 SETL {FALSE}" -pd "LPC2131 SETL {FALSE}" -pd "LPC2132 SETL {FALSE}" -pd "LPC2134 SETL {FALSE}" -pd "LPC2136 SETL {FALSE}" -pd "LPC2138 SETL {FALSE}"
!else
!if $(LPCVAR)==05
LD_SCRIPT_ROM = $(LINKDIR)/link2105_rom.ld
LD_SCRIPT_RAM = $(LINKDIR)/link2105_ram.ld
LPCVAR_FLAG_C = -DLPC2105
LPCVAR_FLAG_A = -pd "LPC2104 SETL {FALSE}" -pd "LPC2105 SETL {TRUE}" -pd "LPC2106 SETL {FALSE}" -pd "LPC2131 SETL {FALSE}" -pd "LPC2132 SETL {FALSE}" -pd "LPC2134 SETL {FALSE}" -pd "LPC2136 SETL {FALSE}" -pd "LPC2138 SETL {FALSE}"
!else
!if $(LPCVAR)==06
LD_SCRIPT_ROM = $(LINKDIR)/link2106_rom.ld
LD_SCRIPT_RAM = $(LINKDIR)/link2106_ram.ld
LPCVAR_FLAG_C = -DLPC2106
LPCVAR_FLAG_A = -pd "LPC2104 SETL {FALSE}" -pd "LPC2105 SETL {FALSE}" -pd "LPC2106 SETL {TRUE}" -pd "LPC2131 SETL {FALSE}" -pd "LPC2132 SETL {FALSE}" -pd "LPC2134 SETL {FALSE}" -pd "LPC2136 SETL {FALSE}" -pd "LPC2138 SETL {FALSE}"
!else
!if $(LPCVAR)==31
LD_SCRIPT_ROM = $(LINKDIR)/link2131_rom.ld
LD_SCRIPT_RAM = $(LINKDIR)/link2131_ram.ld
LPCVAR_FLAG_C = -DLPC2131
LPCVAR_FLAG_A = -pd "LPC2104 SETL {FALSE}" -pd "LPC2105 SETL {FALSE}" -pd "LPC2106 SETL {FALSE}" -pd "LPC2131 SETL {TRUE}" -pd "LPC2132 SETL {FALSE}" -pd "LPC2134 SETL {FALSE}" -pd "LPC2136 SETL {FALSE}" -pd "LPC2138 SETL {FALSE}"
!else
!if $(LPCVAR)==32
LD_SCRIPT_ROM = $(LINKDIR)/link2132_rom.ld
LD_SCRIPT_RAM = $(LINKDIR)/link2132_ram.ld
LPCVAR_FLAG_C = -DLPC2132
LPCVAR_FLAG_A = -pd "LPC2104 SETL {FALSE}" -pd "LPC2105 SETL {FALSE}" -pd "LPC2106 SETL {FALSE}" -pd "LPC2131 SETL {FALSE}" -pd "LPC2132 SETL {TRUE}" -pd "LPC2134 SETL {FALSE}" -pd "LPC2136 SETL {FALSE}" -pd "LPC2138 SETL {FALSE}"
!else
!if $(LPCVAR)==34
LD_SCRIPT_ROM = $(LINKDIR)/link2134_rom.ld
LD_SCRIPT_RAM = $(LINKDIR)/link2134_ram.ld
LPCVAR_FLAG_C = -DLPC2134
LPCVAR_FLAG_A = -pd "LPC2104 SETL {FALSE}" -pd "LPC2105 SETL {FALSE}" -pd "LPC2106 SETL {FALSE}" -pd "LPC2131 SETL {FALSE}" -pd "LPC2132 SETL {FALSE}" -pd "LPC2134 SETL {TRUE}" -pd "LPC2136 SETL {FALSE}" -pd "LPC2138 SETL {FALSE}"
!else
!if $(LPCVAR)==36
LD_SCRIPT_ROM = $(LINKDIR)/link2136_rom.ld
LD_SCRIPT_RAM = $(LINKDIR)/link2136_ram.ld
LPCVAR_FLAG_C = -DLPC2136
LPCVAR_FLAG_A = -pd "LPC2104 SETL {FALSE}" -pd "LPC2105 SETL {FALSE}" -pd "LPC2106 SETL {FALSE}" -pd "LPC2131 SETL {FALSE}" -pd "LPC2132 SETL {FALSE}" -pd "LPC2134 SETL {FALSE}" -pd "LPC2136 SETL {TRUE}" -pd "LPC2138 SETL {FALSE}"
!else
!if $(LPCVAR)==38
LD_SCRIPT_ROM = $(LINKDIR)/link2138_rom.ld
LD_SCRIPT_RAM = $(LINKDIR)/link2138_ram.ld
LPCVAR_FLAG_C = -DLPC2138
LPCVAR_FLAG_A = -pd "LPC2104 SETL {FALSE}" -pd "LPC2105 SETL {FALSE}" -pd "LPC2106 SETL {FALSE}" -pd "LPC2131 SETL {FALSE}" -pd "LPC2132 SETL {FALSE}" -pd "LPC2134 SETL {FALSE}" -pd "LPC2136 SETL {FALSE}" -pd "LPC2138 SETL {TRUE}"
!else
LD_SCRIPT_ROM = $(LINKDIR)/link2106_rom.ld
LD_SCRIPT_RAM = $(LINKDIR)/link2106_ram.ld
LPCVAR_FLAG_C = -DLPC2106
LPCVAR_FLAG_A = -pd "LPC2104 SETL {FALSE}" -pd "LPC2105 SETL {FALSE}" -pd "LPC2106 SETL {TRUE}" -pd "LPC2131 SETL {FALSE}" -pd "LPC2132 SETL {FALSE}" -pd "LPC2134 SETL {FALSE}" -pd "LPC2136 SETL {FALSE}" -pd "LPC2138 SETL {FALSE}"
!endif
!endif
!endif
!endif
!endif
!endif
!endif
!endif
!if $(TOOLS)==1
T_FLAG_C = -DSDT
T_FLAG_A = -pd "ADS SETL {FALSE}"
T_FLAG_L = -libpath $(TPATH)\Lib\embedded
MAP_LIST_OPT_ROM = -map -xref -symbols $(IMAGE_MAP_ROM) -list $(IMAGE_LST_ROM)
MAP_LIST_OPT_RAM = -map -xref -symbols $(IMAGE_MAP_RAM) -list $(IMAGE_LST_RAM)
OBJCOPY_HEX_ROM = -nozeropad $(IMAGE_ELF_ROM) -i32 $(IMAGE_HEX_ROM)
OBJCOPY_HEX_RAM = -nozeropad $(IMAGE_ELF_RAM) -i32 $(IMAGE_HEX_RAM)
OBJCOPY_SREC_RAM = -nozeropad $(IMAGE_ELF_RAM) -m32 $(IMAGE_SREC_RAM)
!else
T_FLAG_C = -DADS
T_FLAG_A = -pd "ADS SETL {TRUE}"
T_FLAG_L =
MAP_LIST_OPT_ROM = -info sizes,totals -map -xref -symbols -list $(IMAGE_MAP_ROM)
MAP_LIST_OPT_RAM = -info sizes,totals -map -xref -symbols -list $(IMAGE_MAP_RAM)
OBJCOPY_HEX_ROM = -nodebug -i32 -output $(IMAGE_HEX_ROM) $(IMAGE_ELF_ROM)
OBJCOPY_HEX_RAM = -nodebug -i32 -output $(IMAGE_HEX_RAM) $(IMAGE_ELF_RAM)
OBJCOPY_SREC_RAM = -nodebug -m32 -output $(IMAGE_SREC_RAM) $(IMAGE_ELF_RAM)
!endif
#### Include file path ####
INCLUDE = -I$(ROOT)\inc -I$(AUP_COMMONROOT)\inc -I$(AUP_LPCROOT)\inc -I$(UCOSROOT)\SOURCE
#### Build Flags ####
CC_OPTS = -c $(DEBUGFLAGS_C) $(IMAGE_FLAG_C) $(ENDIAN_FLAG) $(T_FLAG_C) $(E_FLAG_C) $(AC_FLAGS) $(TC_FLAGS) $(LPCVAR_FLAG_C) $(INCLUDE) -cpu ARM7TDMI
ACC_OPTS = $(CC_OPTS)
AS_OPTS = $(ENDIAN_FLAG) $(DEBUGFLAGS_A) $(IMAGE_FLAG_A) $(T_FLAG_A) $(E_FLAG_A) $(AA_FLAGS) $(TA_FLAGS) $(LPCVAR_FLAG_A) $(INCLUDE) -cpu ARM7TDMI
LD_OPTS_ROM = -elf $(MAP_LIST_OPT_ROM) $(AL_FLAGS) $(T_FLAG_L) -scatter $(LD_SCRIPT_ROM) -o $(IMAGE_ELF_ROM)
LD_OPTS_RAM = -elf $(MAP_LIST_OPT_RAM) $(AL_FLAGS) $(T_FLAG_L) -scatter $(LD_SCRIPT_RAM) -o $(IMAGE_ELF_RAM)
#### Object combine Definition ####
OBJ = $(OBJDIR)\init.o $(OBJDIR)\os_cpu_a.o $(OBJDIR)\consol.o $(OBJDIR)\frmwrk.o \
$(OBJDIR)\ac_halt.o $(OBJDIR)\os_cpu_c.o $(OBJDIR)\ucos_ii.o $(OBJDIR)\ex1.o
# **********************************************
# Rules
# **********************************************
IMAGES_RAM = $(IMAGE_HEX_RAM) $(IMAGE_SREC_RAM)
IMAGES_ROM = $(IMAGE_HEX_ROM)
!if $(IMAGE)==1
IMAGES = $(IMAGES_ROM) sdt_unix2dos_msg
!else
IMAGES = $(IMAGES_RAM)
!endif
all: $(IMAGES)
clean:
$(REMOVEFILE) $(OBJDIR)\*.o
clean_all:
$(REMOVEFILE) $(OBJDIR)\*.o
$(REMOVEFILE) *.map
$(REMOVEFILE) *.lst
$(REMOVEFILE) *.axf
$(REMOVEFILE) *.hex
$(REMOVEFILE) *.rec
sdt_unix2dos_msg:
@echo Important!!! Hex files built using SDT are not compatible with LPC2000 Flash utility, so run unix2dos over the hex file before passing it.
#### Link ####
$(IMAGE_HEX_ROM) : $(IMAGE_ELF_ROM)
$(OBJCOPY) $(OBJCOPY_HEX_ROM)
$(IMAGE_HEX_RAM) : $(IMAGE_ELF_RAM)
$(OBJCOPY) $(OBJCOPY_HEX_RAM)
$(IMAGE_SREC_RAM): $(IMAGE_ELF_RAM)
$(OBJCOPY) $(OBJCOPY_SREC_RAM)
$(IMAGE_ELF_ROM) : $(OBJ) $(LD_SCRIPT_ROM)
$(LD) $(OBJ) $(LD_OPTS_ROM)
$(IMAGE_ELF_RAM) : $(OBJ) $(LD_SCRIPT_RAM)
$(LD) $(OBJ) $(LD_OPTS_RAM)
#**************************************************************************
#* Compile/Assemble
#**************************************************************************
$(OBJDIR)\init.o: $(AUP_LPCROOT)\src\arm\init.S
$(AS) $(AS_OPTS) -o $(OBJDIR)\init.o $(AUP_LPCROOT)\src\arm\init.S
$(OBJDIR)\os_cpu_a.o: $(AUP_COMMONROOT)\src\arm\os_cpu_a.S
$(AS) $(AS_OPTS) -o $(OBJDIR)\os_cpu_a.o $(AUP_COMMONROOT)\src\arm\os_cpu_a.S
$(OBJDIR)\consol.o: $(AUP_LPCROOT)\src\consol.c $(AUP_LPCROOT)\inc\lpc210x.h $(AUP_LPCROOT)\inc\frmwrk.h $(ROOT)\inc\frmwrk_cfg.h
$(CC) $(CC_OPTS) -o $(OBJDIR)\consol.o $(AUP_LPCROOT)\src\consol.c
$(OBJDIR)\frmwrk.o: $(AUP_LPCROOT)\src\frmwrk.c $(AUP_LPCROOT)\inc\lpc210x.h $(AUP_LPCROOT)\inc\frmwrk.h $(ROOT)\inc\frmwrk_cfg.h
$(CC) $(CC_OPTS) -o $(OBJDIR)\frmwrk.o $(AUP_LPCROOT)\src\frmwrk.c
$(OBJDIR)\ac_halt.o: $(ARM_COMMONDIR)\ac_halt.c $(ROOT)\inc\frmwrk_cfg.h
$(ACC) $(ACC_OPTS) -o $(OBJDIR)\ac_halt.o $(ARM_COMMONDIR)\ac_halt.c
$(OBJDIR)\os_cpu_c.o: $(AUP_COMMONROOT)\src\os_cpu_c.c
$(CC) $(CC_OPTS) -o $(OBJDIR)\os_cpu_c.o $(AUP_COMMONROOT)\src\os_cpu_c.c
$(OBJDIR)\ucos_ii.o: $(UCOSROOT)\source\ucos_ii.c
$(CC) $(CC_OPTS) -o $(OBJDIR)\ucos_ii.o $(UCOSROOT)\source\ucos_ii.c
$(OBJDIR)\ex1.o: $(ROOT)\src\ex1.c $(AUP_LPCROOT)\inc\lpc210x.h $(AUP_LPCROOT)\inc\frmwrk.h
$(CC) $(CC_OPTS) -o $(OBJDIR)\ex1.o $(ROOT)\src\ex1.c
#**************************************************************************
#* End
#**************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -