|
@@ -1,22 +1,37 @@
|
|
|
-#########################
|
|
|
-# IAR Makefile for STM8 #
|
|
|
-#########################
|
|
|
+##########################
|
|
|
+# IAR Makefile for STM8L #
|
|
|
+##########################
|
|
|
|
|
|
-# Вз�л из проекта atomthreads и переиначил.
|
|
|
+# Âçÿë èç ïðîåêòà atomthreads è ïåðåèíà÷èë.
|
|
|
+
|
|
|
+PROJECT=VAPC
|
|
|
|
|
|
# Location of build tools and atomthreads sources
|
|
|
-EWSTM8_DIR=C:\IAR\Embedded Workbench 7.0\stm8
|
|
|
-APP_SRC=src
|
|
|
-APP_INC=inc
|
|
|
-PERIPHS_SRC=StdPerphDrv/src
|
|
|
-PERIPHS_INC=StdPerphDrv/inc
|
|
|
-EWSTM8_BIN=C:/IAR/Embedded\ Workbench\ 7.0/stm8/bin
|
|
|
+EWSTM8_DIR=C:\IAR\Embedded Workbench 7.3\stm8
|
|
|
+EWSTM8_BIN=C:/IAR/Embedded\ Workbench\ 7.3/stm8/bin
|
|
|
CC=$(EWSTM8_BIN)/iccstm8
|
|
|
ASM=$(EWSTM8_BIN)/iasmstm8
|
|
|
LINK=$(EWSTM8_BIN)/ilinkstm8
|
|
|
HEX=$(EWSTM8_BIN)/ielftool
|
|
|
+FLASHTOOL=C:/STMicroelectronics/st_toolset/stvp/STVP_CmdLine.exe
|
|
|
+FLASHOPT=-Device=STM8L051x3
|
|
|
+
|
|
|
+DEFINES = -D USE_STDPERIPH_DRIVER
|
|
|
+DEFINES += -D USE_RTOS
|
|
|
+
|
|
|
+APP_SRC = src
|
|
|
+LIB_SRC = lib
|
|
|
+
|
|
|
+# Sources pats
|
|
|
+vpath %.c $(APP_SRC)
|
|
|
+vpath %.c $(LIB_SRC)
|
|
|
+vpath %.c StdPerphDrv/src
|
|
|
+
|
|
|
+# Include paths
|
|
|
+INCLUDES = -I inc
|
|
|
+INCLUDES += -I lib
|
|
|
+INCLUDES += -I StdPerphDrv/inc
|
|
|
|
|
|
-PROJECT=VAPC
|
|
|
|
|
|
# CPU part number
|
|
|
PART = STM8L05X_LD_VL
|
|
@@ -27,13 +42,16 @@ LIB_MODEL = dlstm8ssn.h
|
|
|
OUT_DIR = Out
|
|
|
OBJ_DIR = $(OUT_DIR)/Obj
|
|
|
LIST_DIR = $(OUT_DIR)/List
|
|
|
+
|
|
|
+# Models
|
|
|
CODE_MODEL = small
|
|
|
DATA_MODEL = small
|
|
|
|
|
|
# Application object files
|
|
|
-#APP_OBJECTS = board.o delay.o HD44780.o stm8l15x_it.o
|
|
|
APP_OBJECTS = $(notdir $(patsubst %.c,%.o,$(wildcard $(APP_SRC)/*.c)))
|
|
|
-#APP_ASM_OBJECTS = atomport-asm-iar.o
|
|
|
+
|
|
|
+# Librarys object files
|
|
|
+LIB_OBJECTS = $(notdir $(patsubst %.c,%.o,$(wildcard $(LIB_SRC)/*.c)))
|
|
|
|
|
|
# STM8S Peripheral driver object files
|
|
|
PERIPH_OBJECTS = stm8l15x_adc.o
|
|
@@ -65,53 +83,38 @@ PERIPH_OBJECTS += stm8l15x_usart.o
|
|
|
#PERIPH_OBJECTS += stm8l15x_wfe.o
|
|
|
#PERIPH_OBJECTS += stm8l15x_wwdg.o
|
|
|
|
|
|
-###PERIPH_OBJECTS = $(notdir $(patsubst %.c,%.o,$(wildcard $(PERIPHS_SRC)/*.c)))
|
|
|
-
|
|
|
-# Kernel object files
|
|
|
-#KERNEL_OBJECTS = atomkernel.o atomsem.o atommutex.o atomtimer.o atomqueue.o
|
|
|
|
|
|
# Collection of built objects (excluding test applications)
|
|
|
-ALL_OBJECTS = $(APP_OBJECTS) $(PERIPH_OBJECTS)
|
|
|
+ALL_OBJECTS = $(APP_OBJECTS) $(LIB_OBJECTS) $(PERIPH_OBJECTS)
|
|
|
BUILT_OBJECTS = $(patsubst %,$(OUT_DIR)/%,$(ALL_OBJECTS))
|
|
|
|
|
|
-# Test object files (dealt with separately as only one per application build)
|
|
|
-#PROJ_OBJECTS = $(notdir $(patsubst %.c,%.o,$(wildcard $(APP_SRC)/*.c)))
|
|
|
-#PROJ_OBJECTS = main.o
|
|
|
-
|
|
|
# Target application filenames (.elf) for each test object
|
|
|
-#PROJ_ELFS = $(patsubst %.o,%.elf,$(PROJ_OBJECTS))
|
|
|
-#PROJ_S19S = $(patsubst %.o,%.s19,$(PROJ_OBJECTS))
|
|
|
-PROJ_ELFS = $(PROJECT).elf
|
|
|
-PROJ_S19S = $(PROJECT).s19
|
|
|
-PROJ_IHEX = $(PROJECT).hex
|
|
|
+PROJ_ELF = $(PROJECT).elf
|
|
|
+PROJ_S19 = $(PROJECT).s19
|
|
|
+PROJ_HEX = $(PROJECT).hex
|
|
|
|
|
|
# Search build/output directory for dependencies
|
|
|
-vpath %.c $(APP_SRC)
|
|
|
-vpath %.c $(PERIPHS_SRC)
|
|
|
vpath %.o .\$(OBJ_DIR)
|
|
|
vpath %.elf .\$(OUT_DIR)
|
|
|
vpath %.hex .\$(OUT_DIR)
|
|
|
|
|
|
-# Include paths
|
|
|
-INCLUDES = -I $(APP_INC)
|
|
|
-INCLUDES += -I $(PERIPHS_INC)
|
|
|
-
|
|
|
# Compiler/Assembler flags
|
|
|
-CFLAGS = -e -Oh
|
|
|
+CFLAGS = -e -Oh $(DEFINES)
|
|
|
CFLAGS += --code_model $(CODE_MODEL) --data_model $(DATA_MODEL)
|
|
|
CFLAGS += --dlib_config "$(EWSTM8_DIR)\lib\$(LIB_MODEL)"
|
|
|
CFLAGS += -D NDEBUG -D $(PART)
|
|
|
CFLAGS += -lCN $(LIST_DIR) -lBN $(LIST_DIR)
|
|
|
CFLAGS += --diag_suppress Pa050
|
|
|
|
|
|
-DBG_CFLAGS = -e -Ol --no_cse --no_unroll --no_inline --no_code_motion --no_tbaa
|
|
|
-DBG_CFLAGS += --no_cross_call --debug --code_model $(CODE_MODEL) --data_model $(DATA_MODEL)
|
|
|
+DBG_CFLAGS = -e -Ol $(DEFINES) --no_cross_call --debug
|
|
|
+DBG_CFLAGS += --no_cse --no_unroll --no_inline --no_code_motion --no_tbaa
|
|
|
+DBG_CFLAGS += --code_model $(CODE_MODEL) --data_model $(DATA_MODEL)
|
|
|
DBG_CFLAGS += --dlib_config "$(EWSTM8_DIR)\lib\$(LIB_MODEL)" -D $(PART)
|
|
|
DBG_CFLAGS += -lC $(LIST_DIR) -lB $(LIST_DIR)
|
|
|
-DBG_CFLAGS += --diag_suppress Pa050
|
|
|
+DBG_CFLAGS += --diag_suppress Pa050
|
|
|
|
|
|
-ASMFLAGS = -M'<>' -ld $(OUT_DIR)\list --diag_suppress Pa050
|
|
|
-ASMFLAGS += --code_model small --data_model small
|
|
|
+ASMFLAGS = -M'<>' -ld $(OUT_DIR)\list --diag_suppress Pa050
|
|
|
+ASMFLAGS += --code_model $(CODE_MODEL) --data_model $(DATA_MODEL)
|
|
|
|
|
|
DBG_ASMFLAGS = -M'<>' -r -ld $(OUT_DIR)\list --diag_suppress Pa050
|
|
|
DBG_ASMFLAGS += --code_model $(CODE_MODEL) --data_model $(DATA_MODEL)
|
|
@@ -137,8 +140,10 @@ DBG_LINKFLAGS += --entry __iar_program_start
|
|
|
# Build targets #
|
|
|
#################
|
|
|
|
|
|
-# All tests
|
|
|
-all: $(OUT_DIR) $(PROJ_S19S) $(PROJ_IHEX)
|
|
|
+# All
|
|
|
+all: $(OUT_DIR) $(PROJ_S19) $(PROJ_HEX)
|
|
|
+Release: all
|
|
|
+flash: all
|
|
|
|
|
|
# Make build/output directory
|
|
|
$(OUT_DIR):
|
|
@@ -147,43 +152,20 @@ $(OUT_DIR):
|
|
|
@mkdir $(LIST_DIR)
|
|
|
|
|
|
# Test HEX files (one application build for each test)
|
|
|
-$(PROJ_S19S): %.s19: $(PROJECT).elf
|
|
|
+$(PROJ_S19): %.s19: $(PROJ_ELF)
|
|
|
@echo
|
|
|
@echo Building $@
|
|
|
@$(HEX) $(OUT_DIR)/$(notdir $<) $(OUT_DIR)/$@ --srec --silent
|
|
|
|
|
|
-$(PROJ_IHEX): %.hex: $(PROJECT).elf
|
|
|
+$(PROJ_HEX): %.hex: $(PROJ_ELF)
|
|
|
@echo Building $@
|
|
|
@$(HEX) $(OUT_DIR)/$(notdir $<) $(OUT_DIR)/$@ --ihex --silent
|
|
|
|
|
|
# Test ELF files (one application build for each test)
|
|
|
-$(PROJ_ELFS): %.elf: $(PERIPH_OBJECTS) $(APP_OBJECTS)
|
|
|
+$(PROJ_ELF): %.elf: $(ALL_OBJECTS)
|
|
|
@echo
|
|
|
@echo Linking $@
|
|
|
@$(LINK) $(OBJ_DIR)/*.o $(LINKFLAGS) -o $(OUT_DIR)/$@
|
|
|
-# $(LINK) $(OUT_DIR)/$(notdir $<) $(BUILT_OBJECTS) $(LINKFLAGS) -o $(OUT_DIR)/$@
|
|
|
-
|
|
|
-# Kernel objects builder
|
|
|
-#$(KERNEL_OBJECTS): %.o: $(KERNEL_DIR)/%.c
|
|
|
-# @echo Compiling $@
|
|
|
-# $(CC) $< $(CFLAGS) -I . -I $(PERIPHS_SRC) -o $(OUT_DIR)
|
|
|
-
|
|
|
-# Project objects builder
|
|
|
-#$(PROJ_OBJECTS): %.o: main.c
|
|
|
-# @echo Compiling $@
|
|
|
-# $(CC) $< $(CFLAGS) $(INCLUDES) -o $(OBJ_DIR)
|
|
|
-
|
|
|
-# Peripheral objects builder
|
|
|
-#$(PERIPH_OBJECTS): %.o: %.c
|
|
|
-# @echo
|
|
|
-# @echo Compiling $@
|
|
|
-# @$(CC) $< $(CFLAGS) $(INCLUDES) -o $(OBJ_DIR)
|
|
|
-
|
|
|
-# Application C objects builder
|
|
|
-#$(APP_OBJECTS): %.o: %.c
|
|
|
-# @echo
|
|
|
-# @echo Compiling $@
|
|
|
-# @$(CC) $< $(CFLAGS) $(INCLUDES) -o $(OBJ_DIR)
|
|
|
|
|
|
# All C objects builder
|
|
|
$(ALL_OBJECTS): %.o: %.c
|
|
@@ -191,14 +173,13 @@ $(ALL_OBJECTS): %.o: %.c
|
|
|
@echo Compiling $@
|
|
|
@$(CC) $< $(CFLAGS) $(INCLUDES) -o $(OBJ_DIR)
|
|
|
|
|
|
-# Application asm objects builder
|
|
|
-#$(APP_ASM_OBJECTS): %.o: ./%.s
|
|
|
-# @echo Compiling $@
|
|
|
-# @$(ASM) $< $(ASMFLAGS) $(INCLUDES) -o $(OUT_DIR)/$(notdir $@)
|
|
|
-
|
|
|
# Clean
|
|
|
clean:
|
|
|
rm -f *.o *.elf *.map *.hex *.bin *.lst *.stm8 *.s19 *.out *.s *.lst
|
|
|
rm -rf $(LIST_DIR)
|
|
|
rm -rf $(OBJ_DIR)
|
|
|
rm -rf $(OUT_DIR)
|
|
|
+
|
|
|
+# Flash
|
|
|
+flash:
|
|
|
+ @$(FLASHTOOL) $(FLASHOPT) -FileProg=$(OUT_DIR)\\$(PROJ_HEX)
|