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

📄 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  : GCC                                                     *
#                                                                         *
#   DESCRIPTION :                                                         *
#   Make file for Ex2 ARM_UCOS builds. Use GNU's make utility to          *
#   build using this file.                                                *
#   Command options:                                                      *
#   make [IMAGE=<RAM,ROM>]           -- Make image (default RAM)          *
#   make depend                      -- Make dependencies                 *
#   make clean                       -- Remove all object files           *
#   make clean_all                   -- Remove all object & binary files  *
#                                                                         *
#*************************************************************************/


#**************************************************************************
#* Build Configuration
#**************************************************************************

#### Project name ####
IMAGENAME = ex2

#### Endian ####
# possible values: EL (for Little), little endian only
ENDIAN = EL

#### Debug ####
# possible values: gdb, enable, disable
DEBUG = disable

#### Task Mode ####
# Possible values: arm, thumb
TASK = thumb

#### Target Mode ####
# Possible values: arm, armthumb
ifeq ($(TASK),thumb)
TARGET = armthumb
else
TARGET = arm
endif

#### Development platform ####
# possible values: win, linux, cygwin
DEVPLF = cygwin

#### LPC variant ####
# Possible values: LPC2104/5/6, LPC2131/2/4/6/8
LPCVAR = LPC2138

#### ARM tool Definition ####
GCC       = arm-elf-gcc
GLD       = arm-elf-ld
OBJCOPY   = arm-elf-objcopy
OBJDUMP   = arm-elf-objdump

ifeq ($(DEVPLF),win)
REMOVEFILE = del
else
REMOVEFILE = rm -f
endif


# **********************************************
# Directories
# **********************************************

ROOT      = ./../..
UCOSROOT  = $(ROOT)/..
AUP_COMMONROOT = $(UCOSROOT)/arm_ucos/common
AUP_LPCROOT  = $(UCOSROOT)/arm_ucos/lpc2xxx
ARM_COMMONDIR = $(AUP_COMMONROOT)/arm
SRCDIR    = $(ROOT)/src $(AUP_COMMONROOT)/src $(AUP_COMMONROOT)/src/gcc $(AUP_LPCROOT)/src $(AUP_LPCROOT)/src/gcc
INCDIR    = $(ROOT)/inc
BINDIR    = $(ROOT)/bin
LINKDIR   = $(AUP_LPCROOT)/bin/gcc

VPATH     = $(SRCDIR) $(ARM_COMMONDIR)


# **********************************************
# Image file names and map file
# **********************************************

IMAGE_ELF_ROM = $(IMAGENAME)_rom.elf
IMAGE_HEX_ROM = $(IMAGENAME)_rom.hex
IMAGE_MAP_ROM = $(IMAGENAME)_rom.map
IMAGE_ELF_RAM = $(IMAGENAME)_ram.elf
IMAGE_HEX_RAM = $(IMAGENAME)_ram.hex
IMAGE_SREC_RAM= $(IMAGENAME)_ram.rec
IMAGE_MAP_RAM = $(IMAGENAME)_ram.map


# **********************************************
# Compiler/Assembler and linker options
# **********************************************

ifeq ($(DEBUG),gdb)
DEBUGFLAGS = -g -O0 -DUNDEF_EXCEP_GDB
else
ifeq ($(DEBUG),enable)
DEBUGFLAGS = -g -O2 -DUNDEF_EXCEP_APP
else
DEBUGFLAGS = -O2 -DUNDEF_EXCEP_APP
endif
endif

ifeq ($(IMAGE),ROM)
IMAGE_FLAG= -DROM_IMAGE
else
IMAGE_FLAG= -DRAM_IMAGE
endif

ifeq ($(TASK),thumb)
CC = $(GCC) -mthumb
else
CC = $(GCC)
endif
ACC = $(GCC)
AS = $(GCC)
LD = $(GCC)

INCLUDE   = -I$(INCDIR) -I$(AUP_COMMONROOT)/inc -I$(AUP_LPCROOT)/inc -I$(UCOSROOT)/SOURCE

ifeq ($(TARGET),armthumb)
THUMB_IW  = -mthumb-interwork
else
THUMB_IW  = 
endif

ifeq ($(TASK),thumb)
T_FLAGS   = -DTHUMB_CSTART -DTHUMB_TASKS -DTHUMB_INTERWORK
else
T_FLAGS   = 
endif

