* Boot: switch to DFU routines. Implements #132 part 1 of 2. * Boot: boot to DFU shortcut, hard reset USB on each boot. Implements #132 part 2 of 2. * Deploy scripts: fix path for deploy dfu. * Bootloader: initial version. Target_f2: rebase, update deployment scripts. * Bootloader: cleanup, refactor switch2 proc. Readme,wiki: document bootloader. * Wiki: deploy symlinks as files, bootloader info. * Target_f2: valid flash size in linker script. * Github CI: bootloader build and artifacts. * Bootloader: rename platforms to targets. * Bootloader: change dfu/os colors. * disable set -e * lint code * add bootloader testing page Co-authored-by: Aleksandr Kutuzov <aku@plooks.com> Co-authored-by: aanper <mail@s3f.ru>
		
			
				
	
	
		
			98 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
PROJECT			= bootloader
 | 
						|
 | 
						|
SRC_DIR			= src
 | 
						|
OBJ_DIR			= .obj
 | 
						|
 | 
						|
ASM_SOURCES		= $(wildcard $(SRC_DIR)/*.s)
 | 
						|
C_SOURCES		= $(wildcard $(SRC_DIR)/*.c)
 | 
						|
CPP_SOURCES		= $(wildcard $(SRC_DIR)/*.cpp)
 | 
						|
 | 
						|
# 
 | 
						|
TARGET			?= f2
 | 
						|
TARGET_DIR		= targets/$(TARGET)
 | 
						|
include			$(TARGET_DIR)/target.mk
 | 
						|
CFLAGS			+= -Itargets/include
 | 
						|
C_SOURCES		+= $(wildcard $(TARGET_DIR)/*.c)
 | 
						|
 | 
						|
DEBUG ?= 1
 | 
						|
ifeq ($(DEBUG), 1)
 | 
						|
CFLAGS += -DDEBUG -g
 | 
						|
else
 | 
						|
CFLAGS += -DNDEBUG -Os
 | 
						|
endif
 | 
						|
 | 
						|
PREFIX = arm-none-eabi-
 | 
						|
ifdef GCC_PATH
 | 
						|
CC	= $(GCC_PATH)/$(PREFIX)gcc
 | 
						|
CPP	= $(GCC_PATH)/$(PREFIX)g++
 | 
						|
AS	= $(GCC_PATH)/$(PREFIX)gcc -x assembler-with-cpp
 | 
						|
CP	= $(GCC_PATH)/$(PREFIX)objcopy
 | 
						|
SZ	= $(GCC_PATH)/$(PREFIX)size
 | 
						|
else
 | 
						|
CC	= $(PREFIX)gcc
 | 
						|
CPP	= $(PREFIX)g++
 | 
						|
AS	= $(PREFIX)gcc -x assembler-with-cpp
 | 
						|
CP	= $(PREFIX)objcopy
 | 
						|
SZ	= $(PREFIX)size
 | 
						|
endif
 | 
						|
HEX	= $(CP) -O ihex
 | 
						|
BIN	= $(CP) -O binary -S
 | 
						|
 | 
						|
$(shell mkdir -p $(OBJ_DIR))
 | 
						|
 | 
						|
OBJECTS = $(addprefix $(OBJ_DIR)/,$(notdir $(C_SOURCES:.c=.o)))
 | 
						|
vpath %.c $(sort $(dir $(C_SOURCES)))
 | 
						|
 | 
						|
OBJECTS += $(addprefix $(OBJ_DIR)/,$(notdir $(ASM_SOURCES:.s=.o)))
 | 
						|
vpath %.s $(sort $(dir $(ASM_SOURCES)))
 | 
						|
 | 
						|
OBJECTS += $(addprefix $(OBJ_DIR)/,$(notdir $(CPP_SOURCES:.cpp=.o)))
 | 
						|
vpath %.cpp $(sort $(dir $(CPP_SOURCES)))
 | 
						|
 | 
						|
DEPS = $(OBJECTS:.o=.d)
 | 
						|
 | 
						|
CFLAGS += -MMD -MP -MF"$(@:%.o=%.d)"
 | 
						|
CPPFLAGS = -fno-threadsafe-statics
 | 
						|
 | 
						|
all: $(OBJ_DIR)/$(PROJECT).elf $(OBJ_DIR)/$(PROJECT).hex $(OBJ_DIR)/$(PROJECT).bin
 | 
						|
 | 
						|
$(OBJ_DIR)/$(PROJECT).elf: $(OBJECTS)
 | 
						|
	@echo "\tLD\t" $@
 | 
						|
	@$(CC) $(LDFLAGS) $(OBJECTS) -o $@
 | 
						|
	$(SZ) $@
 | 
						|
 | 
						|
$(OBJ_DIR)/$(PROJECT).hex: $(OBJ_DIR)/$(PROJECT).elf
 | 
						|
	@echo "\tHEX\t" $@
 | 
						|
	@$(HEX) $< $@
 | 
						|
	
 | 
						|
$(OBJ_DIR)/$(PROJECT).bin: $(OBJ_DIR)/$(PROJECT).elf
 | 
						|
	@echo "\tBIN\t" $@
 | 
						|
	@$(BIN) $< $@
 | 
						|
 | 
						|
$(OBJ_DIR)/%.o: %.c
 | 
						|
	@echo "\tCC\t" $@
 | 
						|
	@$(CC) $(CFLAGS) -c $< -o $@
 | 
						|
 | 
						|
$(OBJ_DIR)/%.o: %.s
 | 
						|
	@echo "\tASM\t" $@
 | 
						|
	@$(AS) $(CFLAGS) -c $< -o $@
 | 
						|
 | 
						|
$(OBJ_DIR)/%.o: %.cpp
 | 
						|
	@echo "\tCPP\t" $@
 | 
						|
	@$(CPP) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
 | 
						|
 | 
						|
flash: $(OBJ_DIR)/$(PROJECT).bin
 | 
						|
	st-flash --reset write $(OBJ_DIR)/$(PROJECT).bin $(BOOT_ADDRESS)
 | 
						|
 | 
						|
debug:
 | 
						|
	st-util & arm-none-eabi-gdb -ex "PROJECT extended-remote 127.0.0.1:4242" $(OBJ_DIR)/$(PROJECT).elf
 | 
						|
 | 
						|
clean:
 | 
						|
	$(RM) $(OBJ_DIR)/*
 | 
						|
 | 
						|
zz: | clean flash
 | 
						|
 | 
						|
zzz: | clean flash debug
 | 
						|
 | 
						|
-include $(DEPS)
 |