THB2/ota_boot/Makefile

138 lines
4.2 KiB
Makefile

##############################################################################
PROJECT_NAME ?= ota_upboot
#POJECT_DEF ?= -DDEVICE=DEVICE_THB2
##############################################################################
COM_PORT = COM11
##############################################################################
# Source
SRC_PATH = ./source
SRC_PRJ = main.c
INCLUDES = -I$(SRC_PATH)
INCLUDES += -I$(SRC_PATH)/include
INCLUDES += -I$(SRC_PATH)/misc
INCLUDES += -I$(SRC_PATH)/misc/CMSIS/include
INCLUDES += -I$(SRC_PATH)/misc/CMSIS/device/phyplus
STARTUP_ASM = $(SRC_PATH)/misc/CMSIS/device/phyplus/phy6222_start.s
SRCS = $(addprefix $(SRC_PATH)/, $(SRC_PRJ))
SRCS += $(SRC_PATH)/misc/CMSIS/device/phyplus/phy6222_vectors.c
##############################################################################
DEFINES += -D__GCC
DEFINES += $(POJECT_DEF)
DEFINES += -DPHY_MCU_TYPE=MCU_BUMBEE_M0
##############################################################################
BIN_DIR = ./bin
OBJ_DIR = ./build
PYTHON = python3
GCC_PATH =
CC = $(GCC_PATH)arm-none-eabi-gcc
OBJCOPY = $(GCC_PATH)arm-none-eabi-objcopy
OBJDUMP = $(GCC_PATH)arm-none-eabi-objdump
SIZE = $(GCC_PATH)arm-none-eabi-size
READELF = $(GCC_PATH)arm-none-eabi-readelf
##############################################################################
ARCH_FLAGS := -mcpu=cortex-m0 -mthumb -mthumb-interwork
OPT_CFLAGS ?= -Os
DEB_CFLAGS ?= -g3 -ggdb
##############################################################################
ASFLAGS := $(ARCH_FLAGS) $(OPT_CFLAGS) $(DEB_CFLAGS)
CFLAGS := $(ARCH_FLAGS) $(OPT_CFLAGS) $(DEB_CFLAGS)
CFLAGS += -W -Wall --std=gnu99
CFLAGS += -fno-diagnostics-show-caret
CFLAGS += -fdata-sections -ffunction-sections
CFLAGS += -funsigned-char -funsigned-bitfields
#CFLAGS += -fpack-struct
#CFLAGS += -mno-unaligned-access
#CFLAGS += -munaligned-access
CFLAGS += -fms-extensions
CFLAGS += -specs=nosys.specs
CFLAGS += -Wl,--gc-sections
LDSCRIPT ?= $(SRC_PATH)/misc/ota_upboot.ld
#BIN_OTA = $(OBJ_DIR)/$(PROJECT_NAME).bin
BIN_OTA = ./$(PROJECT_NAME).add
LDFLAGS := $(ARCH_FLAGS)
LDFLAGS += --static -nostartfiles -nostdlib
LDFLAGS += -Wl,--gc-sections
LDFLAGS += -Wl,--script=$(LDSCRIPT)
LDFLAGS += -Wl,--just-symbols=$(SRC_PATH)/misc/bb_rom_sym_m0.gcc
LDFLAGS += -Wl,-Map=$(OBJ_DIR)/$(PROJECT_NAME).map
LIBS += -Wl,--start-group -lgcc -lnosys -Wl,--end-group
##############################################################################
CFLAGS += $(DEFINES) $(INCLUDES)
#SRC_O = $(patsubst %.c,%.o,$(patsubst sdk/%, $(SRC_PATH)%, $(SRCS)))
SRC_O = $(SRCS:%.c=%.o) $(STARTUP_ASM:%.s=%.o)
OBJS = $(patsubst %, $(OBJ_DIR)/%, $(patsubst ./%, %, $(SRC_O)))
DEPENDENCY_LIST = $(OBJS:%o=%d)
##############################################################################
.PHONY: all directory clean size flash erase_and_flash
all: directory $(SRC_O) $(OBJ_DIR)/$(PROJECT_NAME).elf $(OBJ_DIR)/$(PROJECT_NAME).hex $(BIN_OTA) $(OBJ_DIR)/$(PROJECT_NAME).asm size
%.elf %.map: $(SRC_O) $(LDSCRIPT) Makefile
@echo LD: $@
@$(CC) $(LDFLAGS) $(OBJS) $(LIBS) -o $@
%.hex: %.elf
@echo OBJCOPY: $@
@$(OBJCOPY) -O ihex $^ $@
%.add: %.hex
@echo Make: $@
$(PYTHON) ./phy62x2_ota.py -o $(BIN_OTA) $(OBJ_DIR)/$(PROJECT_NAME).hex
%.asm: %.elf
@echo OBJDUMP: $@
@$(OBJDUMP) -s -S $^ >$@
%.o : %.c
@echo CC: $<
@mkdir -p $(OBJ_DIR)/$(dir $@)
@$(CC) $(CFLAGS) $(INCFLAGS) -c $< -o $(OBJ_DIR)/$@
@$(CC) -MM $(CFLAGS) $(INCFLAGS) $< -MT $@ -MF $(OBJ_DIR)/$(patsubst %.o,%.d,$@)
%.o : %.s
@echo CC: $<
@mkdir -p $(OBJ_DIR)/$(dir $@)
@$(CC) $(CFLAGS) $(INCFLAGS) -c $< -o $(OBJ_DIR)/$@
@$(CC) -MM $(CFLAGS) $(INCFLAGS) $< -MT $@ -MF $(OBJ_DIR)/$(patsubst %.o,%.d,$@)
flash:
@$(PYTHON) ./rdwr_phy62x2.py -p$(COM_PORT) -b 1000000 -r wh $(OBJ_DIR)/$(PROJECT_NAME).hex
flash_ota:
@$(PYTHON) ./rdwr_phy62x2.py -p$(COM_PORT) -b 1000000 -r we 0x10000 $(BIN_OTA)
erase_and_flash:
@$(PYTHON) ./rdwr_phy62x2.py -p$(COM_PORT) -b 1000000 -e -r wh $(OBJ_DIR)/$(PROJECT_NAME).hex
reset:
@$(PYTHON) ./rdwr_phy62x2.py -p$(COM_PORT) -r i
directory:
@mkdir -p $(OBJ_DIR)
size: $(OBJ_DIR)/$(PROJECT_NAME).elf
@echo size:
@$(SIZE) -t $^
@$(READELF) -l $^
@echo
clean:
@echo clean
@-rm -rf $(OBJ_DIR)
-include $(DEPENDENCY_LIST)
VPATH:=$(OBJ_DIR)