123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- ######################################
- # STM32F0xx Makefile
- ######################################
- ######################################
- # target
- ######################################
- TARGET = El12
- ######################################
- # programmator
- ######################################
- PROGRAMMATOR = "C:/ARM/STMicroelectronics/STM32 ST-LINK Utility/ST-LINK Utility/ST-LINK_CLI.exe"
- ######################################
- # building variables
- ######################################
- # debug build?
- DEBUG = 0
- #######################################
- # paths
- #######################################
- # source path
- VPATH = src MCU
- # firmware library path
- PERIPHLIBPATH = MCU
- VPATH += $(PERIPHLIBPATH)/CMSIS/Device/ST/STM32F0xx/Source
- # Build path
- BUILD_DIR = build
- # #####################################
- # source
- # #####################################
- SRCS = \
- main.c \
- board.c \
- rtos.c \
- i2c.c \
- ds3231.c \
- system_stm32f0xx.c
-
- SRCSASM = startup_stm32f030x6.s
- # #####################################
- # firmware library
- # #####################################
- PERIPHLIB_SOURCES =
- #######################################
- # binaries
- #######################################
- CC = arm-none-eabi-gcc
- AS = arm-none-eabi-gcc -x assembler-with-cpp
- CP = arm-none-eabi-objcopy
- AR = arm-none-eabi-ar
- SZ = arm-none-eabi-size
- HEX = $(CP) -O ihex
- BIN = $(CP) -O binary -S
-
- #######################################
- # CFLAGS
- #######################################
- # macros for gcc
- DEFS = -DSTM32F030 -DSTM32F030x6
- ifeq ($(DEBUG), 1)
- DEFS += -DDEBUG -D_DEBUG
- endif
- # includes for gcc
- INCLUDES = -I./inc
- INCLUDES += -I$(PERIPHLIBPATH)/CMSIS/Include
- INCLUDES += -I$(PERIPHLIBPATH)/CMSIS/Device/ST/STM32F0xx/Include
- # optimization
- ifeq ($(DEBUG), 1)
- OPT = -O0 -ggdb
- else
- OPT = -O2
- endif
- OPT += -ffunction-sections -fdata-sections
- OPT += -fomit-frame-pointer -falign-functions=16
- OPT += -fno-strict-aliasing -ffast-math -msoft-float -mfloat-abi=soft
- # compile gcc flags
- CFLAGS = -mthumb -mcpu=cortex-m0 -mtune=cortex-m0 $(DEFS) $(INCLUDES) $(OPT)
- ifeq ($(DEBUG), 1)
- CFLAGS += -g -gdwarf-2
- endif
- # Generate dependency information
- CFLAGS += -MD -MP -MF .dep/$(@F).d
- CFLAGS += -std=gnu99 -Wall -pedantic
- #######################################
- # LDFLAGS
- #######################################
- # link script
- LDSCRIPT = MCU/STM32F030K6_FLASH.ld
- # libraries
- LIBS = -lc -lm -lnosys
- LIBDIR =
- LDFLAGS = -mthumb -mcpu=cortex-m0 -specs=nano.specs -T$(LDSCRIPT) $(LIBS) -Wl,-Map=$(BUILD_DIR)/$(TARGET).map,--cref -Wl,--gc-sections
- # default action: build all
- all: $(BUILD_DIR)/$(TARGET).elf $(BUILD_DIR)/$(TARGET).hex
- load: $(BUILD_DIR)/$(TARGET).hex mcu_prog
- #######################################
- # build the application
- #######################################
- # list of firmware library objects
- PERIPHLIB_OBJECTS = $(addprefix $(BUILD_DIR)/,$(notdir $(PERIPHLIB_SOURCES:.c=.o)))
- # list of C program objects
- OBJECTS = $(addprefix $(BUILD_DIR)/,$(notdir $(SRCS:.c=.o)))
- # list of ASM program objects
- OBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(SRCSASM:.s=.o)))
- $(BUILD_DIR)/%.o: %.c Makefile | $(BUILD_DIR)
- @echo Compiling: $<
- @$(CC) -c $(CFLAGS) $< -o $@
- $(BUILD_DIR)/%.o: %.s Makefile | $(BUILD_DIR)
- @echo Compiling asm: $<
- @$(AS) -c $(CFLAGS) $< -o $@
- $(BUILD_DIR)/$(TARGET).elf: $(OBJECTS) $(PERIPHLIB_OBJECTS) Makefile
- @echo Linking: $@
- @$(CC) $(OBJECTS) $(PERIPHLIB_OBJECTS) $(LDFLAGS) -o $@
- @echo '--------------------------------------------------------------------'
- @$(SZ) $@
- @rm -f $(BUILD_DIR)/*.o
-
- $(BUILD_DIR)/%.hex: $(BUILD_DIR)/%.elf | $(BUILD_DIR)
- @$(HEX) $< $@
-
- $(BUILD_DIR):
- @mkdir -p $@
- #######################################
- # Load firmware
- #######################################
- mcu_prog:
- @$(PROGRAMMATOR) -c SWD -ME
- @$(PROGRAMMATOR) -c SWD -P "$(BUILD_DIR)/$(TARGET).hex" -V "$(BUILD_DIR)/$(TARGET).hex" -Q -Rst -Run
-
- #######################################
- # reset mcu
- #######################################
- mcu_reset:
- @$(PROGRAMMATOR) -c SWD -Rst -Run
- #######################################
- # delete all user application files
- #######################################
- clean:
- @-rm -fR .dep $(BUILD_DIR)
-
- #######################################
- # custom
- #######################################
- flash: all
- @flash.cmd
- default: all
- #
- # Include the dependency files, should be the last of the makefile
- #
- -include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)
- # *** EOF ***
|