ifeq ($(LPCVAR),LPC2014)
ifndef LD_SCRIPT_ROM
LD_SCRIPT_ROM = $(LINKDIR)/link2104_rom.ld
endif
ifndef LD_SCRIPT_RAM
LD_SCRIPT_RAM = $(LINKDIR)/link2104_ram.ld
endif
else
ifeq ($(LPCVAR),LPC2015)
ifndef LD_SCRIPT_ROM
LD_SCRIPT_ROM = $(LINKDIR)/link2105_rom.ld
endif
ifndef LD_SCRIPT_RAM
LD_SCRIPT_RAM = $(LINKDIR)/link2105_ram.ld
endif
else
ifeq ($(LPCVAR),LPC2016)
ifndef LD_SCRIPT_ROM
LD_SCRIPT_ROM = $(LINKDIR)/link2106_rom.ld
endif
ifndef LD_SCRIPT_RAM
LD_SCRIPT_RAM = $(LINKDIR)/link2106_ram.ld
endif
else
ifeq ($(LPCVAR),LPC2131)
ifndef LD_SCRIPT_ROM
LD_SCRIPT_ROM = $(LINKDIR)/link2131_rom.ld
endif
ifndef LD_SCRIPT_RAM
LD_SCRIPT_RAM = $(LINKDIR)/link2131_ram.ld
endif
else
ifeq ($(LPCVAR),LPC2132)
ifndef LD_SCRIPT_ROM
LD_SCRIPT_ROM = $(LINKDIR)/link2132_rom.ld
endif
ifndef LD_SCRIPT_RAM
LD_SCRIPT_RAM = $(LINKDIR)/link2132_ram.ld
endif
else
ifeq ($(LPCVAR),LPC2134)
ifndef LD_SCRIPT_ROM
LD_SCRIPT_ROM = $(LINKDIR)/link2134_rom.ld
endif
ifndef LD_SCRIPT_RAM
LD_SCRIPT_RAM = $(LINKDIR)/link2134_ram.ld
endif
else
ifeq ($(LPCVAR),LPC2136)
ifndef LD_SCRIPT_ROM
LD_SCRIPT_ROM = $(LINKDIR)/link2136_rom.ld
endif
ifndef LD_SCRIPT_RAM
LD_SCRIPT_RAM = $(LINKDIR)/link2136_ram.ld
endif
else
ifeq ($(LPCVAR),LPC2138)
ifndef LD_SCRIPT_ROM
LD_SCRIPT_ROM = $(LINKDIR)/link2138_rom.ld
endif
ifndef LD_SCRIPT_RAM
LD_SCRIPT_RAM = $(LINKDIR)/link2138_ram.ld
endif
else
ifndef LD_SCRIPT_ROM
LD_SCRIPT_ROM = $(LINKDIR)/link2106_rom.ld
endif
ifndef LD_SCRIPT_RAM
LD_SCRIPT_RAM = $(LINKDIR)/link2106_ram.ld
endif
endif
endif
endif
endif
endif
endif
endif
endif

CPU       = arm7tdmi
W_OPTS    = -Wall -Wcast-align -Wcast-qual -Wimplicit -Wmissing-declarations \
            -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wswitch \
            -Wredundant-decls -Wreturn-type -Wshadow -Wstrict-prototypes -Wunused
OPTS      = -mcpu=$(CPU) $(THUMB_IW)
CA_OPTS   = $(OPTS) $(DEBUGFLAGS) -c $(INCLUDE) -D$(ENDIAN) -DGCC $(T_FLAGS) $(IMAGE_FLAG) -D$(LPCVAR)
CC_OPTS   = $(CA_OPTS) $(W_OPTS)
ACC_OPTS  = $(CA_OPTS) $(W_OPTS)
AS_OPTS   = $(CA_OPTS) -D_ASSEMBLER_ -x assembler-with-cpp

LD_OPTS_ROM = $(OPTS) -nostartfiles -T $(LD_SCRIPT_ROM) -Wl,-Map=$(IMAGE_MAP_ROM),--cref -o $(IMAGE_ELF_ROM)
LD_OPTS_RAM = $(OPTS) -nostartfiles -T $(LD_SCRIPT_RAM) -Wl,-Map=$(IMAGE_MAP_RAM),--cref -o $(IMAGE_ELF_RAM)


# **********************************************
# Files to be compiled
# **********************************************

SRC_C  = $(foreach dir, $(SRCDIR), $(wildcard $(dir)/*.c))
SRC_AC = $(ARM_COMMONDIR)/ac_halt.c
SRC_S  = $(foreach dir, $(SRCDIR), $(wildcard $(dir)/*.S))
SRC    = $(SRC_C) $(SRC_AC) $(SRC_S)

OBJ_C  = $(notdir $(patsubst %.c, %.o, $(SRC_C)))
OBJ_AC = $(notdir $(patsubst %.c, %.o, $(SRC_AC)))
OBJ_S  = $(notdir $(patsubst %.S, %.o, $(SRC_S)))
OBJ    = $(OBJ_C) $(OBJ_AC) $(OBJ_S)


# **********************************************
# Rules
# **********************************************

IMAGES_RAM = $(IMAGE_HEX_RAM) $(IMAGE_SREC_RAM)
IMAGES_ROM = $(IMAGE_HEX_ROM)

ifeq ($(IMAGE),ROM)
IMAGES = $(IMAGES_ROM)
else
IMAGES = $(IMAGES_RAM)
endif

.PHONY : all
all : $(IMAGES)

$(IMAGE_HEX_ROM) : $(IMAGE_ELF_ROM)
	$(OBJCOPY) -O ihex $(IMAGE_ELF_ROM) $(IMAGE_HEX_ROM)

$(IMAGE_HEX_RAM) : $(IMAGE_ELF_RAM)
	$(OBJCOPY) -O ihex $(IMAGE_ELF_RAM) $(IMAGE_HEX_RAM)

$(IMAGE_SREC_RAM): $(IMAGE_ELF_RAM)
	$(OBJCOPY) -O srec $(IMAGE_ELF_RAM) $(IMAGE_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)


$(OBJ_C) : %.o : %.c 
	$(CC) $(CC_OPTS) -o $@ $<

$(OBJ_AC) : %.o : %.c
	$(ACC) $(ACC_OPTS) -o $@ $<

$(OBJ_S) : %.o : %.S
	$(AS) $(AS_OPTS) -o $@ $<

$(OBJ) : ./makefile

.PHONY : clean clean_all depend

clean :
	@$(REMOVEFILE) *.o

clean_all :
	$(REMOVEFILE) *.o
	$(REMOVEFILE) *.map
	$(REMOVEFILE) *.elf
	$(REMOVEFILE) *.hex
	$(REMOVEFILE) *.rec
	$(REMOVEFILE) depend.mk

depend :
	$(CC) $(CC_OPTS) -M $(SRC) > depend.mk


-include depend.mk

#**************************************************************************
#* End
#**************************************************************************

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -