📄 makefile
字号:
# =============================================================================
#
# Make file for TNKernel examples
#
# Processor: LPC2368
#
# Example: tst1
#
# Compiler: GCC ARM v.4.3.2 (CodeSourcery Sourcery G++ Lite 2008q3-39 for ARM EABI, MS Windows)
#
# No dependencies support. Call 'make clean' and than 'make' to rebuild all
#
# =============================================================================
# ========= General =============
FORMAT = ihex
TST_N = 1
# ========= Pathes ==============
INCLUDES = -I ./ -I ../../TNKernel
TOOLSROOT = c:/"Program Files"/CodeSourcery/"Sourcery G++ Lite"
TOOLS = $(TOOLSROOT)/bin/arm-none-eabi-
PRJPATH = F:/TNKernel_v25/LPC2368/GCC
PRJPATH_MSDOS = F:\TNKernel_v25\LPC2368\GCC
DEBUG_MSDOS = $(PRJPATH_MSDOS)\Debug
OBJ_CLR = $(PRJPATH_MSDOS)\OBJ
DEBUG = $(PRJPATH)/DEBUG
OBJ = $(PRJPATH)/OBJ
TNKERNELPATH = $(PRJPATH)/../../TNKernel
TESTFILESPATH = $(PRJPATH)/../test
#=========== Files ==============
#-- Project target file name (without extension).
IMAGE = tst$(TST_N)
#-- Linker script
LDSCRIPT = $(PRJPATH)/lpc2368_gcc.ld
#-- List of objects
OBJECTS = \
$(OBJ)/tnkernel_startup_gcc.o\
$(OBJ)/startup_hardware_init.o\
$(OBJ)/tn_port_asm.o\
$(OBJ)/tn.o\
$(OBJ)/tn_dqueue.o\
$(OBJ)/tn_event.o\
$(OBJ)/tn_mem.o\
$(OBJ)/tn_mutex.o\
$(OBJ)/tn_port.o\
$(OBJ)/tn_sem.o\
$(OBJ)/tn_tasks.o\
$(OBJ)/tn_utils.o\
$(OBJ)/tn_user.o\
$(OBJ)/utils.o\
$(OBJ)/tn_sprintf.o\
$(OBJ)/tst$(TST_N).o
OBJECTS_CLR = \
$(OBJ_CLR)\tnkernel_startup_gcc.o\
$(OBJ_CLR)\startup_hardware_init.o\
$(OBJ_CLR)\tn_port_asm.o\
$(OBJ_CLR)\tn.o\
$(OBJ_CLR)\tn_dqueue.o\
$(OBJ_CLR)\tn_event.o\
$(OBJ_CLR)\tn_mem.o\
$(OBJ_CLR)\tn_mutex.o\
$(OBJ_CLR)\tn_port.o\
$(OBJ_CLR)\tn_sem.o\
$(OBJ_CLR)\tn_tasks.o\
$(OBJ_CLR)\tn_utils.o\
$(OBJ_CLR)\tn_user.o\
$(OBJ_CLR)\utils.o\
$(OBJ_CLR)\tn_sprintf.o\
$(OBJ_CLR)\tst$(TST_N).o
# ---------------------------------------------------------------------------
# Tools, tools options(flags)
# ---------------------------------------------------------------------------
CC = $(TOOLS)gcc.exe
AS = $(TOOLS)as.exe
CPP = $(TOOLS)g++.exe
LD = $(TOOLS)ld.exe
OBJCOPY = $(TOOLS)objcopy.exe
OBJDUMP = $(TOOLS)objdump.exe
SIZE = $(TOOLS)size.exe
NM = $(TOOLS)nm.exe
REMOVE = DEL
COPY = copy
OPTFLAGS = -mcpu=arm7tdmi
DEBUG =
#-- Assembler flags
ADEFS =
#ASMOPTS = $(OPTFLAGS) $(INCLUDES) -D_GNU_ASSEMBLER_ \
# -mlittle-endian -nostdinc -x assembler-with-cpp \
# $(ADEFS) -Wa,-gstabs
ASMOPTS = --traditional-format -march=armv4t -EL
# -Wa,-adhlns=$(<:.S=.lst),-g$(DEBUG)
#-- Compiler flags
CDEF =
# -Wall -Wcast-align -Wcast-qual -Wimplicit \
# -Wmissing-prototypes -Wmissing-declarations
CCOPTS = $(OPTFLAGS) $(INCLUDES) $(CDEF) -c \
-Wall -Wnested-externs -Wpointer-arith -Wswitch \
-Wredundant-decls -Wreturn-type -Wshadow -Wstrict-prototypes -Wunused \
-O1 -std=c99 -march=armv4t -mlittle-endian -fno-builtin
#-- Linker flags
LDFLAGS = -nostartfiles -Wl,-Map=$(OBJ)/$(IMAGE).map,--cref -lc \
$(NEWLIBLPC) -lm -lc -lgcc -T$(LDSCRIPT)
#-- Combine all necessary flags and optional flags.
ALL_CFLAGS = -I. $(CFLAGS)
ALL_ASFLAGS = -I. $(ASFLAGS)
# ---------------------------------------------------------------------------
# Build
# ---------------------------------------------------------------------------
all: $(PRJPATH)/$(IMAGE).elf
#--- Compiling/Assembling ---
$(OBJ)/tnkernel_startup_gcc.o: $(PRJPATH)/tnkernel_startup_gcc.s
$(AS) $(ASMOPTS) $(PRJPATH)/tnkernel_startup_gcc.s -o $(OBJ)/tnkernel_startup_gcc.o
$(OBJ)/startup_hardware_init.o: $(PRJPATH)/startup_hardware_init.s
$(AS) $(ASMOPTS) $(PRJPATH)/startup_hardware_init.s -o $(OBJ)/startup_hardware_init.o
$(OBJ)/tn_port_asm.o: $(TNKERNELPATH)/tn_port_asm.s
$(AS) $(ASMOPTS) $(TNKERNELPATH)/tn_port_asm.s -o $(OBJ)/tn_port_asm.o
$(OBJ)/tn.o: $(TNKERNELPATH)/tn.c
$(CC) $(CCOPTS) $(TNKERNELPATH)/tn.c -o $(OBJ)/tn.o
$(OBJ)/tn_dqueue.o: $(TNKERNELPATH)/tn_dqueue.c
$(CC) $(CCOPTS) $(TNKERNELPATH)/tn_dqueue.c -o $(OBJ)/tn_dqueue.o
$(OBJ)/tn_event.o: $(TNKERNELPATH)/tn_event.c
$(CC) $(CCOPTS) $(TNKERNELPATH)/tn_event.c -o $(OBJ)/tn_event.o
$(OBJ)/tn_mem.o: $(TNKERNELPATH)/tn_mem.c
$(CC) $(CCOPTS) $(TNKERNELPATH)/tn_mem.c -o $(OBJ)/tn_mem.o
$(OBJ)/tn_mutex.o: $(TNKERNELPATH)/tn_mutex.c
$(CC) $(CCOPTS) $(TNKERNELPATH)/tn_mutex.c -o $(OBJ)/tn_mutex.o
$(OBJ)/tn_port.o: $(TNKERNELPATH)/tn_port.c
$(CC) $(CCOPTS) $(TNKERNELPATH)/tn_port.c -o $(OBJ)/tn_port.o
$(OBJ)/tn_sem.o: $(TNKERNELPATH)/tn_sem.c
$(CC) $(CCOPTS) $(TNKERNELPATH)/tn_sem.c -o $(OBJ)/tn_sem.o
$(OBJ)/tn_tasks.o: $(TNKERNELPATH)/tn_tasks.c
$(CC) $(CCOPTS) $(TNKERNELPATH)/tn_tasks.c -o $(OBJ)/tn_tasks.o
$(OBJ)/tn_utils.o: $(TNKERNELPATH)/tn_utils.c
$(CC) $(CCOPTS) $(TNKERNELPATH)/tn_utils.c -o $(OBJ)/tn_utils.o
$(OBJ)/tn_user.o: $(TESTFILESPATH)/tn_user.c
$(CC) $(CCOPTS) $(TESTFILESPATH)/tn_user.c -o $(OBJ)/tn_user.o
$(OBJ)/utils.o: $(TESTFILESPATH)/utils.c
$(CC) $(CCOPTS) $(TESTFILESPATH)/utils.c -o $(OBJ)/utils.o
$(OBJ)/tn_sprintf.o: $(TESTFILESPATH)/tn_sprintf.c
$(CC) $(CCOPTS) $(TESTFILESPATH)/tn_sprintf.c -o $(OBJ)/tn_sprintf.o
$(OBJ)/tst$(TST_N).o: $(TESTFILESPATH)/tst$(TST_N).c
$(CC) $(CCOPTS) $(TESTFILESPATH)/tst$(TST_N).c -o $(OBJ)/tst$(TST_N).o
#-- Linking ---
$(PRJPATH)/$(IMAGE).elf: $(OBJECTS)
$(REMOVE) $(OBJ_CLR)\$(IMAGE).elf
$(REMOVE) $(OBJ_CLR)\$(IMAGE).hex
# $(REMOVE) $(OBJ_CLR)\$(IMAGE).lst
$(REMOVE) $(OBJ_CLR)\$(IMAGE).map
$(CC) $(ALL_CFLAGS) $(OBJECTS) --output $(OBJ)/$(notdir $@) $(LDFLAGS)
$(OBJCOPY) -O$(FORMAT) $(OBJ)/$(IMAGE).elf $(OBJ)/$(IMAGE).hex
#--- Display segment's size
$(SIZE) -A $(OBJ)/$(IMAGE).elf
# ===========================================================================
.PHONY: clean
clean:
$(REMOVE) $(OBJECTS_CLR)
# ===========================================================================
# ===========================================================================
# ===========================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -