⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 makefile

📁 The latest release, ver 1.16 of the ARM (7TDMI, 720T, 920T) port for uC/OS-II V2.61 (and higher) inc
💻
字号:
#**************************************************************************
#                                                                         *
#   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 + -