169 lines
4.5 KiB
Makefile
169 lines
4.5 KiB
Makefile
# object files
|
|
STARTUP_SRCS := startup_stm32f10x.c \
|
|
system_stm32f10x.c
|
|
|
|
DRIVER_SRCS := stm32f10x_rcc.c \
|
|
stm32f10x_gpio.c \
|
|
stm32f10x_usart.c \
|
|
misc.c \
|
|
stm32f10x_iwdg.c \
|
|
stm32f10x_spi.c \
|
|
stm32f10x_dma.c \
|
|
stm32f10x_adc.c \
|
|
stm32f10x_i2c.c \
|
|
stm32f10x_tim.c
|
|
|
|
HAL_SRCS := hal_led.c \
|
|
hal_uart.c \
|
|
hal_timeout.c \
|
|
hal_wdt.c \
|
|
hal_delay.c \
|
|
hal_clocksource.c \
|
|
hal_spi.c \
|
|
hal_cc25xx.c \
|
|
hal_io.c \
|
|
hal_adc.c \
|
|
hal_storage.c \
|
|
hal_sbus.c \
|
|
hal_ppm.c \
|
|
hal_soft_serial.c \
|
|
hal_debug.c
|
|
|
|
|
|
# Code Paths
|
|
DEVICE_DIR := $(ARCH_DIR)/device
|
|
CORE_DIR := $(ARCH_DIR)/core
|
|
LINK_DIR := $(ARCH_DIR)/linker
|
|
PERIPH_DIR := $(ARCH_DIR)/peripheral_lib
|
|
|
|
ARCH_SRCS := $(addprefix $(ARCH_DIR)/, $(HAL_SRCS))
|
|
|
|
PERIPH_SRCS := $(addprefix $(PERIPH_DIR)/src/, $(DRIVER_SRCS)) \
|
|
$(addprefix $(DEVICE_DIR)/, $(STARTUP_SRCS))
|
|
|
|
BOARD_SRCS := $(ARCH_SRCS) \
|
|
$(GENERIC_SRCS)
|
|
|
|
ALL_SRCS := $(BOARD_SRCS) \
|
|
$(PERIPH_SRCS)
|
|
|
|
#crystal frequency
|
|
CRYSTAL_FREQ = 12000000
|
|
|
|
# fetch this dir during include
|
|
SELF_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
|
|
|
|
#faster build
|
|
MAKEFLAGS +="-j6 "
|
|
|
|
#opt
|
|
CFLAGS += -O1 -g
|
|
|
|
# Tool path, only override if not set
|
|
TOOLROOT ?=
|
|
|
|
ARM-PREFIX := arm-none-eabi-
|
|
ifneq ($(TOOLROOT),)
|
|
ARM-PREFIX := $(TOOLROOT)/$(ARM-PREFIX)
|
|
endif
|
|
|
|
# Tools
|
|
CC := $(ARM-PREFIX)gcc
|
|
LD := $(ARM-PREFIX)gcc
|
|
AR := $(ARM-PREFIX)ar
|
|
AS := $(ARM-PREFIX)as
|
|
OBJ := $(ARM-PREFIX)objcopy
|
|
SIZE := $(ARM-PREFIX)size
|
|
|
|
INCLUDE_DIRS := $(INCLUDE_DIRS) \
|
|
$(TARGET_DIR) \
|
|
$(CORE_DIR) \
|
|
$(DEVICE_DIR) \
|
|
$(PERIPH_DIR)/inc \
|
|
$(ARCH_DIR)
|
|
|
|
ARCH_HEADERS := $(ARCH_SRCS:.c=.h)
|
|
|
|
|
|
# Search path for standard files
|
|
#vpath %.c ./src
|
|
#vpath %.c $(ARCH_DIR)
|
|
|
|
# Search path for perpheral library
|
|
#vpath %.c $(CORE)
|
|
#vpath %.c $(PERIPH)/src
|
|
#vpath %.c $(DEVICE)
|
|
|
|
# Processor specific
|
|
PTYPE = STM32F10X_MD
|
|
LDSCRIPT = $(LINK_DIR)/stm32f103c8.ld
|
|
|
|
# Compilation Flags
|
|
|
|
FULLASSERT = -DUSE_FULL_ASSERT
|
|
|
|
LDFLAGS += -T$(LDSCRIPT) \
|
|
-mthumb \
|
|
-mcpu=cortex-m3
|
|
|
|
CFLAGS += -mcpu=cortex-m3 \
|
|
-mthumb \
|
|
-DHSE_VALUE=$(CRYSTAL_FREQ) \
|
|
$(addprefix -I,$(INCLUDE_DIRS)) \
|
|
-D$(PTYPE) \
|
|
-DUSE_STDPERIPH_DRIVER \
|
|
$(FULLASSERT) \
|
|
-DBUILD_TARGET=$(TARGET_LC)
|
|
|
|
OPENOCD_PIDFILE = /tmp/openocd_opensky.pid
|
|
|
|
TARGET_OBJS = $(addsuffix .o,$(addprefix $(OBJECT_DIR)/$(TARGET)/,$(basename $(ALL_SRCS))))
|
|
TARGET_DEPS = $(addsuffix .d,$(addprefix $(OBJECT_DIR)/$(TARGET)/,$(basename $(ALL_SRCS))))
|
|
TARGET_ELF = $(OBJECT_DIR)/$(RESULT).elf
|
|
TARGET_BIN = $(OBJECT_DIR)/$(RESULT).bin
|
|
TARGET_HEX = $(OBJECT_DIR)/$(RESULT).hex
|
|
|
|
# Build executable
|
|
board: $(TARGET_HEX)
|
|
|
|
$(TARGET_ELF): $(TARGET_OBJS)
|
|
$(V1) exit
|
|
$(V1) echo Linking: $(TARGET)
|
|
$(V1) $(LD) -o $@ $^ $(LDFLAGS)
|
|
$(V0) $(SIZE) $(TARGET_ELF)
|
|
|
|
$(TARGET_BIN): $(TARGET_ELF)
|
|
$(V1) $(OBJ) -O binary $< $@
|
|
|
|
$(TARGET_HEX): $(TARGET_ELF)
|
|
$(V1) $(OBJ) -O ihex $< $@
|
|
|
|
$(OBJECT_DIR)/$(TARGET)/%.o: %.c
|
|
$(V1) mkdir -p $(dir $@)
|
|
$(V1) echo "%% $(notdir $<)" "$(STDOUT)" && \
|
|
$(CC) -c -o $@ $(CFLAGS) $<
|
|
|
|
$(OBJECT_DIR)/$(TARGET)/%.o: %.s
|
|
$(V1) mkdir -p $(dir $@)
|
|
$(V1) echo "%% $(notdir $<)" "$(STDOUT)"
|
|
$(V1) $(CC) -c $(CFLAGS) $(DEPFLAGS) $< -o $@
|
|
|
|
clean:
|
|
$(V1) echo Cleaning: $(TARGET)
|
|
$(V1) rm -f $(OBJECT_DIR)/$(TARGET)/*.o $(OBJECT_DIR)/$(TARGET)/*.d $(OBJECT_DIR)/*.elf $(OBJECT_DIR)/*.bin
|
|
|
|
debug: $(TARGET_ELF)
|
|
openocd -f /usr/share/openocd/scripts/interface/stlink-v2.cfg -f /usr/share/openocd/scripts/target/stm32f1x.cfg & echo $$! > $(OPENOCD_PIDFILE)
|
|
sleep 1
|
|
arm-none-eabi-gdb --eval-command="target remote localhost:3333" $(TARGET_ELF)
|
|
if [ -a $(OPENOCD_PIDFILE) ]; then kill `cat $(OPENOCD_PIDFILE)`; fi;
|
|
|
|
unlock:
|
|
openocd -f /usr/share/openocd/scripts/interface/stlink-v2.cfg -f /usr/share/openocd/scripts/target/stm32f1x.cfg -c "init" -c "reset halt" -c "stm32f1x unlock 0" -c "reset run" -c "exit"
|
|
|
|
flash : $(TARGET_BIN)
|
|
if [ -a $(OPENOCD_PIDFILE) ]; then kill `cat $(OPENOCD_PIDFILE)`; fi;
|
|
st-flash write $(TARGET_BIN) 0x8000000
|
|
|
|
.PHONY: board clean flash debug
|