diff --git a/examples/Makefile b/examples/Makefile deleted file mode 100644 index 88b34ba..0000000 --- a/examples/Makefile +++ /dev/null @@ -1,119 +0,0 @@ -# Makefile for Nucleo-H563ZI test project - -SHELL := /usr/bin/env bash - -# directories -BUILD_DIR := ./build -OBJ_DIR := $(BUILD_DIR)/.obj -SRC_DIR := ./source -INC_DIR := ./include -COMMON_DIR := ../common -SYS_DIR := $(COMMON_DIR)/system-files -STUBS_DIR := $(COMMON_DIR)/libc-stubs -CMD_DIR := $(COMMON_DIR)/jlink-commands - -# output -TARGET := debounce - -# hardware -DEVICE := STM32H573II - -# include c sources list -AS_SOURCES := -C_SOURCES := -include ./src.mk - -# compiler commands -PREFIX := arm-none-eabi- -CC := $(PREFIX)gcc -CP := $(PREFIX)objcopy -SZ := $(PREFIX)size -HEX := $(CP) -O ihex -BIN := $(CP) -O binary -S - -# compiler flags -TARGET_FLAGS := -mcpu=cortex-m33 \ - -mfpu=fpv4-sp-d16 \ - -mfloat-abi=hard \ - -specs=nano.specs \ - -mthumb \ - -mlittle-endian -COMP_FLAGS := -Wall -Wextra -fdata-sections -ffunction-sections - -OPT := -Og -DEBUG := 1 -ifeq ($(DEBUG), 1) - DBG_FLAGS := -g -else - DBG_FLAGS := -endif - -AS_DEFS := -DSTM32H563xx -AS_INC := -AS_FLAGS := -x assembler-with-cpp $(TARGET_FLAGS) $(AS_DEFS) $(AS_INC) $(OPT) $(DBG_FLAGS) $(COMP_FLAGS) - -C_DEFS := -DSTM32H563xx -C_INC := -I$(INC_DIR) \ - -I$(COMMON_DIR)/CMSIS/Device/ST/STM32H5xx/Include \ - -I$(COMMON_DIR)/CMSIS/Include \ - -I$(COMMON_DIR)/HAL -C_FLAGS := $(TARGET_FLAGS) $(C_DEFS) $(C_INC) $(OPT) $(DBG_FLAGS) $(COMP_FLAGS) - -LIBS := -lc -lm -lnosys -LD_SCRIPT := $(SYS_DIR)/STM32H563xx_FLASH.ld -LD_FLAGS := $(TARGET_FLAGS) -T$(LD_SCRIPT) $(LIB_DIR) $(LIBS) -Wl,--gc-sections - -# object files -OBJECTS := $(addprefix $(OBJ_DIR)/,$(notdir $(C_SOURCES:.c=.o))) -vpath %.c $(sort $(dir $(C_SOURCES))) -OBJECTS += $(addprefix $(OBJ_DIR)/,$(notdir $(AS_SOURCES:.s=.o))) -vpath %.s $(sort $(dir $(AS_SOURCES))) - -# rules -.PHONY: all clean rebuild test - -all: $(BUILD_DIR)/$(TARGET).elf $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).bin - -# build objects from c files -$(OBJ_DIR)/%.o: %.c $(SOURCE_LIST) | $(OBJ_DIR) - $(CC) -c $(C_FLAGS) $< -o $@ - -# build objects from assembly files -$(OBJ_DIR)/%.o: %.s $(SOURCE_LIST) | $(OBJ_DIR) - $(CC) -c $(AS_FLAGS) $< -o $@ - -# build binary file -$(BUILD_DIR)/$(TARGET).elf: $(OBJECTS) $(SOURCE_LIST) | $(OBJ_DIR) - $(CC) $(OBJECTS) $(LD_FLAGS) -o $@ - $(SZ) $@ - -# generate .hex file -$(BUILD_DIR)/%.hex: $(BUILD_DIR)/%.elf | $(OBJ_DIR) - $(HEX) $< $@ - -# generate .bin file -$(BUILD_DIR)/%.bin: $(BUILD_DIR)/%.elf | $(OBJ_DIR) - $(BIN) $< $@ - -# ensure that the build dir exists -$(OBJ_DIR): - @mkdir -p $@ - -clean: | $(OBJ_DIR) - @rm -rf $(BUILD_DIR)/*.{elf,hex,bin} - @rm -rf $(OBJ_DIR)/* - @echo "output files deleted" - -flash: all $(BUILD_DIR)/flash.jlink - JLinkExe -Device $(DEVICE) -NoGui 1 -ExitOnError 1 -CommandFile $(BUILD_DIR)/flash.jlink - -# add path to binary to the jlink command file -$(BUILD_DIR)/flash.jlink: $(CMD_DIR)/flash.jlink - $(shell cat $(CMD_DIR)/flash.jlink | sed "s||$(BUILD_DIR)/$(TARGET).hex|g" > $(BUILD_DIR)/flash.jlink) - -rebuild: clean all - -test: - @echo "assembly source files: $(AS_SOURCES)" - @echo "c source files: $(C_SOURCES)" - @echo "object files: $(OBJECTS)" diff --git a/examples/make/Makefile b/examples/make/Makefile index 39308d9..0d5d78b 100644 --- a/examples/make/Makefile +++ b/examples/make/Makefile @@ -1,20 +1,27 @@ -# Makefile for Nucleo-L552ZE-Q test project +# Makefile for Nucleo-H563ZI test project SHELL := /usr/bin/env bash # directories -BUILD_DIR := ./build -OBJ_DIR := $(BUILD_DIR)/.obj -SRC_DIR := ./src -INC_DIR := ./inc +BUILD_DIR := ./build +OBJ_DIR := $(BUILD_DIR)/.obj +SRC_DIR := ./source +INC_DIR := ./include +COMMON_DIR := ../common +SYS_DIR := $(COMMON_DIR)/system-files +STUBS_DIR := $(COMMON_DIR)/libc-stubs +CMD_DIR := ./ # output -TARGET := testapp +TARGET := debounce + +# hardware +DEVICE := STM32H573II # include c sources list -C_SOURCES = -SOURCE_LIST := $(SRC_DIR)/sources.mk -include $(SOURCE_LIST) +AS_SOURCES := +C_SOURCES := +include ./src.mk # compiler commands PREFIX := arm-none-eabi- @@ -41,18 +48,19 @@ else DBG_FLAGS := endif -AS_DEFS := -DSTM32L552xx +AS_DEFS := -DSTM32H563xx AS_INC := AS_FLAGS := -x assembler-with-cpp $(TARGET_FLAGS) $(AS_DEFS) $(AS_INC) $(OPT) $(DBG_FLAGS) $(COMP_FLAGS) -C_DEFS := -DSTM32L552xx +C_DEFS := -DSTM32H563xx C_INC := -I$(INC_DIR) \ - -I./drivers/CMSIS/Device/ST/STM32L5xx/Include \ - -I./drivers/CMSIS/Include + -I$(COMMON_DIR)/CMSIS/Device/ST/STM32H5xx/Include \ + -I$(COMMON_DIR)/CMSIS/Include \ + -I$(COMMON_DIR)/HAL C_FLAGS := $(TARGET_FLAGS) $(C_DEFS) $(C_INC) $(OPT) $(DBG_FLAGS) $(COMP_FLAGS) LIBS := -lc -lm -lnosys -LD_SCRIPT := STM32L552xE_FLASH.ld +LD_SCRIPT := $(SYS_DIR)/STM32H563xx_FLASH.ld LD_FLAGS := $(TARGET_FLAGS) -T$(LD_SCRIPT) $(LIB_DIR) $(LIBS) -Wl,--gc-sections # object files @@ -62,7 +70,7 @@ OBJECTS += $(addprefix $(OBJ_DIR)/,$(notdir $(AS_SOURCES:.s=.o))) vpath %.s $(sort $(dir $(AS_SOURCES))) # rules -.PHONY: all clean test +.PHONY: all clean rebuild test all: $(BUILD_DIR)/$(TARGET).elf $(BUILD_DIR)/$(TARGET).hex $(BUILD_DIR)/$(TARGET).bin @@ -89,13 +97,23 @@ $(BUILD_DIR)/%.bin: $(BUILD_DIR)/%.elf | $(OBJ_DIR) # ensure that the build dir exists $(OBJ_DIR): - @mkdir $@ + @mkdir -p $@ clean: | $(OBJ_DIR) - @rm -rf $(BUILD_DIR)/* + @rm -rf $(BUILD_DIR)/*.{elf,hex,bin} + @rm -rf $(OBJ_DIR)/* @echo "output files deleted" +flash: all $(BUILD_DIR)/flash.jlink + JLinkExe -Device $(DEVICE) -NoGui 1 -ExitOnError 1 -CommandFile $(BUILD_DIR)/flash.jlink + +# add path to binary to the jlink command file +$(BUILD_DIR)/flash.jlink: $(CMD_DIR)/flash.jlink + $(shell cat $(CMD_DIR)/flash.jlink | sed "s||$(BUILD_DIR)/$(TARGET).hex|g" > $(BUILD_DIR)/flash.jlink) + +rebuild: clean all + test: - @echo "$(AS_SOURCES)" - @echo "$(C_SOURCES)" - @echo "$(OBJECTS)" + @echo "assembly source files: $(AS_SOURCES)" + @echo "c source files: $(C_SOURCES)" + @echo "object files: $(OBJECTS)" diff --git a/examples/make/flash.jlink b/examples/make/flash.jlink new file mode 100644 index 0000000..7a6ec80 --- /dev/null +++ b/examples/make/flash.jlink @@ -0,0 +1,11 @@ +selectinterface SWD +speed 4000 + +reset +halt + +/* the command file is a dummy replace by a makefile rule */ +/* correct path to the binary */ +loadfile + +exit