From da59c941ec116bb9c762aec116647d006212b296 Mon Sep 17 00:00:00 2001 From: Edward Emelianov Date: Wed, 18 Jan 2023 23:36:26 +0300 Subject: [PATCH] add structured Makefile --- F0:F030,F042,F072/3steppersLB/Makefile | 158 +-------------- F0:F030,F042,F072/3steppersLB/Makefile.old | 156 ++++++++++++++ F0:F030,F042,F072/CANBUS_SSI/Makefile | 160 +-------------- F0:F030,F042,F072/CANBUS_SSI/Makefile.old | 155 ++++++++++++++ F0:F030,F042,F072/CANBUS_SSI/canstepper.bin | Bin 13252 -> 12392 bytes F0:F030,F042,F072/CANBUS_SSI/version.inc | 2 + F0:F030,F042,F072/PL2303_ringbuffer/Makefile | 156 +------------- .../PL2303_ringbuffer/Makefile.old | 154 ++++++++++++++ .../PL2303_ringbuffer/PL2303.bin | Bin 6784 -> 6768 bytes F0:F030,F042,F072/makefile.f0 | 5 + F0:F030,F042,F072/usbcan/Makefile | 149 +------------- F0:F030,F042,F072/usbcan/Makefile.old | 147 ++++++++++++++ F0:F030,F042,F072/usbcan/usbcan.bin | Bin 11592 -> 11856 bytes F0:F030,F042,F072/usbcan/version.inc | 2 + F0:F030,F042,F072/usbcan_ringbuffer/Makefile | 163 +-------------- .../usbcan_ringbuffer/Makefile.old | 161 +++++++++++++++ .../usbcan_ringbuffer/usbcan.bin | Bin 11256 -> 11168 bytes F1:F103/Canon_managing_device/Makefile | 154 +------------- F1:F103/Canon_managing_device/Makefile.old | 151 ++++++++++++++ F1:F103/Canon_managing_device/canonusb.bin | Bin 7944 -> 7996 bytes F1:F103/PL2303_ringbuffer/Makefile | 154 +------------- F1:F103/PL2303_ringbuffer/Makefile.old | 151 ++++++++++++++ F1:F103/PL2303_ringbuffer/PL2303.bin | Bin 6864 -> 6660 bytes F1:F103/makefile.f1 | 7 + F3:F303/PL2303/Makefile | 189 +---------------- F3:F303/floatPrintf/Makefile | 190 +----------------- F3:F303/makefile.f3 | 7 + TODO | 2 +- makefile.stm32 | 176 ++++++++++++++++ 29 files changed, 1325 insertions(+), 1424 deletions(-) create mode 100644 F0:F030,F042,F072/3steppersLB/Makefile.old create mode 100644 F0:F030,F042,F072/CANBUS_SSI/Makefile.old create mode 100644 F0:F030,F042,F072/CANBUS_SSI/version.inc create mode 100644 F0:F030,F042,F072/PL2303_ringbuffer/Makefile.old create mode 100644 F0:F030,F042,F072/makefile.f0 create mode 100644 F0:F030,F042,F072/usbcan/Makefile.old mode change 100644 => 100755 F0:F030,F042,F072/usbcan/usbcan.bin create mode 100644 F0:F030,F042,F072/usbcan/version.inc create mode 100644 F0:F030,F042,F072/usbcan_ringbuffer/Makefile.old create mode 100644 F1:F103/Canon_managing_device/Makefile.old create mode 100644 F1:F103/PL2303_ringbuffer/Makefile.old create mode 100644 F1:F103/makefile.f1 create mode 100644 F3:F303/makefile.f3 create mode 100644 makefile.stm32 diff --git a/F0:F030,F042,F072/3steppersLB/Makefile b/F0:F030,F042,F072/3steppersLB/Makefile index a43912c..3deffe6 100644 --- a/F0:F030,F042,F072/3steppersLB/Makefile +++ b/F0:F030,F042,F072/3steppersLB/Makefile @@ -1,156 +1,8 @@ -BINARY = steppers -BOOTPORT ?= /dev/ttyUSB0 -BOOTSPEED ?= 57600 -# MCU FAMILY -FAMILY ?= F0 +BINARY := steppers # MCU code -MCU ?= F072xB -#DEFS += -DEBUG +MCU := F072xB # change this linking script depending on particular MCU model, -# for example, if you have STM32F103VBT6, you should write: -LDSCRIPT ?= stm32f072B.ld +LDSCRIPT := stm32f072B.ld -# autoincremental version & build date -VERSION_FILE = version.inc -NEXTVER := $(shell expr $$(awk '/#define BUILD_NUMBER/' $(VERSION_FILE) | tr -cd "[0-9]") + 1) -BUILDDATE := $(shell date +%Y-%m-%d) - -INDEPENDENT_HEADERS= - -FP_FLAGS ?= -msoft-float -ASM_FLAGS = -mthumb -mcpu=cortex-m0 -march=armv6-m -mtune=cortex-m0 -ARCH_FLAGS = $(ASM_FLAGS) $(FP_FLAGS) - -############################################################################### -# Executables -OPREFIX ?= /opt/bin/arm-none-eabi -#PREFIX ?= /usr/x86_64-pc-linux-gnu/arm-none-eabi/gcc-bin/7.3.0/arm-none-eabi -PREFIX ?= $(OPREFIX) - -RM := rm -f -RMDIR := rmdir -CC := $(PREFIX)-gcc -LD := $(PREFIX)-gcc -AR := $(PREFIX)-ar -AS := $(PREFIX)-as -OBJCOPY := $(OPREFIX)-objcopy -OBJDUMP := $(OPREFIX)-objdump -GDB := $(OPREFIX)-gdb -STFLASH := $(shell which st-flash) -STBOOT := $(shell which stm32flash) -DFUUTIL := $(shell which dfu-util) - -############################################################################### -# Source files -OBJDIR = mk -LDSCRIPT ?= $(BINARY).ld -SRC := $(wildcard *.c) -OBJS := $(addprefix $(OBJDIR)/, $(SRC:%.c=%.o)) -STARTUP = $(OBJDIR)/startup.o -OBJS += $(STARTUP) -DEPS := $(OBJS:.o=.d) - -INC_DIR ?= ../inc - -INCLUDE := -I$(INC_DIR)/Fx -I$(INC_DIR)/cm -LIB_DIR := $(INC_DIR)/ld - -############################################################################### -# C flags -CFLAGS += -O2 -g -MD -D__thumb2__=1 -CFLAGS += -Wall -Werror -Wextra -Wshadow -Wimplicit-function-declaration -CFLAGS += -Wredundant-decls $(INCLUDE) -# -Wmissing-prototypes -Wstrict-prototypes -CFLAGS += -fno-common -ffunction-sections -fdata-sections -flto - -############################################################################### -# Linker flags -LDFLAGS += --static -nostartfiles -nostdlib -LDFLAGS += -Wl,--gc-sections -Wl,--print-memory-usage --specs=nano.specs -flto -LDFLAGS += -L$(LIB_DIR) -LDFLAGS += -T$(LDSCRIPT) -LDFLAGS += -Wl,-Map=$(OBJDIR)/$(BINARY).map - -############################################################################### -# Used libraries -LDLIBS += -Wl,--start-group -lc -lgcc -Wl,--end-group -LDLIBS += $(shell $(CC) $(CFLAGS) -print-libgcc-file-name) - -DEFS += -DSTM32$(FAMILY) -DSTM32$(MCU) - -#.SUFFIXES: .elf .bin .hex .srec .list .map .images -#.SECONDEXPANSION: -#.SECONDARY: - -ELF := $(OBJDIR)/$(BINARY).elf -LIST := $(OBJDIR)/$(BINARY).list -BIN := $(BINARY).bin -HEX := $(BINARY).hex - -all: bin list - -elf: $(ELF) -bin: $(BIN) -hex: $(HEX) -list: $(LIST) - -ifneq ($(MAKECMDGOALS),clean) --include $(DEPS) -endif - -$(OBJDIR): - mkdir $(OBJDIR) - -$(STARTUP): $(INC_DIR)/startup/vector.c - $(CC) $(CFLAGS) $(DEFS) $(INCLUDE) $(ARCH_FLAGS) -o $@ -c $< - -$(VERSION_FILE): *.[ch] - @echo " Generate version: $(NEXTVER) for date $(BUILDDATE)" - @sed -i "s/#define BUILD_NUMBER.*/#define BUILD_NUMBER \"$(NEXTVER)\"/" $(VERSION_FILE) - @sed -i "s/#define BUILD_DATE.*/#define BUILD_DATE \"$(BUILDDATE)\"/" $(VERSION_FILE) - -$(OBJDIR)/strfunct.o: strfunct.c $(VERSION_FILE) - -$(OBJDIR)/%.o: %.c -# @make $(VERSION_FILE) - @echo " CC $<" - $(CC) $(CFLAGS) $(DEFS) $(INCLUDE) $(ARCH_FLAGS) -o $@ -c $< - -%.s: %.c - @echo " ASM $<" - $(CC) $(CFLAGS) $(DEFS) $(INCLUDE) $(ARCH_FLAGS) -S -o $(OBJDIR)/$@ -c $< - -$(BIN): $(ELF) - @echo " OBJCOPY $(BIN)" - $(OBJCOPY) -Obinary $(ELF) $(BIN) - -$(HEX): $(ELF) - @echo " OBJCOPY $(HEX)" - $(OBJCOPY) -Oihex $(ELF) $(HEX) - -$(LIST): $(ELF) - @echo " OBJDUMP $(LIST)" - $(OBJDUMP) -S $(ELF) > $(LIST) - -$(ELF): $(OBJDIR) $(OBJS) - @echo " LD $(ELF)" - $(LD) $(LDFLAGS) $(ARCH_FLAGS) $(OBJS) $(LDLIBS) -o $(ELF) - -clean: - @echo " CLEAN" - $(RM) $(OBJS) $(DEPS) $(ELF) $(HEX) $(LIST) $(OBJDIR)/*.map $(OBJDIR)/*.d $(OBJDIR)/*.s - @rmdir $(OBJDIR) 2>/dev/null || true - -dfuboot: $(BIN) - @echo " LOAD $(BIN) THROUGH DFU" - $(DFUUTIL) -a0 -R -D $(BIN) -s 0x08000000 - -flash: $(BIN) - @echo " FLASH $(BIN)" - $(STFLASH) write $(BIN) 0x8000000 - -boot: $(BIN) - @echo " LOAD $(BIN) through bootloader" - $(STBOOT) -b$(BOOTSPEED) $(BOOTPORT) -w $(BIN) - -.PHONY: clean dfuboot flash boot +include ../makefile.f0 +include ../../makefile.stm32 diff --git a/F0:F030,F042,F072/3steppersLB/Makefile.old b/F0:F030,F042,F072/3steppersLB/Makefile.old new file mode 100644 index 0000000..a43912c --- /dev/null +++ b/F0:F030,F042,F072/3steppersLB/Makefile.old @@ -0,0 +1,156 @@ +BINARY = steppers +BOOTPORT ?= /dev/ttyUSB0 +BOOTSPEED ?= 57600 +# MCU FAMILY +FAMILY ?= F0 +# MCU code +MCU ?= F072xB +#DEFS += -DEBUG +# change this linking script depending on particular MCU model, +# for example, if you have STM32F103VBT6, you should write: +LDSCRIPT ?= stm32f072B.ld + +# autoincremental version & build date +VERSION_FILE = version.inc +NEXTVER := $(shell expr $$(awk '/#define BUILD_NUMBER/' $(VERSION_FILE) | tr -cd "[0-9]") + 1) +BUILDDATE := $(shell date +%Y-%m-%d) + +INDEPENDENT_HEADERS= + +FP_FLAGS ?= -msoft-float +ASM_FLAGS = -mthumb -mcpu=cortex-m0 -march=armv6-m -mtune=cortex-m0 +ARCH_FLAGS = $(ASM_FLAGS) $(FP_FLAGS) + +############################################################################### +# Executables +OPREFIX ?= /opt/bin/arm-none-eabi +#PREFIX ?= /usr/x86_64-pc-linux-gnu/arm-none-eabi/gcc-bin/7.3.0/arm-none-eabi +PREFIX ?= $(OPREFIX) + +RM := rm -f +RMDIR := rmdir +CC := $(PREFIX)-gcc +LD := $(PREFIX)-gcc +AR := $(PREFIX)-ar +AS := $(PREFIX)-as +OBJCOPY := $(OPREFIX)-objcopy +OBJDUMP := $(OPREFIX)-objdump +GDB := $(OPREFIX)-gdb +STFLASH := $(shell which st-flash) +STBOOT := $(shell which stm32flash) +DFUUTIL := $(shell which dfu-util) + +############################################################################### +# Source files +OBJDIR = mk +LDSCRIPT ?= $(BINARY).ld +SRC := $(wildcard *.c) +OBJS := $(addprefix $(OBJDIR)/, $(SRC:%.c=%.o)) +STARTUP = $(OBJDIR)/startup.o +OBJS += $(STARTUP) +DEPS := $(OBJS:.o=.d) + +INC_DIR ?= ../inc + +INCLUDE := -I$(INC_DIR)/Fx -I$(INC_DIR)/cm +LIB_DIR := $(INC_DIR)/ld + +############################################################################### +# C flags +CFLAGS += -O2 -g -MD -D__thumb2__=1 +CFLAGS += -Wall -Werror -Wextra -Wshadow -Wimplicit-function-declaration +CFLAGS += -Wredundant-decls $(INCLUDE) +# -Wmissing-prototypes -Wstrict-prototypes +CFLAGS += -fno-common -ffunction-sections -fdata-sections -flto + +############################################################################### +# Linker flags +LDFLAGS += --static -nostartfiles -nostdlib +LDFLAGS += -Wl,--gc-sections -Wl,--print-memory-usage --specs=nano.specs -flto +LDFLAGS += -L$(LIB_DIR) +LDFLAGS += -T$(LDSCRIPT) +LDFLAGS += -Wl,-Map=$(OBJDIR)/$(BINARY).map + +############################################################################### +# Used libraries +LDLIBS += -Wl,--start-group -lc -lgcc -Wl,--end-group +LDLIBS += $(shell $(CC) $(CFLAGS) -print-libgcc-file-name) + +DEFS += -DSTM32$(FAMILY) -DSTM32$(MCU) + +#.SUFFIXES: .elf .bin .hex .srec .list .map .images +#.SECONDEXPANSION: +#.SECONDARY: + +ELF := $(OBJDIR)/$(BINARY).elf +LIST := $(OBJDIR)/$(BINARY).list +BIN := $(BINARY).bin +HEX := $(BINARY).hex + +all: bin list + +elf: $(ELF) +bin: $(BIN) +hex: $(HEX) +list: $(LIST) + +ifneq ($(MAKECMDGOALS),clean) +-include $(DEPS) +endif + +$(OBJDIR): + mkdir $(OBJDIR) + +$(STARTUP): $(INC_DIR)/startup/vector.c + $(CC) $(CFLAGS) $(DEFS) $(INCLUDE) $(ARCH_FLAGS) -o $@ -c $< + +$(VERSION_FILE): *.[ch] + @echo " Generate version: $(NEXTVER) for date $(BUILDDATE)" + @sed -i "s/#define BUILD_NUMBER.*/#define BUILD_NUMBER \"$(NEXTVER)\"/" $(VERSION_FILE) + @sed -i "s/#define BUILD_DATE.*/#define BUILD_DATE \"$(BUILDDATE)\"/" $(VERSION_FILE) + +$(OBJDIR)/strfunct.o: strfunct.c $(VERSION_FILE) + +$(OBJDIR)/%.o: %.c +# @make $(VERSION_FILE) + @echo " CC $<" + $(CC) $(CFLAGS) $(DEFS) $(INCLUDE) $(ARCH_FLAGS) -o $@ -c $< + +%.s: %.c + @echo " ASM $<" + $(CC) $(CFLAGS) $(DEFS) $(INCLUDE) $(ARCH_FLAGS) -S -o $(OBJDIR)/$@ -c $< + +$(BIN): $(ELF) + @echo " OBJCOPY $(BIN)" + $(OBJCOPY) -Obinary $(ELF) $(BIN) + +$(HEX): $(ELF) + @echo " OBJCOPY $(HEX)" + $(OBJCOPY) -Oihex $(ELF) $(HEX) + +$(LIST): $(ELF) + @echo " OBJDUMP $(LIST)" + $(OBJDUMP) -S $(ELF) > $(LIST) + +$(ELF): $(OBJDIR) $(OBJS) + @echo " LD $(ELF)" + $(LD) $(LDFLAGS) $(ARCH_FLAGS) $(OBJS) $(LDLIBS) -o $(ELF) + +clean: + @echo " CLEAN" + $(RM) $(OBJS) $(DEPS) $(ELF) $(HEX) $(LIST) $(OBJDIR)/*.map $(OBJDIR)/*.d $(OBJDIR)/*.s + @rmdir $(OBJDIR) 2>/dev/null || true + +dfuboot: $(BIN) + @echo " LOAD $(BIN) THROUGH DFU" + $(DFUUTIL) -a0 -R -D $(BIN) -s 0x08000000 + +flash: $(BIN) + @echo " FLASH $(BIN)" + $(STFLASH) write $(BIN) 0x8000000 + +boot: $(BIN) + @echo " LOAD $(BIN) through bootloader" + $(STBOOT) -b$(BOOTSPEED) $(BOOTPORT) -w $(BIN) + +.PHONY: clean dfuboot flash boot diff --git a/F0:F030,F042,F072/CANBUS_SSI/Makefile b/F0:F030,F042,F072/CANBUS_SSI/Makefile index a4f0cf7..1e283d7 100644 --- a/F0:F030,F042,F072/CANBUS_SSI/Makefile +++ b/F0:F030,F042,F072/CANBUS_SSI/Makefile @@ -1,155 +1,9 @@ -# make debug adds -DEBUG -Werror -# make ADDEFS="additional defs" -BINARY = canstepper -BOOTPORT ?= /dev/ttyUSB0 -BOOTSPEED ?= 115200 -# MCU FAMILY -FAMILY ?= F0 -# MCU code (STM32F072xx) -MCU ?= F072xB +BINARY := canstepper +# MCU code +MCU ?= F072xB # change this linking script depending on particular MCU model, -LDSCRIPT ?= stm32f0728.ld -DEFS = ${ADDEFS} -DVERSION=\"0.0.1\" -DUSARTNUM=1 -TARGET := RELEASE +LDSCRIPT ?= stm32f0728.ld +DEFINES := -DVERSION=\"0.0.1\" -DUSARTNUM=1 -FP_FLAGS ?= -msoft-float -ASM_FLAGS ?= -mthumb -mcpu=cortex-m0 -march=armv6-m -mtune=cortex-m0 -ARCH_FLAGS = $(ASM_FLAGS) $(FP_FLAGS) - -############################################################################### -# Executables -#PREFIX ?= arm-none-eabi -# gcc from arm web site -PREFIX ?= /opt/bin/arm-none-eabi -RM := rm -f -RMDIR := rmdir -CC := $(PREFIX)-gcc -LD := $(PREFIX)-gcc -AR := $(PREFIX)-ar -AS := $(PREFIX)-as -SIZE := $(PREFIX)-size -OBJCOPY := $(PREFIX)-objcopy -OBJDUMP := $(PREFIX)-objdump -GDB := $(PREFIX)-gdb -STFLASH := $(shell which st-flash) -STBOOT := $(shell which stm32flash) -DFUUTIL := $(shell which dfu-util) - -############################################################################### -# Source files -OBJDIR = mk -SRC := $(wildcard *.c) -OBJS := $(addprefix $(OBJDIR)/, $(SRC:%.c=%.o)) -STARTUP = $(OBJDIR)/startup.o -OBJS += $(STARTUP) -# dependencies: we need them to recompile files if their headers-dependencies changed -DEPS := $(OBJS:.o=.d) - -INC_DIR ?= ../../inc - -INCLUDE := -I$(INC_DIR)/Fx -I$(INC_DIR)/cm -LIB_DIR := $(INC_DIR)/ld - -############################################################################### -# C flags -CFLAGS += -O2 -g -MD -D__thumb2__=1 -CFLAGS += -Wall -Wextra -Wshadow -CFLAGS += -fno-common -ffunction-sections -fdata-sections - -############################################################################### -# Linker flags -LDFLAGS += --static -nostartfiles --specs=nano.specs -LDFLAGS += -L$(LIB_DIR) -LDFLAGS += -T$(LDSCRIPT) -LDFLAGS += -Wl,-Map=$(OBJDIR)/$(BINARY).map -LDFLAGS += -Wl,--gc-sections - -############################################################################### -# Used libraries -LDLIBS += -Wl,--start-group -lc -lgcc -Wl,--end-group -LDLIBS += $(shell $(CC) $(CFLAGS) -print-libgcc-file-name) -DEFS += -DSTM32$(FAMILY) -DSTM32$(MCU) - -ELF := $(OBJDIR)/$(BINARY).elf -LIST := $(OBJDIR)/$(BINARY).list -BIN := $(BINARY).bin -HEX := $(BINARY).hex - -all: $(OBJDIR)/RELEASE bin list size -release: all - -debug: CFLAGS += -DEBUG -Werror -W -Wimplicit-function-declaration -debug: $(OBJDIR)/DEBUG bin list size - -$(OBJDIR)/DEBUG: - @rm -rf $(OBJDIR) - @mkdir $(OBJDIR) - @> $(OBJDIR)/DEBUG - @echo "TARGET: DEBUG" - echo "CFLAGS += -DEBUG -Werror -W -Wimplicit-function-declaration" > $(OBJDIR)/CFLAGS -$(OBJDIR)/RELEASE: - @rm -rf $(OBJDIR) - @mkdir $(OBJDIR) - @> $(OBJDIR)/RELEASE - @echo "TARGET: RELEASE" - echo "" > $(OBJDIR)/CFLAGS - -elf: $(ELF) -bin: $(BIN) -hex: $(HEX) -list: $(LIST) - -ifneq ($(MAKECMDGOALS),clean) --include $(DEPS) --include $(OBJDIR)/CFLAGS -endif - -$(OBJDIR): - mkdir $(OBJDIR) - -$(STARTUP): $(INC_DIR)/startup/vector.c - @echo " CC startup" - $(CC) $(CFLAGS) $(DEFS) $(INCLUDE) $(ARCH_FLAGS) -o $@ -c $< - -$(OBJDIR)/%.o: %.c - @echo " CC $<" - $(CC) $(CFLAGS) $(DEFS) $(INCLUDE) $(ARCH_FLAGS) -o $@ -c $< - -$(BIN): $(ELF) - @echo " OBJCOPY $(BIN)" - $(OBJCOPY) -Obinary $(ELF) $(BIN) - -$(HEX): $(ELF) - @echo " OBJCOPY $(HEX)" - $(OBJCOPY) -Oihex $(ELF) $(HEX) - -$(LIST): $(ELF) - @echo " OBJDUMP $(LIST)" - $(OBJDUMP) -S $(ELF) > $(LIST) - -$(ELF): $(OBJDIR) $(OBJS) - @echo " LD $(ELF)" - $(LD) $(LDFLAGS) $(ARCH_FLAGS) $(OBJS) $(LDLIBS) -o $(ELF) - -size: $(ELF) - $(SIZE) $(ELF) - -clean: - @echo " CLEAN" - @$(RM) $(HEX) - @$(RM) -rf $(OBJDIR) 2>/dev/null || true - - -flash: $(BIN) - @echo " FLASH $(BIN)" - $(STFLASH) --reset write $(BIN) 0x8000000 - -boot: $(BIN) - @echo " LOAD $(BIN) through bootloader" - $(STBOOT) -b$(BOOTSPEED) $(BOOTPORT) -w $(BIN) - -dfuboot: $(BIN) - @echo " LOAD $(BIN) THROUGH DFU" - $(DFUUTIL) -a0 -D $(BIN) -s 0x08000000 - -.PHONY: clean flash boot +include ../makefile.f0 +include ../../makefile.stm32 diff --git a/F0:F030,F042,F072/CANBUS_SSI/Makefile.old b/F0:F030,F042,F072/CANBUS_SSI/Makefile.old new file mode 100644 index 0000000..a4f0cf7 --- /dev/null +++ b/F0:F030,F042,F072/CANBUS_SSI/Makefile.old @@ -0,0 +1,155 @@ +# make debug adds -DEBUG -Werror +# make ADDEFS="additional defs" +BINARY = canstepper +BOOTPORT ?= /dev/ttyUSB0 +BOOTSPEED ?= 115200 +# MCU FAMILY +FAMILY ?= F0 +# MCU code (STM32F072xx) +MCU ?= F072xB +# change this linking script depending on particular MCU model, +LDSCRIPT ?= stm32f0728.ld +DEFS = ${ADDEFS} -DVERSION=\"0.0.1\" -DUSARTNUM=1 +TARGET := RELEASE + +FP_FLAGS ?= -msoft-float +ASM_FLAGS ?= -mthumb -mcpu=cortex-m0 -march=armv6-m -mtune=cortex-m0 +ARCH_FLAGS = $(ASM_FLAGS) $(FP_FLAGS) + +############################################################################### +# Executables +#PREFIX ?= arm-none-eabi +# gcc from arm web site +PREFIX ?= /opt/bin/arm-none-eabi +RM := rm -f +RMDIR := rmdir +CC := $(PREFIX)-gcc +LD := $(PREFIX)-gcc +AR := $(PREFIX)-ar +AS := $(PREFIX)-as +SIZE := $(PREFIX)-size +OBJCOPY := $(PREFIX)-objcopy +OBJDUMP := $(PREFIX)-objdump +GDB := $(PREFIX)-gdb +STFLASH := $(shell which st-flash) +STBOOT := $(shell which stm32flash) +DFUUTIL := $(shell which dfu-util) + +############################################################################### +# Source files +OBJDIR = mk +SRC := $(wildcard *.c) +OBJS := $(addprefix $(OBJDIR)/, $(SRC:%.c=%.o)) +STARTUP = $(OBJDIR)/startup.o +OBJS += $(STARTUP) +# dependencies: we need them to recompile files if their headers-dependencies changed +DEPS := $(OBJS:.o=.d) + +INC_DIR ?= ../../inc + +INCLUDE := -I$(INC_DIR)/Fx -I$(INC_DIR)/cm +LIB_DIR := $(INC_DIR)/ld + +############################################################################### +# C flags +CFLAGS += -O2 -g -MD -D__thumb2__=1 +CFLAGS += -Wall -Wextra -Wshadow +CFLAGS += -fno-common -ffunction-sections -fdata-sections + +############################################################################### +# Linker flags +LDFLAGS += --static -nostartfiles --specs=nano.specs +LDFLAGS += -L$(LIB_DIR) +LDFLAGS += -T$(LDSCRIPT) +LDFLAGS += -Wl,-Map=$(OBJDIR)/$(BINARY).map +LDFLAGS += -Wl,--gc-sections + +############################################################################### +# Used libraries +LDLIBS += -Wl,--start-group -lc -lgcc -Wl,--end-group +LDLIBS += $(shell $(CC) $(CFLAGS) -print-libgcc-file-name) +DEFS += -DSTM32$(FAMILY) -DSTM32$(MCU) + +ELF := $(OBJDIR)/$(BINARY).elf +LIST := $(OBJDIR)/$(BINARY).list +BIN := $(BINARY).bin +HEX := $(BINARY).hex + +all: $(OBJDIR)/RELEASE bin list size +release: all + +debug: CFLAGS += -DEBUG -Werror -W -Wimplicit-function-declaration +debug: $(OBJDIR)/DEBUG bin list size + +$(OBJDIR)/DEBUG: + @rm -rf $(OBJDIR) + @mkdir $(OBJDIR) + @> $(OBJDIR)/DEBUG + @echo "TARGET: DEBUG" + echo "CFLAGS += -DEBUG -Werror -W -Wimplicit-function-declaration" > $(OBJDIR)/CFLAGS +$(OBJDIR)/RELEASE: + @rm -rf $(OBJDIR) + @mkdir $(OBJDIR) + @> $(OBJDIR)/RELEASE + @echo "TARGET: RELEASE" + echo "" > $(OBJDIR)/CFLAGS + +elf: $(ELF) +bin: $(BIN) +hex: $(HEX) +list: $(LIST) + +ifneq ($(MAKECMDGOALS),clean) +-include $(DEPS) +-include $(OBJDIR)/CFLAGS +endif + +$(OBJDIR): + mkdir $(OBJDIR) + +$(STARTUP): $(INC_DIR)/startup/vector.c + @echo " CC startup" + $(CC) $(CFLAGS) $(DEFS) $(INCLUDE) $(ARCH_FLAGS) -o $@ -c $< + +$(OBJDIR)/%.o: %.c + @echo " CC $<" + $(CC) $(CFLAGS) $(DEFS) $(INCLUDE) $(ARCH_FLAGS) -o $@ -c $< + +$(BIN): $(ELF) + @echo " OBJCOPY $(BIN)" + $(OBJCOPY) -Obinary $(ELF) $(BIN) + +$(HEX): $(ELF) + @echo " OBJCOPY $(HEX)" + $(OBJCOPY) -Oihex $(ELF) $(HEX) + +$(LIST): $(ELF) + @echo " OBJDUMP $(LIST)" + $(OBJDUMP) -S $(ELF) > $(LIST) + +$(ELF): $(OBJDIR) $(OBJS) + @echo " LD $(ELF)" + $(LD) $(LDFLAGS) $(ARCH_FLAGS) $(OBJS) $(LDLIBS) -o $(ELF) + +size: $(ELF) + $(SIZE) $(ELF) + +clean: + @echo " CLEAN" + @$(RM) $(HEX) + @$(RM) -rf $(OBJDIR) 2>/dev/null || true + + +flash: $(BIN) + @echo " FLASH $(BIN)" + $(STFLASH) --reset write $(BIN) 0x8000000 + +boot: $(BIN) + @echo " LOAD $(BIN) through bootloader" + $(STBOOT) -b$(BOOTSPEED) $(BOOTPORT) -w $(BIN) + +dfuboot: $(BIN) + @echo " LOAD $(BIN) THROUGH DFU" + $(DFUUTIL) -a0 -D $(BIN) -s 0x08000000 + +.PHONY: clean flash boot diff --git a/F0:F030,F042,F072/CANBUS_SSI/canstepper.bin b/F0:F030,F042,F072/CANBUS_SSI/canstepper.bin index 041297ec1eff5e29451782d06768019bda30d8bf..9c064b319340730f030785a8be90fb0717ead0a4 100755 GIT binary patch literal 12392 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 Znf $(LIST) - -$(ELF): $(OBJDIR) $(OBJS) - @echo " LD $(ELF)" - $(LD) $(LDFLAGS) $(OBJS) $(LDLIBS) -o $(ELF) - -size: $(ELF) - $(SIZE) $(ELF) - -clean: - @echo " CLEAN" - $(RM) $(OBJS) $(DEPS) $(ELF) $(HEX) $(LIST) $(MAP) - @rmdir $(OBJDIR) 2>/dev/null || true - -flash: $(BIN) - @echo " FLASH $(BIN)" - $(STFLASH) --reset write $(BIN) 0x8000000 - -boot: $(BIN) - @echo " LOAD $(BIN) through bootloader" - $(STBOOT) -b$(BOOTSPEED) $(BOOTPORT) -w $(BIN) - -dfuboot: $(BIN) - @echo " LOAD $(BIN) THROUGH DFU" - $(DFUUTIL) -a0 -D $(BIN) -s 0x08000000 - -openocd: - openocd -f openocd.cfg -dbg: - arm-none-eabi-gdb $(ELF) -ex 'target remote localhost:3333' -ex 'monitor reset halt' - -.PHONY: clean flash boot dfuboot size dbg openocd +include ../makefile.f0 +include ../../makefile.stm32 diff --git a/F0:F030,F042,F072/PL2303_ringbuffer/Makefile.old b/F0:F030,F042,F072/PL2303_ringbuffer/Makefile.old new file mode 100644 index 0000000..b6f4bf4 --- /dev/null +++ b/F0:F030,F042,F072/PL2303_ringbuffer/Makefile.old @@ -0,0 +1,154 @@ +BINARY = PL2303 +BOOTPORT ?= /dev/ttyUSB0 +BOOTSPEED ?= 115200 +INDEPENDENT_HEADERS= +# MCU FAMILY +FAMILY ?= F0 +# MCU code +MCU ?= F042x6 +# change this linking script depending on particular MCU model, +LDSCRIPT ?= stm32f042x6.ld + +# autoincremental version & build date +VERSION_FILE = version.inc +NEXTVER := $(shell expr $$(awk '/#define BUILD_NUMBER/' $(VERSION_FILE) | tr -cd "[0-9]") + 1) +BUILDDATE := $(shell date +%Y-%m-%d) + +FP_FLAGS ?= -msoft-float +# -mfloat-abi=soft +ASM_FLAGS ?= -mthumb -mcpu=cortex-m0 -march=armv6-m -mtune=cortex-m0 +ARCH_FLAGS = $(ASM_FLAGS) $(FP_FLAGS) + +############################################################################### +# Executables +#PREFIX ?= arm-none-eabi +# gcc from arm web site +PREFIX ?= /opt/bin/arm-none-eabi +TOOLCHLIB ?= /opt/arm-none-eabi/lib +RM := rm -f +RMDIR := rmdir +CC := $(PREFIX)-gcc +LD := $(PREFIX)-gcc +AR := $(PREFIX)-ar +AS := $(PREFIX)-as +SIZE := $(PREFIX)-size +OBJCOPY := $(PREFIX)-objcopy +OBJDUMP := $(PREFIX)-objdump +GDB := $(PREFIX)-gdb +STFLASH := $(shell which st-flash) +STBOOT := $(shell which stm32flash) +DFUUTIL := $(shell which dfu-util) + +############################################################################### +# Source files +OBJDIR := mk +SRC := $(wildcard *.c) +OBJS := $(addprefix $(OBJDIR)/, $(SRC:%.c=%.o)) +STARTUP = $(OBJDIR)/startup.o +OBJS += $(STARTUP) +MAP = $(OBJDIR)/$(BINARY).map +# dependencies: we need them to recompile files if their headers-dependencies changed +DEPS := $(OBJS:.o=.d) + +INC_DIR ?= ../inc + +INCLUDE := -I$(INC_DIR)/Fx -I$(INC_DIR)/cm +LIB_DIR := $(INC_DIR)/ld + +############################################################################### +# C flags +CFLAGS += -O2 -g -MD -D__thumb2__=1 +CFLAGS += -Wall -Werror -Wextra -Wshadow -Wimplicit-function-declaration -Wredundant-decls +CFLAGS += -fno-common -ffunction-sections -fdata-sections +# -fno-stack-protector -fshort-enums +CFLAGS += $(ARCH_FLAGS) $(INCLUDE) + +############################################################################### +# Linker flags +LDFLAGS += -nostartfiles --static -Wl,--print-memory-usage +# --specs=nano.specs -nostdlib +LDFLAGS += -Wl,-Map=$(MAP) -Wl,--gc-sections +LDFLAGS += -L$(LIB_DIR) -L$(TOOLCHLIB) +LDFLAGS += -T$(LDSCRIPT) $(ARCH_FLAGS) + +############################################################################### +# Used libraries +LDLIBS += -Wl,--start-group -lc -lgcc -Wl,--end-group $(shell $(CC) $(CFLAGS) -print-libgcc-file-name) + +DEFS += -DSTM32$(FAMILY) -DSTM32$(MCU) + +ELF := $(OBJDIR)/$(BINARY).elf +LIST := $(OBJDIR)/$(BINARY).list +BIN := $(BINARY).bin +HEX := $(BINARY).hex + +all: bin list size + +elf: $(ELF) +bin: $(BIN) +hex: $(HEX) +list: $(LIST) + +ifneq ($(MAKECMDGOALS),clean) +-include $(DEPS) +endif + +$(OBJDIR): + mkdir $(OBJDIR) + +$(STARTUP): $(INC_DIR)/startup/vector.c + $(CC) $(CFLAGS) $(DEFS) $(INCLUDE) -o $@ -c $< + +$(VERSION_FILE): *.[ch] + @echo " Generate version: $(NEXTVER) for date $(BUILDDATE)" + @sed -i "s/#define BUILD_NUMBER.*/#define BUILD_NUMBER \"$(NEXTVER)\"/" $(VERSION_FILE) + @sed -i "s/#define BUILD_DATE.*/#define BUILD_DATE \"$(BUILDDATE)\"/" $(VERSION_FILE) + +$(OBJDIR)/proto.o: proto.c $(VERSION_FILE) + +$(OBJDIR)/%.o: %.c + @echo " CC $<" + $(CC) $(CFLAGS) $(DEFS) $(INCLUDE) -o $@ -c $< + +$(BIN): $(ELF) + @echo " OBJCOPY $(BIN)" + $(OBJCOPY) -Obinary $(ELF) $(BIN) + +$(HEX): $(ELF) + @echo " OBJCOPY $(HEX)" + $(OBJCOPY) -Oihex $(ELF) $(HEX) + +$(LIST): $(ELF) + @echo " OBJDUMP $(LIST)" + $(OBJDUMP) -S $(ELF) > $(LIST) + +$(ELF): $(OBJDIR) $(OBJS) + @echo " LD $(ELF)" + $(LD) $(LDFLAGS) $(OBJS) $(LDLIBS) -o $(ELF) + +size: $(ELF) + $(SIZE) $(ELF) + +clean: + @echo " CLEAN" + $(RM) $(OBJS) $(DEPS) $(ELF) $(HEX) $(LIST) $(MAP) + @rmdir $(OBJDIR) 2>/dev/null || true + +flash: $(BIN) + @echo " FLASH $(BIN)" + $(STFLASH) --reset write $(BIN) 0x8000000 + +boot: $(BIN) + @echo " LOAD $(BIN) through bootloader" + $(STBOOT) -b$(BOOTSPEED) $(BOOTPORT) -w $(BIN) + +dfuboot: $(BIN) + @echo " LOAD $(BIN) THROUGH DFU" + $(DFUUTIL) -a0 -D $(BIN) -s 0x08000000 + +openocd: + openocd -f openocd.cfg +dbg: + arm-none-eabi-gdb $(ELF) -ex 'target remote localhost:3333' -ex 'monitor reset halt' + +.PHONY: clean flash boot dfuboot size dbg openocd diff --git a/F0:F030,F042,F072/PL2303_ringbuffer/PL2303.bin b/F0:F030,F042,F072/PL2303_ringbuffer/PL2303.bin index f2ab21678bdb8572324d56a0a5232a5add4ecda7..7bc4d4583e36b9df12d8be4b4f9564607af1d7f4 100755 GIT binary patch literal 6768 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 literal 6784 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 UkEsCoNB!TleYEQx%Bh9_2B6%1`Tzg` diff --git a/F0:F030,F042,F072/makefile.f0 b/F0:F030,F042,F072/makefile.f0 new file mode 100644 index 0000000..890a0b4 --- /dev/null +++ b/F0:F030,F042,F072/makefile.f0 @@ -0,0 +1,5 @@ +# common include for all F0 series +# MCU FAMILY +FAMILY ?= F0 +FP_FLAGS ?= -msoft-float -fsingle-precision-constant -mlittle-endian +ASM_FLAGS ?= -mthumb -mcpu=cortex-m0 -march=armv6-m -mtune=cortex-m0 diff --git a/F0:F030,F042,F072/usbcan/Makefile b/F0:F030,F042,F072/usbcan/Makefile index e000cdf..0baf277 100644 --- a/F0:F030,F042,F072/usbcan/Makefile +++ b/F0:F030,F042,F072/usbcan/Makefile @@ -1,147 +1,8 @@ -BINARY = usbcan -BOOTPORT ?= /dev/ttyUSB0 -BOOTSPEED ?= 57600 -# MCU FAMILY -FAMILY = F0 +BINARY := usbcan # MCU code -MCU = F042x6 -# hardware definitions -#DEFS += -DEBUG +MCU := F042x6 # change this linking script depending on particular MCU model, -# for example, if you have STM32F103VBT6, you should write: -LDSCRIPT = stm32f042k.ld +LDSCRIPT := stm32f042k.ld -INDEPENDENT_HEADERS= - -FP_FLAGS ?= -msoft-float -ASM_FLAGS = -mthumb -mcpu=cortex-m0 -march=armv6-m -mtune=cortex-m0 -ARCH_FLAGS = $(ASM_FLAGS) $(FP_FLAGS) - -############################################################################### -# Executables -OPREFIX ?= /opt/bin/arm-none-eabi -#PREFIX ?= /usr/x86_64-pc-linux-gnu/arm-none-eabi/gcc-bin/7.3.0/arm-none-eabi -PREFIX ?= $(OPREFIX) - -RM := rm -f -RMDIR := rmdir -CC := $(PREFIX)-gcc -LD := $(PREFIX)-gcc -AR := $(PREFIX)-ar -AS := $(PREFIX)-as -OBJCOPY := $(OPREFIX)-objcopy -OBJDUMP := $(OPREFIX)-objdump -GDB := $(OPREFIX)-gdb -STFLASH := $(shell which st-flash) -STBOOT := $(shell which stm32flash) -DFUUTIL := $(shell which dfu-util) - -############################################################################### -# Source files -OBJDIR = mk -LDSCRIPT ?= $(BINARY).ld -SRC := $(wildcard *.c) -OBJS := $(addprefix $(OBJDIR)/, $(SRC:%.c=%.o)) -STARTUP = $(OBJDIR)/startup.o -OBJS += $(STARTUP) -DEPS := $(OBJS:.o=.d) - -INC_DIR ?= ../inc - -INCLUDE := -I$(INC_DIR)/Fx -I$(INC_DIR)/cm -LIB_DIR := $(INC_DIR)/ld - -############################################################################### -# C flags -CFLAGS += -O2 -g -MD -D__thumb2__=1 -CFLAGS += -Wall -Werror -Wextra -Wshadow -Wimplicit-function-declaration -CFLAGS += -Wredundant-decls $(INCLUDE) -# -Wmissing-prototypes -Wstrict-prototypes -CFLAGS += -fno-common -ffunction-sections -fdata-sections - -############################################################################### -# Linker flags -LDFLAGS += --static -nostartfiles -#--specs=nano.specs -LDFLAGS += -L$(LIB_DIR) -LDFLAGS += -T$(LDSCRIPT) -LDFLAGS += -Wl,-Map=$(OBJDIR)/$(BINARY).map -LDFLAGS += -Wl,--gc-sections - -############################################################################### -# Used libraries -LDLIBS += -Wl,--start-group -lc -lgcc -Wl,--end-group -LDLIBS += $(shell $(CC) $(CFLAGS) -print-libgcc-file-name) - -DEFS += -DSTM32$(FAMILY) -DSTM32$(MCU) - -#.SUFFIXES: .elf .bin .hex .srec .list .map .images -#.SECONDEXPANSION: -#.SECONDARY: - -ELF := $(OBJDIR)/$(BINARY).elf -LIST := $(OBJDIR)/$(BINARY).list -BIN := $(BINARY).bin -HEX := $(BINARY).hex - -all: bin list - -elf: $(ELF) -bin: $(BIN) -hex: $(HEX) -list: $(LIST) - -ifneq ($(MAKECMDGOALS),clean) --include $(DEPS) -endif - -$(OBJDIR): - mkdir $(OBJDIR) - -$(STARTUP): $(INC_DIR)/startup/vector.c - $(CC) $(CFLAGS) $(DEFS) $(INCLUDE) $(ARCH_FLAGS) -o $@ -c $< - -$(OBJDIR)/%.o: %.c - @echo " CC $<" - $(CC) $(CFLAGS) $(DEFS) $(INCLUDE) $(ARCH_FLAGS) -o $@ -c $< - -#$(OBJDIR)/%.d: %.c $(OBJDIR) -# $(CC) -MM -MG $< | sed -e 's,^\([^:]*\)\.o[ ]*:,$(@D)/\1.o $(@D)/\1.d:,' >$@ - -$(BIN): $(ELF) - @echo " OBJCOPY $(BIN)" - $(OBJCOPY) -Obinary $(ELF) $(BIN) - -$(HEX): $(ELF) - @echo " OBJCOPY $(HEX)" - $(OBJCOPY) -Oihex $(ELF) $(HEX) - -$(LIST): $(ELF) - @echo " OBJDUMP $(LIST)" - $(OBJDUMP) -S $(ELF) > $(LIST) - -$(ELF): $(OBJDIR) $(OBJS) - @echo " LD $(ELF)" - $(LD) $(LDFLAGS) $(ARCH_FLAGS) $(OBJS) $(LDLIBS) -o $(ELF) - -clean: - @echo " CLEAN" - $(RM) $(OBJS) $(DEPS) $(ELF) $(HEX) $(LIST) $(OBJDIR)/*.map *.d - @rmdir $(OBJDIR) 2>/dev/null || true - -dfuboot: $(BIN) - @echo " LOAD $(BIN) THROUGH DFU" - $(DFUUTIL) -a0 -D $(BIN) -s 0x08000000 - -flash: $(BIN) - @echo " FLASH $(BIN)" - $(STFLASH) write $(BIN) 0x8000000 - -boot: $(BIN) - @echo " LOAD $(BIN) through bootloader" - $(STBOOT) -b$(BOOTSPEED) $(BOOTPORT) -w $(BIN) - -gentags: - CFLAGS="$(CFLAGS) $(DEFS)" geany -g $(BINARY).c.tags *[hc] 2>/dev/null - -.PHONY: clean flash boot gentags +include ../makefile.f0 +include ../../makefile.stm32 diff --git a/F0:F030,F042,F072/usbcan/Makefile.old b/F0:F030,F042,F072/usbcan/Makefile.old new file mode 100644 index 0000000..e000cdf --- /dev/null +++ b/F0:F030,F042,F072/usbcan/Makefile.old @@ -0,0 +1,147 @@ +BINARY = usbcan +BOOTPORT ?= /dev/ttyUSB0 +BOOTSPEED ?= 57600 +# MCU FAMILY +FAMILY = F0 +# MCU code +MCU = F042x6 +# hardware definitions +#DEFS += -DEBUG +# change this linking script depending on particular MCU model, +# for example, if you have STM32F103VBT6, you should write: +LDSCRIPT = stm32f042k.ld + +INDEPENDENT_HEADERS= + +FP_FLAGS ?= -msoft-float +ASM_FLAGS = -mthumb -mcpu=cortex-m0 -march=armv6-m -mtune=cortex-m0 +ARCH_FLAGS = $(ASM_FLAGS) $(FP_FLAGS) + +############################################################################### +# Executables +OPREFIX ?= /opt/bin/arm-none-eabi +#PREFIX ?= /usr/x86_64-pc-linux-gnu/arm-none-eabi/gcc-bin/7.3.0/arm-none-eabi +PREFIX ?= $(OPREFIX) + +RM := rm -f +RMDIR := rmdir +CC := $(PREFIX)-gcc +LD := $(PREFIX)-gcc +AR := $(PREFIX)-ar +AS := $(PREFIX)-as +OBJCOPY := $(OPREFIX)-objcopy +OBJDUMP := $(OPREFIX)-objdump +GDB := $(OPREFIX)-gdb +STFLASH := $(shell which st-flash) +STBOOT := $(shell which stm32flash) +DFUUTIL := $(shell which dfu-util) + +############################################################################### +# Source files +OBJDIR = mk +LDSCRIPT ?= $(BINARY).ld +SRC := $(wildcard *.c) +OBJS := $(addprefix $(OBJDIR)/, $(SRC:%.c=%.o)) +STARTUP = $(OBJDIR)/startup.o +OBJS += $(STARTUP) +DEPS := $(OBJS:.o=.d) + +INC_DIR ?= ../inc + +INCLUDE := -I$(INC_DIR)/Fx -I$(INC_DIR)/cm +LIB_DIR := $(INC_DIR)/ld + +############################################################################### +# C flags +CFLAGS += -O2 -g -MD -D__thumb2__=1 +CFLAGS += -Wall -Werror -Wextra -Wshadow -Wimplicit-function-declaration +CFLAGS += -Wredundant-decls $(INCLUDE) +# -Wmissing-prototypes -Wstrict-prototypes +CFLAGS += -fno-common -ffunction-sections -fdata-sections + +############################################################################### +# Linker flags +LDFLAGS += --static -nostartfiles +#--specs=nano.specs +LDFLAGS += -L$(LIB_DIR) +LDFLAGS += -T$(LDSCRIPT) +LDFLAGS += -Wl,-Map=$(OBJDIR)/$(BINARY).map +LDFLAGS += -Wl,--gc-sections + +############################################################################### +# Used libraries +LDLIBS += -Wl,--start-group -lc -lgcc -Wl,--end-group +LDLIBS += $(shell $(CC) $(CFLAGS) -print-libgcc-file-name) + +DEFS += -DSTM32$(FAMILY) -DSTM32$(MCU) + +#.SUFFIXES: .elf .bin .hex .srec .list .map .images +#.SECONDEXPANSION: +#.SECONDARY: + +ELF := $(OBJDIR)/$(BINARY).elf +LIST := $(OBJDIR)/$(BINARY).list +BIN := $(BINARY).bin +HEX := $(BINARY).hex + +all: bin list + +elf: $(ELF) +bin: $(BIN) +hex: $(HEX) +list: $(LIST) + +ifneq ($(MAKECMDGOALS),clean) +-include $(DEPS) +endif + +$(OBJDIR): + mkdir $(OBJDIR) + +$(STARTUP): $(INC_DIR)/startup/vector.c + $(CC) $(CFLAGS) $(DEFS) $(INCLUDE) $(ARCH_FLAGS) -o $@ -c $< + +$(OBJDIR)/%.o: %.c + @echo " CC $<" + $(CC) $(CFLAGS) $(DEFS) $(INCLUDE) $(ARCH_FLAGS) -o $@ -c $< + +#$(OBJDIR)/%.d: %.c $(OBJDIR) +# $(CC) -MM -MG $< | sed -e 's,^\([^:]*\)\.o[ ]*:,$(@D)/\1.o $(@D)/\1.d:,' >$@ + +$(BIN): $(ELF) + @echo " OBJCOPY $(BIN)" + $(OBJCOPY) -Obinary $(ELF) $(BIN) + +$(HEX): $(ELF) + @echo " OBJCOPY $(HEX)" + $(OBJCOPY) -Oihex $(ELF) $(HEX) + +$(LIST): $(ELF) + @echo " OBJDUMP $(LIST)" + $(OBJDUMP) -S $(ELF) > $(LIST) + +$(ELF): $(OBJDIR) $(OBJS) + @echo " LD $(ELF)" + $(LD) $(LDFLAGS) $(ARCH_FLAGS) $(OBJS) $(LDLIBS) -o $(ELF) + +clean: + @echo " CLEAN" + $(RM) $(OBJS) $(DEPS) $(ELF) $(HEX) $(LIST) $(OBJDIR)/*.map *.d + @rmdir $(OBJDIR) 2>/dev/null || true + +dfuboot: $(BIN) + @echo " LOAD $(BIN) THROUGH DFU" + $(DFUUTIL) -a0 -D $(BIN) -s 0x08000000 + +flash: $(BIN) + @echo " FLASH $(BIN)" + $(STFLASH) write $(BIN) 0x8000000 + +boot: $(BIN) + @echo " LOAD $(BIN) through bootloader" + $(STBOOT) -b$(BOOTSPEED) $(BOOTPORT) -w $(BIN) + +gentags: + CFLAGS="$(CFLAGS) $(DEFS)" geany -g $(BINARY).c.tags *[hc] 2>/dev/null + +.PHONY: clean flash boot gentags diff --git a/F0:F030,F042,F072/usbcan/usbcan.bin b/F0:F030,F042,F072/usbcan/usbcan.bin old mode 100644 new mode 100755 index 707e7c5bd83373e08cb76279bf9fb76ce8122b2e..6ce42b13eae5e7eee1500be8a0657664faadcf45 GIT binary patch literal 11856 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 VggSz0Y=sEeaW9Woc(4@V-vJe7uV?@O literal 11592 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 diff --git a/F0:F030,F042,F072/usbcan/version.inc b/F0:F030,F042,F072/usbcan/version.inc new file mode 100644 index 0000000..ffbe84f --- /dev/null +++ b/F0:F030,F042,F072/usbcan/version.inc @@ -0,0 +1,2 @@ +#define BUILD_NUMBER "1" +#define BUILD_DATE "2023-01-18" diff --git a/F0:F030,F042,F072/usbcan_ringbuffer/Makefile b/F0:F030,F042,F072/usbcan_ringbuffer/Makefile index a997924..f959722 100644 --- a/F0:F030,F042,F072/usbcan_ringbuffer/Makefile +++ b/F0:F030,F042,F072/usbcan_ringbuffer/Makefile @@ -1,161 +1,8 @@ -BINARY = usbcan -BOOTPORT ?= /dev/ttyUSB0 -BOOTSPEED ?= 115200 -INDEPENDENT_HEADERS= -# MCU FAMILY -FAMILY ?= F0 +BINARY := usbcan # MCU code -MCU ?= F042x6 +MCU := F042x6 # change this linking script depending on particular MCU model, -LDSCRIPT ?= stm32f042x6.ld -#DEFS = -DEBUG +LDSCRIPT := stm32f042x6.ld -# autoincremental version & build date -VERSION_FILE = version.inc -ifeq ($(shell test -e $(VERSION_FILE) && echo -n yes), yes) - NEXTVER := $(shell expr $$(awk '/#define BUILD_NUMBER/' $(VERSION_FILE) | tr -cd "[0-9]") + 1) -else - NEXTVER := "1" -endif - -BUILDDATE := $(shell date +%Y-%m-%d) - -FP_FLAGS ?= -msoft-float -# -mfloat-abi=soft -ASM_FLAGS ?= -mthumb -mcpu=cortex-m0 -march=armv6-m -mtune=cortex-m0 -ARCH_FLAGS = $(ASM_FLAGS) $(FP_FLAGS) - -############################################################################### -# Executables -#PREFIX ?= arm-none-eabi -# gcc from arm web site -PREFIX ?= /opt/bin/arm-none-eabi -TOOLCHLIB ?= /opt/arm-none-eabi/lib -RM := rm -f -RMDIR := rmdir -CC := $(PREFIX)-gcc -LD := $(PREFIX)-gcc -AR := $(PREFIX)-ar -AS := $(PREFIX)-as -SIZE := $(PREFIX)-size -OBJCOPY := $(PREFIX)-objcopy -OBJDUMP := $(PREFIX)-objdump -GDB := $(PREFIX)-gdb -STFLASH := $(shell which st-flash) -STBOOT := $(shell which stm32flash) -DFUUTIL := $(shell which dfu-util) - -############################################################################### -# Source files -OBJDIR := mk -SRC := $(wildcard *.c) -OBJS := $(addprefix $(OBJDIR)/, $(SRC:%.c=%.o)) -STARTUP = $(OBJDIR)/startup.o -OBJS += $(STARTUP) -MAP = $(OBJDIR)/$(BINARY).map -# dependencies: we need them to recompile files if their headers-dependencies changed -DEPS := $(OBJS:.o=.d) - -INC_DIR ?= ../inc - -INCLUDE := -I$(INC_DIR)/Fx -I$(INC_DIR)/cm -LIB_DIR := $(INC_DIR)/ld - -############################################################################### -# C flags -CFLAGS += -O2 -g -MD -D__thumb2__=1 -CFLAGS += -Wall -Werror -Wextra -Wshadow -Wimplicit-function-declaration -Wredundant-decls -CFLAGS += -fno-common -ffunction-sections -fdata-sections -# -fno-stack-protector -fshort-enums -CFLAGS += $(ARCH_FLAGS) $(INCLUDE) - -############################################################################### -# Linker flags -LDFLAGS += -nostartfiles --static -Wl,--print-memory-usage -# --specs=nano.specs -nostdlib -LDFLAGS += -Wl,-Map=$(MAP) -Wl,--gc-sections -LDFLAGS += -L$(LIB_DIR) -L$(TOOLCHLIB) -LDFLAGS += -T$(LDSCRIPT) $(ARCH_FLAGS) - -############################################################################### -# Used libraries -LDLIBS += -Wl,--start-group -lc -lgcc -Wl,--end-group $(shell $(CC) $(CFLAGS) -print-libgcc-file-name) - -DEFS += -DSTM32$(FAMILY) -DSTM32$(MCU) - -ELF := $(OBJDIR)/$(BINARY).elf -LIST := $(OBJDIR)/$(BINARY).list -BIN := $(BINARY).bin -HEX := $(BINARY).hex - -all: bin list size - -elf: $(ELF) -bin: $(BIN) -hex: $(HEX) -list: $(LIST) - -ifneq ($(MAKECMDGOALS),clean) --include $(DEPS) -endif - -$(OBJDIR): - mkdir $(OBJDIR) - -$(STARTUP): $(INC_DIR)/startup/vector.c - $(CC) $(CFLAGS) $(DEFS) $(INCLUDE) -o $@ -c $< - -$(VERSION_FILE): *.[ch] - [ -f $(VERSION_FILE) ] || echo -e "#define BUILD_NUMBER \"0\"\n#define BUILD_DATE \"none\"" > $(VERSION_FILE) - @echo " Generate version: $(NEXTVER) for date $(BUILDDATE)" - @sed -i "s/#define BUILD_NUMBER.*/#define BUILD_NUMBER \"$(NEXTVER)\"/" $(VERSION_FILE) - @sed -i "s/#define BUILD_DATE.*/#define BUILD_DATE \"$(BUILDDATE)\"/" $(VERSION_FILE) - -$(OBJDIR)/proto.o: proto.c $(VERSION_FILE) - -$(OBJDIR)/%.o: %.c - @echo " CC $<" - $(CC) $(CFLAGS) $(DEFS) $(INCLUDE) -o $@ -c $< - -$(BIN): $(ELF) - @echo " OBJCOPY $(BIN)" - $(OBJCOPY) -Obinary $(ELF) $(BIN) - -$(HEX): $(ELF) - @echo " OBJCOPY $(HEX)" - $(OBJCOPY) -Oihex $(ELF) $(HEX) - -$(LIST): $(ELF) - @echo " OBJDUMP $(LIST)" - $(OBJDUMP) -S $(ELF) > $(LIST) - -$(ELF): $(OBJDIR) $(OBJS) - @echo " LD $(ELF)" - $(LD) $(LDFLAGS) $(OBJS) $(LDLIBS) -o $(ELF) - -size: $(ELF) - $(SIZE) $(ELF) - -clean: - @echo " CLEAN" - $(RM) $(OBJS) $(DEPS) $(ELF) $(HEX) $(LIST) $(MAP) - @rmdir $(OBJDIR) 2>/dev/null || true - -flash: $(BIN) - @echo " FLASH $(BIN)" - $(STFLASH) --reset write $(BIN) 0x8000000 - -boot: $(BIN) - @echo " LOAD $(BIN) through bootloader" - $(STBOOT) -b$(BOOTSPEED) $(BOOTPORT) -w $(BIN) - -dfuboot: $(BIN) - @echo " LOAD $(BIN) THROUGH DFU" - $(DFUUTIL) -a0 -D $(BIN) -s 0x08000000 - -openocd: - openocd -f openocd.cfg -dbg: - arm-none-eabi-gdb $(ELF) -ex 'target remote localhost:3333' -ex 'monitor reset halt' - -.PHONY: clean flash boot dfuboot size dbg openocd +include ../makefile.f0 +include ../../makefile.stm32 diff --git a/F0:F030,F042,F072/usbcan_ringbuffer/Makefile.old b/F0:F030,F042,F072/usbcan_ringbuffer/Makefile.old new file mode 100644 index 0000000..a997924 --- /dev/null +++ b/F0:F030,F042,F072/usbcan_ringbuffer/Makefile.old @@ -0,0 +1,161 @@ +BINARY = usbcan +BOOTPORT ?= /dev/ttyUSB0 +BOOTSPEED ?= 115200 +INDEPENDENT_HEADERS= +# MCU FAMILY +FAMILY ?= F0 +# MCU code +MCU ?= F042x6 +# change this linking script depending on particular MCU model, +LDSCRIPT ?= stm32f042x6.ld +#DEFS = -DEBUG + +# autoincremental version & build date +VERSION_FILE = version.inc +ifeq ($(shell test -e $(VERSION_FILE) && echo -n yes), yes) + NEXTVER := $(shell expr $$(awk '/#define BUILD_NUMBER/' $(VERSION_FILE) | tr -cd "[0-9]") + 1) +else + NEXTVER := "1" +endif + +BUILDDATE := $(shell date +%Y-%m-%d) + +FP_FLAGS ?= -msoft-float +# -mfloat-abi=soft +ASM_FLAGS ?= -mthumb -mcpu=cortex-m0 -march=armv6-m -mtune=cortex-m0 +ARCH_FLAGS = $(ASM_FLAGS) $(FP_FLAGS) + +############################################################################### +# Executables +#PREFIX ?= arm-none-eabi +# gcc from arm web site +PREFIX ?= /opt/bin/arm-none-eabi +TOOLCHLIB ?= /opt/arm-none-eabi/lib +RM := rm -f +RMDIR := rmdir +CC := $(PREFIX)-gcc +LD := $(PREFIX)-gcc +AR := $(PREFIX)-ar +AS := $(PREFIX)-as +SIZE := $(PREFIX)-size +OBJCOPY := $(PREFIX)-objcopy +OBJDUMP := $(PREFIX)-objdump +GDB := $(PREFIX)-gdb +STFLASH := $(shell which st-flash) +STBOOT := $(shell which stm32flash) +DFUUTIL := $(shell which dfu-util) + +############################################################################### +# Source files +OBJDIR := mk +SRC := $(wildcard *.c) +OBJS := $(addprefix $(OBJDIR)/, $(SRC:%.c=%.o)) +STARTUP = $(OBJDIR)/startup.o +OBJS += $(STARTUP) +MAP = $(OBJDIR)/$(BINARY).map +# dependencies: we need them to recompile files if their headers-dependencies changed +DEPS := $(OBJS:.o=.d) + +INC_DIR ?= ../inc + +INCLUDE := -I$(INC_DIR)/Fx -I$(INC_DIR)/cm +LIB_DIR := $(INC_DIR)/ld + +############################################################################### +# C flags +CFLAGS += -O2 -g -MD -D__thumb2__=1 +CFLAGS += -Wall -Werror -Wextra -Wshadow -Wimplicit-function-declaration -Wredundant-decls +CFLAGS += -fno-common -ffunction-sections -fdata-sections +# -fno-stack-protector -fshort-enums +CFLAGS += $(ARCH_FLAGS) $(INCLUDE) + +############################################################################### +# Linker flags +LDFLAGS += -nostartfiles --static -Wl,--print-memory-usage +# --specs=nano.specs -nostdlib +LDFLAGS += -Wl,-Map=$(MAP) -Wl,--gc-sections +LDFLAGS += -L$(LIB_DIR) -L$(TOOLCHLIB) +LDFLAGS += -T$(LDSCRIPT) $(ARCH_FLAGS) + +############################################################################### +# Used libraries +LDLIBS += -Wl,--start-group -lc -lgcc -Wl,--end-group $(shell $(CC) $(CFLAGS) -print-libgcc-file-name) + +DEFS += -DSTM32$(FAMILY) -DSTM32$(MCU) + +ELF := $(OBJDIR)/$(BINARY).elf +LIST := $(OBJDIR)/$(BINARY).list +BIN := $(BINARY).bin +HEX := $(BINARY).hex + +all: bin list size + +elf: $(ELF) +bin: $(BIN) +hex: $(HEX) +list: $(LIST) + +ifneq ($(MAKECMDGOALS),clean) +-include $(DEPS) +endif + +$(OBJDIR): + mkdir $(OBJDIR) + +$(STARTUP): $(INC_DIR)/startup/vector.c + $(CC) $(CFLAGS) $(DEFS) $(INCLUDE) -o $@ -c $< + +$(VERSION_FILE): *.[ch] + [ -f $(VERSION_FILE) ] || echo -e "#define BUILD_NUMBER \"0\"\n#define BUILD_DATE \"none\"" > $(VERSION_FILE) + @echo " Generate version: $(NEXTVER) for date $(BUILDDATE)" + @sed -i "s/#define BUILD_NUMBER.*/#define BUILD_NUMBER \"$(NEXTVER)\"/" $(VERSION_FILE) + @sed -i "s/#define BUILD_DATE.*/#define BUILD_DATE \"$(BUILDDATE)\"/" $(VERSION_FILE) + +$(OBJDIR)/proto.o: proto.c $(VERSION_FILE) + +$(OBJDIR)/%.o: %.c + @echo " CC $<" + $(CC) $(CFLAGS) $(DEFS) $(INCLUDE) -o $@ -c $< + +$(BIN): $(ELF) + @echo " OBJCOPY $(BIN)" + $(OBJCOPY) -Obinary $(ELF) $(BIN) + +$(HEX): $(ELF) + @echo " OBJCOPY $(HEX)" + $(OBJCOPY) -Oihex $(ELF) $(HEX) + +$(LIST): $(ELF) + @echo " OBJDUMP $(LIST)" + $(OBJDUMP) -S $(ELF) > $(LIST) + +$(ELF): $(OBJDIR) $(OBJS) + @echo " LD $(ELF)" + $(LD) $(LDFLAGS) $(OBJS) $(LDLIBS) -o $(ELF) + +size: $(ELF) + $(SIZE) $(ELF) + +clean: + @echo " CLEAN" + $(RM) $(OBJS) $(DEPS) $(ELF) $(HEX) $(LIST) $(MAP) + @rmdir $(OBJDIR) 2>/dev/null || true + +flash: $(BIN) + @echo " FLASH $(BIN)" + $(STFLASH) --reset write $(BIN) 0x8000000 + +boot: $(BIN) + @echo " LOAD $(BIN) through bootloader" + $(STBOOT) -b$(BOOTSPEED) $(BOOTPORT) -w $(BIN) + +dfuboot: $(BIN) + @echo " LOAD $(BIN) THROUGH DFU" + $(DFUUTIL) -a0 -D $(BIN) -s 0x08000000 + +openocd: + openocd -f openocd.cfg +dbg: + arm-none-eabi-gdb $(ELF) -ex 'target remote localhost:3333' -ex 'monitor reset halt' + +.PHONY: clean flash boot dfuboot size dbg openocd diff --git a/F0:F030,F042,F072/usbcan_ringbuffer/usbcan.bin b/F0:F030,F042,F072/usbcan_ringbuffer/usbcan.bin index 570f512203b90ead8c37a967d1ba6b41a741401b..fb8059e3d96946e4000eba6067807e18adfb209c 100755 GIT binary patch delta 7852 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 delta 7894 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 diff --git a/F1:F103/Canon_managing_device/Makefile b/F1:F103/Canon_managing_device/Makefile index 2fe3391..f225445 100644 --- a/F1:F103/Canon_managing_device/Makefile +++ b/F1:F103/Canon_managing_device/Makefile @@ -1,151 +1,9 @@ -BINARY = canonusb -BOOTPORT ?= /dev/ttyUSB0 -BOOTSPEED ?= 115200 -# MCU FAMILY -FAMILY ?= F1 +BINARY := canonusb # MCU code -MCU ?= F103x8 -# density (stm32f10x.h, lines 70-84) -DENSITY ?= LD +MCU ?= F103x8 # change this linking script depending on particular MCU model, -LDSCRIPT ?= stm32f103x8.ld -# debug -#DEFS = -DEBUG +LDSCRIPT ?= stm32f103x8.ld +DEFINES := -DSTM32F10X_LD -# autoincremental version & build date -VERSION_FILE = version.inc -NEXTVER := $(shell expr $$(awk '/#define BUILD_NUMBER/' $(VERSION_FILE) | tr -cd "[0-9]") + 1) -BUILDDATE := $(shell date +%Y-%m-%d) - -INDEPENDENT_HEADERS= - -FP_FLAGS ?= -msoft-float -mfloat-abi=soft -ASM_FLAGS ?= -mthumb -mcpu=cortex-m3 -mfix-cortex-m3-ldrd -ARCH_FLAGS = $(ASM_FLAGS) $(FP_FLAGS) - -############################################################################### -# Executables -#PREFIX ?= arm-none-eabi -# gcc from arm web site -PREFIX ?= /opt/bin/arm-none-eabi -TOOLCHLIB ?= /opt/arm-none-eabi/lib -RM := rm -f -RMDIR := rmdir -CC := $(PREFIX)-gcc -LD := $(PREFIX)-gcc -AR := $(PREFIX)-ar -AS := $(PREFIX)-as -SIZE := $(PREFIX)-size -OBJCOPY := $(PREFIX)-objcopy -OBJDUMP := $(PREFIX)-objdump -GDB := $(PREFIX)-gdb -STFLASH := $(shell which st-flash) -STBOOT := $(shell which stm32flash) -DFUUTIL := $(shell which dfu-util) - -############################################################################### -# Source files -OBJDIR := mk -SRC := $(wildcard *.c) -OBJS := $(addprefix $(OBJDIR)/, $(SRC:%.c=%.o)) -STARTUP = $(OBJDIR)/startup.o -OBJS += $(STARTUP) -# dependencies: we need them to recompile files if their headers-dependencies changed -DEPS := $(OBJS:.o=.d) - -INC_DIR ?= ../inc - -INCLUDE := -I$(INC_DIR)/Fx -I$(INC_DIR)/cm -LIB_DIR := $(INC_DIR)/ld - -############################################################################### -# C flags -CFLAGS += -O2 -g -D__thumb2__=1 -MD -g -gdwarf-2 -CFLAGS += -Wall -Werror -Wextra -Wshadow -CFLAGS += -fno-common -ffunction-sections -fdata-sections -fno-stack-protector -fshort-enums -CFLAGS += $(ARCH_FLAGS) - -############################################################################### -# Linker flags -LDFLAGS += -nostartfiles -nostdlib --static -Wl,--gc-sections -Wl,--print-memory-usage -LDFLAGS += -Wl,-Map=$(OBJDIR)/$(BINARY).map -#LDFLAGS += --static --gc-sections --print-memory-usage -LDFLAGS += -L$(LIB_DIR) -L$(TOOLCHLIB) -LDFLAGS += -T$(LDSCRIPT) - -############################################################################### -# Used libraries -LDLIBS += -lc -lgcc $(shell $(CC) $(CFLAGS) -print-libgcc-file-name) - -DEFS += -DSTM32$(FAMILY) -DSTM32$(MCU) -DSTM32F10X_$(DENSITY) - -ELF := $(OBJDIR)/$(BINARY).elf -LIST := $(OBJDIR)/$(BINARY).list -BIN := $(BINARY).bin -HEX := $(BINARY).hex - -all: bin list size - -elf: $(ELF) -bin: $(BIN) -hex: $(HEX) -list: $(LIST) - -ifneq ($(MAKECMDGOALS),clean) --include $(DEPS) -endif - -$(OBJDIR): - mkdir $(OBJDIR) - -$(STARTUP): $(INC_DIR)/startup/vector.c - $(CC) $(CFLAGS) $(DEFS) $(INCLUDE) -o $@ -c $< - -$(VERSION_FILE): *.[ch] - @echo " Generate version: $(NEXTVER) for date $(BUILDDATE)" - @sed -i "s/#define BUILD_NUMBER.*/#define BUILD_NUMBER \"$(NEXTVER)\"/" $(VERSION_FILE) - @sed -i "s/#define BUILD_DATE.*/#define BUILD_DATE \"$(BUILDDATE)\"/" $(VERSION_FILE) - -$(OBJDIR)/proto.o: proto.c $(VERSION_FILE) - -$(OBJDIR)/%.o: %.c - @echo " CC $<" - $(CC) $(CFLAGS) $(DEFS) $(INCLUDE) -o $@ -c $< - -$(BIN): $(ELF) - @echo " OBJCOPY $(BIN)" - $(OBJCOPY) -Obinary $(ELF) $(BIN) - -$(HEX): $(ELF) - @echo " OBJCOPY $(HEX)" - $(OBJCOPY) -Oihex $(ELF) $(HEX) - -$(LIST): $(ELF) - @echo " OBJDUMP $(LIST)" - $(OBJDUMP) -S $(ELF) > $(LIST) - -$(ELF): $(OBJDIR) $(OBJS) - @echo " LD $(ELF)" - $(LD) $(LDFLAGS) $(OBJS) $(LDLIBS) -o $(ELF) - -size: $(ELF) - $(SIZE) $(ELF) - -clean: - @echo " CLEAN" - @rm -rf $(OBJDIR) 2>/dev/null || true - - -flash: $(BIN) - @echo " FLASH $(BIN)" - $(STFLASH) write $(BIN) 0x8000000 - -boot: $(BIN) - @echo " LOAD $(BIN) through bootloader" - $(STBOOT) -b$(BOOTSPEED) $(BOOTPORT) -w $(BIN) - -dfuboot: $(BIN) - @echo " LOAD $(BIN) THROUGH DFU" - $(DFUUTIL) -a0 -D $(BIN) -s 0x08000000 - -.PHONY: clean flash boot +include ../makefile.f1 +include ../../makefile.stm32 diff --git a/F1:F103/Canon_managing_device/Makefile.old b/F1:F103/Canon_managing_device/Makefile.old new file mode 100644 index 0000000..2fe3391 --- /dev/null +++ b/F1:F103/Canon_managing_device/Makefile.old @@ -0,0 +1,151 @@ +BINARY = canonusb +BOOTPORT ?= /dev/ttyUSB0 +BOOTSPEED ?= 115200 +# MCU FAMILY +FAMILY ?= F1 +# MCU code +MCU ?= F103x8 +# density (stm32f10x.h, lines 70-84) +DENSITY ?= LD +# change this linking script depending on particular MCU model, +LDSCRIPT ?= stm32f103x8.ld +# debug +#DEFS = -DEBUG + +# autoincremental version & build date +VERSION_FILE = version.inc +NEXTVER := $(shell expr $$(awk '/#define BUILD_NUMBER/' $(VERSION_FILE) | tr -cd "[0-9]") + 1) +BUILDDATE := $(shell date +%Y-%m-%d) + +INDEPENDENT_HEADERS= + +FP_FLAGS ?= -msoft-float -mfloat-abi=soft +ASM_FLAGS ?= -mthumb -mcpu=cortex-m3 -mfix-cortex-m3-ldrd +ARCH_FLAGS = $(ASM_FLAGS) $(FP_FLAGS) + +############################################################################### +# Executables +#PREFIX ?= arm-none-eabi +# gcc from arm web site +PREFIX ?= /opt/bin/arm-none-eabi +TOOLCHLIB ?= /opt/arm-none-eabi/lib +RM := rm -f +RMDIR := rmdir +CC := $(PREFIX)-gcc +LD := $(PREFIX)-gcc +AR := $(PREFIX)-ar +AS := $(PREFIX)-as +SIZE := $(PREFIX)-size +OBJCOPY := $(PREFIX)-objcopy +OBJDUMP := $(PREFIX)-objdump +GDB := $(PREFIX)-gdb +STFLASH := $(shell which st-flash) +STBOOT := $(shell which stm32flash) +DFUUTIL := $(shell which dfu-util) + +############################################################################### +# Source files +OBJDIR := mk +SRC := $(wildcard *.c) +OBJS := $(addprefix $(OBJDIR)/, $(SRC:%.c=%.o)) +STARTUP = $(OBJDIR)/startup.o +OBJS += $(STARTUP) +# dependencies: we need them to recompile files if their headers-dependencies changed +DEPS := $(OBJS:.o=.d) + +INC_DIR ?= ../inc + +INCLUDE := -I$(INC_DIR)/Fx -I$(INC_DIR)/cm +LIB_DIR := $(INC_DIR)/ld + +############################################################################### +# C flags +CFLAGS += -O2 -g -D__thumb2__=1 -MD -g -gdwarf-2 +CFLAGS += -Wall -Werror -Wextra -Wshadow +CFLAGS += -fno-common -ffunction-sections -fdata-sections -fno-stack-protector -fshort-enums +CFLAGS += $(ARCH_FLAGS) + +############################################################################### +# Linker flags +LDFLAGS += -nostartfiles -nostdlib --static -Wl,--gc-sections -Wl,--print-memory-usage +LDFLAGS += -Wl,-Map=$(OBJDIR)/$(BINARY).map +#LDFLAGS += --static --gc-sections --print-memory-usage +LDFLAGS += -L$(LIB_DIR) -L$(TOOLCHLIB) +LDFLAGS += -T$(LDSCRIPT) + +############################################################################### +# Used libraries +LDLIBS += -lc -lgcc $(shell $(CC) $(CFLAGS) -print-libgcc-file-name) + +DEFS += -DSTM32$(FAMILY) -DSTM32$(MCU) -DSTM32F10X_$(DENSITY) + +ELF := $(OBJDIR)/$(BINARY).elf +LIST := $(OBJDIR)/$(BINARY).list +BIN := $(BINARY).bin +HEX := $(BINARY).hex + +all: bin list size + +elf: $(ELF) +bin: $(BIN) +hex: $(HEX) +list: $(LIST) + +ifneq ($(MAKECMDGOALS),clean) +-include $(DEPS) +endif + +$(OBJDIR): + mkdir $(OBJDIR) + +$(STARTUP): $(INC_DIR)/startup/vector.c + $(CC) $(CFLAGS) $(DEFS) $(INCLUDE) -o $@ -c $< + +$(VERSION_FILE): *.[ch] + @echo " Generate version: $(NEXTVER) for date $(BUILDDATE)" + @sed -i "s/#define BUILD_NUMBER.*/#define BUILD_NUMBER \"$(NEXTVER)\"/" $(VERSION_FILE) + @sed -i "s/#define BUILD_DATE.*/#define BUILD_DATE \"$(BUILDDATE)\"/" $(VERSION_FILE) + +$(OBJDIR)/proto.o: proto.c $(VERSION_FILE) + +$(OBJDIR)/%.o: %.c + @echo " CC $<" + $(CC) $(CFLAGS) $(DEFS) $(INCLUDE) -o $@ -c $< + +$(BIN): $(ELF) + @echo " OBJCOPY $(BIN)" + $(OBJCOPY) -Obinary $(ELF) $(BIN) + +$(HEX): $(ELF) + @echo " OBJCOPY $(HEX)" + $(OBJCOPY) -Oihex $(ELF) $(HEX) + +$(LIST): $(ELF) + @echo " OBJDUMP $(LIST)" + $(OBJDUMP) -S $(ELF) > $(LIST) + +$(ELF): $(OBJDIR) $(OBJS) + @echo " LD $(ELF)" + $(LD) $(LDFLAGS) $(OBJS) $(LDLIBS) -o $(ELF) + +size: $(ELF) + $(SIZE) $(ELF) + +clean: + @echo " CLEAN" + @rm -rf $(OBJDIR) 2>/dev/null || true + + +flash: $(BIN) + @echo " FLASH $(BIN)" + $(STFLASH) write $(BIN) 0x8000000 + +boot: $(BIN) + @echo " LOAD $(BIN) through bootloader" + $(STBOOT) -b$(BOOTSPEED) $(BOOTPORT) -w $(BIN) + +dfuboot: $(BIN) + @echo " LOAD $(BIN) THROUGH DFU" + $(DFUUTIL) -a0 -D $(BIN) -s 0x08000000 + +.PHONY: clean flash boot diff --git a/F1:F103/Canon_managing_device/canonusb.bin b/F1:F103/Canon_managing_device/canonusb.bin index 3293b8e9b84755a4a13855dc9b959e6b97cdffbf..e52fd1971d73927cda19d08f7ba03e316f7f9544 100755 GIT binary patch literal 7996 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 $(LIST) - -$(ELF): $(OBJDIR) $(OBJS) - @echo " LD $(ELF)" - $(LD) $(LDFLAGS) $(OBJS) $(LDLIBS) -o $(ELF) - -size: $(ELF) - $(SIZE) $(ELF) - -clean: - @echo " CLEAN" - $(RM) $(OBJS) $(DEPS) $(ELF) $(HEX) $(LIST) - @rmdir $(OBJDIR) 2>/dev/null || true - - -flash: $(BIN) - @echo " FLASH $(BIN)" - $(STFLASH) write $(BIN) 0x8000000 - -boot: $(BIN) - @echo " LOAD $(BIN) through bootloader" - $(STBOOT) -b$(BOOTSPEED) $(BOOTPORT) -w $(BIN) - -dfuboot: $(BIN) - @echo " LOAD $(BIN) THROUGH DFU" - $(DFUUTIL) -a0 -D $(BIN) -s 0x08000000 - -.PHONY: clean flash boot +include ../makefile.f1 +include ../../makefile.stm32 diff --git a/F1:F103/PL2303_ringbuffer/Makefile.old b/F1:F103/PL2303_ringbuffer/Makefile.old new file mode 100644 index 0000000..1d3be00 --- /dev/null +++ b/F1:F103/PL2303_ringbuffer/Makefile.old @@ -0,0 +1,151 @@ +BINARY = PL2303 +BOOTPORT ?= /dev/ttyUSB0 +BOOTSPEED ?= 115200 +# MCU FAMILY +FAMILY ?= F1 +# MCU code +MCU ?= F103x8 +# density (stm32f10x.h, lines 70-84) +DENSITY ?= MD +# change this linking script depending on particular MCU model, +LDSCRIPT ?= stm32f103x8.ld +# debug +#DEFS = -DEBUG + +# autoincremental version & build date +VERSION_FILE = version.inc +NEXTVER := $(shell expr $$(awk '/#define BUILD_NUMBER/' $(VERSION_FILE) | tr -cd "[0-9]") + 1) +BUILDDATE := $(shell date +%Y-%m-%d) + +INDEPENDENT_HEADERS= + +FP_FLAGS ?= -msoft-float -mfloat-abi=soft +ASM_FLAGS ?= -mthumb -mcpu=cortex-m3 -mfix-cortex-m3-ldrd +ARCH_FLAGS = $(ASM_FLAGS) $(FP_FLAGS) + +############################################################################### +# Executables +#PREFIX ?= arm-none-eabi +# gcc from arm web site +PREFIX ?= /opt/bin/arm-none-eabi +TOOLCHLIB ?= /opt/arm-none-eabi/lib +RM := rm -f +RMDIR := rmdir +CC := $(PREFIX)-gcc +# don't replace ld with gcc: the binary size would be much greater!! +LD := $(PREFIX)-ld +AR := $(PREFIX)-ar +AS := $(PREFIX)-as +SIZE := $(PREFIX)-size +OBJCOPY := $(PREFIX)-objcopy +OBJDUMP := $(PREFIX)-objdump +GDB := $(PREFIX)-gdb +STFLASH := $(shell which st-flash) +STBOOT := $(shell which stm32flash) +DFUUTIL := $(shell which dfu-util) + +############################################################################### +# Source files +OBJDIR := mk +SRC := $(wildcard *.c) +OBJS := $(addprefix $(OBJDIR)/, $(SRC:%.c=%.o)) +STARTUP = $(OBJDIR)/startup.o +OBJS += $(STARTUP) +# dependencies: we need them to recompile files if their headers-dependencies changed +DEPS := $(OBJS:.o=.d) + +INC_DIR ?= ../inc + +INCLUDE := -I$(INC_DIR)/Fx -I$(INC_DIR)/cm +LIB_DIR := $(INC_DIR)/ld + +############################################################################### +# C flags +CFLAGS += -O2 -g -D__thumb2__=1 -MD -g -gdwarf-2 +CFLAGS += -Wall -Werror -Wextra -Wshadow +CFLAGS += -fno-common -ffunction-sections -fdata-sections -fno-stack-protector -fshort-enums +CFLAGS += $(ARCH_FLAGS) + +############################################################################### +# Linker flags +LDFLAGS += -nostartfiles --static --gc-sections --print-memory-usage -specs=nano.specs +LDFLAGS += -L$(LIB_DIR) -L$(TOOLCHLIB) +LDFLAGS += -T$(LDSCRIPT) + +############################################################################### +# Used libraries +LDLIBS += -lc $(shell $(CC) $(CFLAGS) -print-libgcc-file-name) + +DEFS += -DSTM32$(FAMILY) -DSTM32$(MCU) -DSTM32F10X_$(DENSITY) + +ELF := $(OBJDIR)/$(BINARY).elf +LIST := $(OBJDIR)/$(BINARY).list +BIN := $(BINARY).bin +HEX := $(BINARY).hex + +all: bin list size + +elf: $(ELF) +bin: $(BIN) +hex: $(HEX) +list: $(LIST) + +ifneq ($(MAKECMDGOALS),clean) +-include $(DEPS) +endif + +$(OBJDIR): + mkdir $(OBJDIR) + +$(STARTUP): $(INC_DIR)/startup/vector.c + $(CC) $(CFLAGS) $(DEFS) $(INCLUDE) -o $@ -c $< + +$(VERSION_FILE): *.[ch] + @echo " Generate version: $(NEXTVER) for date $(BUILDDATE)" + @sed -i "s/#define BUILD_NUMBER.*/#define BUILD_NUMBER \"$(NEXTVER)\"/" $(VERSION_FILE) + @sed -i "s/#define BUILD_DATE.*/#define BUILD_DATE \"$(BUILDDATE)\"/" $(VERSION_FILE) + +$(OBJDIR)/proto.o: proto.c $(VERSION_FILE) + +$(OBJDIR)/%.o: %.c + @echo " CC $<" + $(CC) $(CFLAGS) $(DEFS) $(INCLUDE) -o $@ -c $< + +$(BIN): $(ELF) + @echo " OBJCOPY $(BIN)" + $(OBJCOPY) -Obinary $(ELF) $(BIN) + +$(HEX): $(ELF) + @echo " OBJCOPY $(HEX)" + $(OBJCOPY) -Oihex $(ELF) $(HEX) + +$(LIST): $(ELF) + @echo " OBJDUMP $(LIST)" + $(OBJDUMP) -S $(ELF) > $(LIST) + +$(ELF): $(OBJDIR) $(OBJS) + @echo " LD $(ELF)" + $(LD) $(LDFLAGS) $(OBJS) $(LDLIBS) -o $(ELF) + +size: $(ELF) + $(SIZE) $(ELF) + +clean: + @echo " CLEAN" + $(RM) $(OBJS) $(DEPS) $(ELF) $(HEX) $(LIST) + @rmdir $(OBJDIR) 2>/dev/null || true + + +flash: $(BIN) + @echo " FLASH $(BIN)" + $(STFLASH) write $(BIN) 0x8000000 + +boot: $(BIN) + @echo " LOAD $(BIN) through bootloader" + $(STBOOT) -b$(BOOTSPEED) $(BOOTPORT) -w $(BIN) + +dfuboot: $(BIN) + @echo " LOAD $(BIN) THROUGH DFU" + $(DFUUTIL) -a0 -D $(BIN) -s 0x08000000 + +.PHONY: clean flash boot diff --git a/F1:F103/PL2303_ringbuffer/PL2303.bin b/F1:F103/PL2303_ringbuffer/PL2303.bin index 4d080e29cb74350cdc3d5a6e56e05c3bd7a007f0..ece1e8adc76bf8fcc070e7586d470d8938e13b5c 100755 GIT binary patch literal 6660 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 diff --git a/F1:F103/makefile.f1 b/F1:F103/makefile.f1 new file mode 100644 index 0000000..bd73baf --- /dev/null +++ b/F1:F103/makefile.f1 @@ -0,0 +1,7 @@ +# common include for all F3 series +# MCU FAMILY +FAMILY ?= F1 + +FP_FLAGS ?= -msoft-float -fsingle-precision-constant -mlittle-endian +ASM_FLAGS ?= -mthumb -mcpu=cortex-m3 -mfix-cortex-m3-ldrd + diff --git a/F3:F303/PL2303/Makefile b/F3:F303/PL2303/Makefile index 1903586..3bd1054 100644 --- a/F3:F303/PL2303/Makefile +++ b/F3:F303/PL2303/Makefile @@ -1,187 +1,8 @@ -BINARY = pl2303 -BOOTPORT ?= /dev/ttyUSB0 -BOOTSPEED ?= 115200 -# MCU FAMILY -FAMILY ?= F3 +BINARY := pl2303 # MCU code -MCU ?= F303xb -# or __ARM_ARCH_7EM__ -ARMARCH = __ARM_ARCH_7M__ +MCU := F303xb # change this linking script depending on particular MCU model, -LDSCRIPT ?= stm32f303xB.ld +LDSCRIPT := stm32f303xB.ld -FP_FLAGS ?= -mfpu=fpv4-sp-d16 -mfloat-abi=hard -fsingle-precision-constant -mlittle-endian -DARM_MATH_CM4 -ASM_FLAGS ?= -mthumb -mcpu=cortex-m4 -ARCH_FLAGS = $(ASM_FLAGS) $(FP_FLAGS) -D $(ARMARCH) - -############################################################################### -# Executables -# PREFIX ?= arm-none-eabi -# gcc from arm web site -PREFIX ?= /opt/bin/arm-none-eabi -#TOOLCHLIB ?= /opt/arm-none-eabi/lib -RM := rm -f -RMDIR := rmdir -CC := $(PREFIX)-gcc -# don't replace ld with gcc: the binary size would be much greater!! -LD := $(PREFIX)-ld -AR := $(PREFIX)-ar -AS := $(PREFIX)-as -SIZE := $(PREFIX)-size -OBJCOPY := $(PREFIX)-objcopy -OBJDUMP := $(PREFIX)-objdump -GDB := $(PREFIX)-gdb -STFLASH := $(shell which st-flash) -STBOOT := $(shell which stm32flash) -DFUUTIL := $(shell which dfu-util) - -############################################################################### -# Source files -OBJDIR := mk -# target (debug/release) -TARGFILE := $(OBJDIR)/TARGET -# autoincremental version & build date -VERSION_FILE = version.inc -SRC := $(wildcard *.c) -OBJS := $(addprefix $(OBJDIR)/, $(SRC:%.c=%.o)) -STARTUP := $(OBJDIR)/startup.o -MAP := $(OBJDIR)/$(BINARY).map -OBJS += $(STARTUP) -# dependencies: we need them to recompile files if their headers-dependencies changed -DEPS := $(OBJS:.o=.d) - -INC_DIR ?= ../inc - -INCLUDE := -I$(INC_DIR)/Fx -I$(INC_DIR)/cm -LIB_DIR := $(INC_DIR)/ld - -############################################################################### -# C flags -CFLAGS += -g -gdwarf-2 # debuggin symbols in listing -CFLAGS += -O2 -D__thumb2__=1 -MD -CFLAGS += -Wall -Wextra -Wshadow -CFLAGS += -fshort-enums -ffunction-sections -fdata-sections -#CFLAGS += -fno-common -fno-stack-protector -CFLAGS += $(ARCH_FLAGS) - -############################################################################### -# Linker flags -LDFLAGS += -nostartfiles --static -specs=nosys.specs -specs=nano.specs -LDFLAGS += $(ARCH_FLAGS) -LDFLAGS += -L$(LIB_DIR) -#-L$(TOOLCHLIB) -LDFLAGS += -T$(LDSCRIPT) -LDFLAGS += -Wl,-Map=$(MAP),--cref -Wl,--gc-sections -Wl,--print-memory-usage - -############################################################################### -# Used libraries -LDLIBS += -lm -lc $(shell $(CC) $(CFLAGS) -print-libgcc-file-name) - -DEFS += -DSTM32$(FAMILY) -DSTM32$(MCU) - -ELF := $(OBJDIR)/$(BINARY).elf -LIST := $(OBJDIR)/$(BINARY).list -BIN := $(BINARY).bin -HEX := $(BINARY).hex - -ifeq ($(shell test -e $(TARGFILE) && echo -n yes),yes) - TARGET := $(file < $(TARGFILE)) -else - TARGET := RELEASE -endif - -ifeq ($(TARGET), DEBUG) - .DEFAULT_GOAL := debug -endif - -ifeq ($(shell test -e $(VERSION_FILE) && echo -n yes), yes) - NEXTVER := $(shell expr $$(awk '/#define BUILD_NUMBER/' $(VERSION_FILE) | tr -cd "[0-9]") + 1) -else - NEXTVER := "1" -endif -BUILDDATE := $(shell date +%Y-%m-%d) - -# release: add LTO -release: CFLAGS += -flto -release: LDFLAGS += -flto -release: $(TARGFILE) bin list size - -#debug: add debug flags -debug: CFLAGS += -DEBUG -Werror -g3 -debug: TARGET := DEBUG -debug: $(TARGFILE) bin list size - -$(TARGFILE): $(OBJDIR) - @echo -e "\t\tTARGET: $(TARGET)" - @echo "$(TARGET)" > $(TARGFILE) - -elf: $(ELF) -bin: $(BIN) -hex: $(HEX) -list: $(LIST) - -ifneq ($(MAKECMDGOALS),clean) --include $(DEPS) -endif - -$(OBJDIR): - mkdir $(OBJDIR) - -$(STARTUP): $(INC_DIR)/startup/vector.c - $(CC) $(CFLAGS) $(DEFS) $(INCLUDE) -o $@ -c $< - -$(VERSION_FILE): *.[ch] - @[ -f $(VERSION_FILE) ] || echo -e "#define BUILD_NUMBER \"0\"\n#define BUILD_DATE \"none\"" > $(VERSION_FILE) - @echo " Generate version: $(NEXTVER) for date $(BUILDDATE)" - @sed -i "s/#define BUILD_NUMBER.*/#define BUILD_NUMBER \"$(NEXTVER)\"/" $(VERSION_FILE) - @sed -i "s/#define BUILD_DATE.*/#define BUILD_DATE \"$(BUILDDATE)\"/" $(VERSION_FILE) - -$(OBJDIR)/proto.o: proto.c $(VERSION_FILE) - -$(OBJDIR)/%.o: %.c - @echo " CC $<" - $(CC) $(CFLAGS) $(DEFS) $(INCLUDE) -o $@ -c $< - -$(BIN): $(ELF) - @echo " OBJCOPY $(BIN)" - $(OBJCOPY) -Obinary $(ELF) $(BIN) - -$(HEX): $(ELF) - @echo " OBJCOPY $(HEX)" - $(OBJCOPY) -Oihex $(ELF) $(HEX) - -$(LIST): $(ELF) - @echo " OBJDUMP $(LIST)" - $(OBJDUMP) -S $(ELF) > $(LIST) - -$(ELF): $(OBJDIR) $(OBJS) - @echo " LD $(ELF)" - $(CC) $(LDFLAGS) $(OBJS) $(LDLIBS) -o $(ELF) - -size: $(ELF) - $(SIZE) $(ELF) - -clean: - @echo " CLEAN" - @rm -rf $(OBJDIR) 2>/dev/null || true - - -flash: $(BIN) - @echo " FLASH $(BIN)" - $(STFLASH) write $(BIN) 0x8000000 - -boot: $(BIN) - @echo " LOAD $(BIN) through bootloader" - $(STBOOT) -b$(BOOTSPEED) $(BOOTPORT) -w $(BIN) - -dfuboot: $(BIN) - @echo " LOAD $(BIN) THROUGH DFU" - $(DFUUTIL) -a0 -D $(BIN) -s 0x08000000 - -openocd: - openocd -f openocd.cfg - -dbg: - arm-none-eabi-gdb $(ELF) -ex 'target remote localhost:3333' -ex 'monitor reset halt' - -.PHONY: size clean flash boot dfuboot openocd dbg +include ../makefile.f3 +include ../../makefile.stm32 diff --git a/F3:F303/floatPrintf/Makefile b/F3:F303/floatPrintf/Makefile index bc5af43..d64f032 100644 --- a/F3:F303/floatPrintf/Makefile +++ b/F3:F303/floatPrintf/Makefile @@ -1,187 +1,9 @@ -BINARY = float -BOOTPORT ?= /dev/ttyUSB0 -BOOTSPEED ?= 115200 -# MCU FAMILY -FAMILY ?= F3 +BINARY := float # MCU code -MCU ?= F303xb -# or __ARM_ARCH_7EM__ -ARMARCH = __ARM_ARCH_7M__ +MCU := F303xb # change this linking script depending on particular MCU model, -LDSCRIPT ?= stm32f303xB.ld +LDSCRIPT := stm32f303xB.ld +LDLIBS := -lm -FP_FLAGS ?= -mfpu=fpv4-sp-d16 -mfloat-abi=hard -fsingle-precision-constant -mlittle-endian -DARM_MATH_CM4 -ASM_FLAGS ?= -mthumb -mcpu=cortex-m4 -ARCH_FLAGS = $(ASM_FLAGS) $(FP_FLAGS) -D $(ARMARCH) - -############################################################################### -# Executables -# PREFIX ?= arm-none-eabi -# gcc from arm web site -PREFIX ?= /opt/bin/arm-none-eabi -#TOOLCHLIB ?= /opt/arm-none-eabi/lib -RM := rm -f -RMDIR := rmdir -CC := $(PREFIX)-gcc -# don't replace ld with gcc: the binary size would be much greater!! -LD := $(PREFIX)-ld -AR := $(PREFIX)-ar -AS := $(PREFIX)-as -SIZE := $(PREFIX)-size -OBJCOPY := $(PREFIX)-objcopy -OBJDUMP := $(PREFIX)-objdump -GDB := $(PREFIX)-gdb -STFLASH := $(shell which st-flash) -STBOOT := $(shell which stm32flash) -DFUUTIL := $(shell which dfu-util) - -############################################################################### -# Source files -OBJDIR := mk -# target (debug/release) -TARGFILE := $(OBJDIR)/TARGET -# autoincremental version & build date -VERSION_FILE = version.inc -SRC := $(wildcard *.c) -OBJS := $(addprefix $(OBJDIR)/, $(SRC:%.c=%.o)) -STARTUP := $(OBJDIR)/startup.o -MAP := $(OBJDIR)/$(BINARY).map -OBJS += $(STARTUP) -# dependencies: we need them to recompile files if their headers-dependencies changed -DEPS := $(OBJS:.o=.d) - -INC_DIR ?= ../inc - -INCLUDE := -I$(INC_DIR)/Fx -I$(INC_DIR)/cm -LIB_DIR := $(INC_DIR)/ld - -############################################################################### -# C flags -CFLAGS += -g -gdwarf-2 # debuggin symbols in listing -CFLAGS += -O2 -D__thumb2__=1 -MD -CFLAGS += -Wall -Wextra -Wshadow -CFLAGS += -fshort-enums -ffunction-sections -fdata-sections -#CFLAGS += -fno-common -fno-stack-protector -CFLAGS += $(ARCH_FLAGS) - -############################################################################### -# Linker flags -LDFLAGS += -nostartfiles --static -specs=nosys.specs -specs=nano.specs -LDFLAGS += $(ARCH_FLAGS) -LDFLAGS += -L$(LIB_DIR) -#-L$(TOOLCHLIB) -LDFLAGS += -T$(LDSCRIPT) -LDFLAGS += -Wl,-Map=$(MAP),--cref -Wl,--gc-sections -Wl,--print-memory-usage - -############################################################################### -# Used libraries -LDLIBS += -lm -lc $(shell $(CC) $(CFLAGS) -print-libgcc-file-name) - -DEFS += -DSTM32$(FAMILY) -DSTM32$(MCU) - -ELF := $(OBJDIR)/$(BINARY).elf -LIST := $(OBJDIR)/$(BINARY).list -BIN := $(BINARY).bin -HEX := $(BINARY).hex - -ifeq ($(shell test -e $(TARGFILE) && echo -n yes),yes) - TARGET := $(file < $(TARGFILE)) -else - TARGET := RELEASE -endif - -ifeq ($(TARGET), DEBUG) - .DEFAULT_GOAL := debug -endif - -ifeq ($(shell test -e $(VERSION_FILE) && echo -n yes), yes) - NEXTVER := $(shell expr $$(awk '/#define BUILD_NUMBER/' $(VERSION_FILE) | tr -cd "[0-9]") + 1) -else - NEXTVER := "1" -endif -BUILDDATE := $(shell date +%Y-%m-%d) - -# release: add LTO -release: CFLAGS += -flto -release: LDFLAGS += -flto -release: $(TARGFILE) bin list size - -#debug: add debug flags -debug: CFLAGS += -DEBUG -Werror -g3 -debug: TARGET := DEBUG -debug: $(TARGFILE) bin list size - -$(TARGFILE): $(OBJDIR) - @echo -e "\t\tTARGET: $(TARGET)" - @echo "$(TARGET)" > $(TARGFILE) - -elf: $(ELF) -bin: $(BIN) -hex: $(HEX) -list: $(LIST) - -ifneq ($(MAKECMDGOALS),clean) --include $(DEPS) -endif - -$(OBJDIR): - mkdir $(OBJDIR) - -$(STARTUP): $(INC_DIR)/startup/vector.c - $(CC) $(CFLAGS) $(DEFS) $(INCLUDE) -o $@ -c $< - -$(VERSION_FILE): *.[ch] - @[ -f $(VERSION_FILE) ] || echo -e "#define BUILD_NUMBER \"0\"\n#define BUILD_DATE \"none\"" > $(VERSION_FILE) - @echo " Generate version: $(NEXTVER) for date $(BUILDDATE)" - @sed -i "s/#define BUILD_NUMBER.*/#define BUILD_NUMBER \"$(NEXTVER)\"/" $(VERSION_FILE) - @sed -i "s/#define BUILD_DATE.*/#define BUILD_DATE \"$(BUILDDATE)\"/" $(VERSION_FILE) - -#$(OBJDIR)/proto.o: proto.c $(VERSION_FILE) - -$(OBJDIR)/%.o: %.c - @echo " CC $<" - $(CC) $(CFLAGS) $(DEFS) $(INCLUDE) -o $@ -c $< - -$(BIN): $(ELF) - @echo " OBJCOPY $(BIN)" - $(OBJCOPY) -Obinary $(ELF) $(BIN) - -$(HEX): $(ELF) - @echo " OBJCOPY $(HEX)" - $(OBJCOPY) -Oihex $(ELF) $(HEX) - -$(LIST): $(ELF) - @echo " OBJDUMP $(LIST)" - $(OBJDUMP) -S $(ELF) > $(LIST) - -$(ELF): $(OBJDIR) $(OBJS) - @echo " LD $(ELF)" - $(CC) $(LDFLAGS) $(OBJS) $(LDLIBS) -o $(ELF) - -size: $(ELF) - $(SIZE) $(ELF) - -clean: - @echo " CLEAN" - @rm -rf $(OBJDIR) 2>/dev/null || true - - -flash: $(BIN) - @echo " FLASH $(BIN)" - $(STFLASH) write $(BIN) 0x8000000 - -boot: $(BIN) - @echo " LOAD $(BIN) through bootloader" - $(STBOOT) -b$(BOOTSPEED) $(BOOTPORT) -w $(BIN) - -dfuboot: $(BIN) - @echo " LOAD $(BIN) THROUGH DFU" - $(DFUUTIL) -a0 -D $(BIN) -s 0x08000000 - -openocd: - openocd -f openocd.cfg - -dbg: - arm-none-eabi-gdb $(ELF) -ex 'target remote localhost:3333' -ex 'monitor reset halt' - -.PHONY: size clean flash boot dfuboot openocd dbg +include ../makefile.f3 +include ../../makefile.stm32 diff --git a/F3:F303/makefile.f3 b/F3:F303/makefile.f3 new file mode 100644 index 0000000..1203008 --- /dev/null +++ b/F3:F303/makefile.f3 @@ -0,0 +1,7 @@ +# common include for all F3 series +# MCU FAMILY +FAMILY ?= F3 +# or __ARM_ARCH_7EM__ +ARMARCH = -D__ARM_ARCH_7M__ +FP_FLAGS ?= -mfpu=fpv4-sp-d16 -mfloat-abi=hard -fsingle-precision-constant -mlittle-endian -DARM_MATH_CM4 +ASM_FLAGS ?= -mthumb -mcpu=cortex-m4 -march=armv7e-m diff --git a/TODO b/TODO index 045ca1f..716ce71 100644 --- a/TODO +++ b/TODO @@ -1 +1 @@ -add -flto \ No newline at end of file +Move everything to new Makefile structure! diff --git a/makefile.stm32 b/makefile.stm32 new file mode 100644 index 0000000..d69ab20 --- /dev/null +++ b/makefile.stm32 @@ -0,0 +1,176 @@ +# common include for all STM32 chips +BOOTPORT ?= /dev/ttyUSB0 +BOOTSPEED ?= 115200 + +ARCH_FLAGS = $(ASM_FLAGS) $(FP_FLAGS) $(DEFINES) + +############################################################################### +# Executables +# PREFIX ?= arm-none-eabi +# gcc from arm web site +PREFIX ?= /opt/bin/arm-none-eabi +#TOOLCHLIB ?= /opt/arm-none-eabi/lib +RM := rm -f +RMDIR := rmdir +CC := $(PREFIX)-gcc +# don't replace ld with gcc: the binary size would be much greater!! +LD := $(PREFIX)-gcc +AR := $(PREFIX)-ar +AS := $(PREFIX)-as +SIZE := $(PREFIX)-size +OBJCOPY := $(PREFIX)-objcopy +OBJDUMP := $(PREFIX)-objdump +GDB := $(PREFIX)-gdb +STFLASH := $(shell which st-flash) +STBOOT := $(shell which stm32flash) +DFUUTIL := $(shell which dfu-util) + +############################################################################### +# Source files +OBJDIR := mk +# target (debug/release) +TARGFILE := $(OBJDIR)/TARGET +# autoincremental version & build date +VERSION_FILE = version.inc +SRC := $(wildcard *.c) +OBJS := $(addprefix $(OBJDIR)/, $(SRC:%.c=%.o)) +STARTUP := $(OBJDIR)/startup.o +MAP := $(OBJDIR)/$(BINARY).map +OBJS += $(STARTUP) +# dependencies: we need them to recompile files if their headers-dependencies changed +DEPS := $(OBJS:.o=.d) + +INC_DIR ?= ../inc + +INCLUDE := -I$(INC_DIR)/Fx -I$(INC_DIR)/cm +LIB_DIR := $(INC_DIR)/ld + +############################################################################### +# C flags +CFLAGS += -O2 -D__thumb2__=1 -MD +CFLAGS += -Wall -Wextra -Wshadow +CFLAGS += -fshort-enums -ffunction-sections -fdata-sections +#CFLAGS += -fno-common -fno-stack-protector +CFLAGS += $(ARCH_FLAGS) + +############################################################################### +# Linker flags +LDFLAGS += -nostartfiles --static -specs=nosys.specs -specs=nano.specs +LDFLAGS += $(ARCH_FLAGS) +LDFLAGS += -L$(LIB_DIR) +#-L$(TOOLCHLIB) +LDFLAGS += -T$(LDSCRIPT) +LDFLAGS += -Wl,-Map=$(MAP),--cref -Wl,--gc-sections -Wl,--print-memory-usage + +############################################################################### +# Used libraries +LDLIBS += -lc $(shell $(CC) $(CFLAGS) -print-libgcc-file-name) + +DEFS += -DSTM32$(FAMILY) -DSTM32$(MCU) + +ELF := $(OBJDIR)/$(BINARY).elf +LIST := $(OBJDIR)/$(BINARY).list +BIN := $(BINARY).bin +HEX := $(BINARY).hex + +ifeq ($(shell test -e $(TARGFILE) && echo -n yes),yes) + TARGET := $(file < $(TARGFILE)) +else + TARGET := RELEASE +endif + +ifeq ($(TARGET), DEBUG) + .DEFAULT_GOAL := debug +endif + +ifeq ($(shell test -e $(VERSION_FILE) && echo -n yes), yes) + NEXTVER := $(shell expr $$(awk '/#define BUILD_NUMBER/' $(VERSION_FILE) | tr -cd "[0-9]") + 1) +else + NEXTVER := "1" +endif +BUILDDATE := $(shell date +%Y-%m-%d) + +# release: add LTO +release: CFLAGS += -flto +release: LDFLAGS += -flto +release: $(TARGFILE) bin list size + +#debug: add debug flags +debug: CFLAGS += -DEBUG -Werror -g3 -gdwarf-2 +debug: TARGET := DEBUG +debug: $(TARGFILE) bin list size + +$(TARGFILE): $(OBJDIR) + @echo -e "\t\tTARGET: $(TARGET)" + @echo "$(TARGET)" > $(TARGFILE) + +elf: $(ELF) +bin: $(BIN) +hex: $(HEX) +list: $(LIST) + +ifneq ($(MAKECMDGOALS),clean) +-include $(DEPS) +endif + +$(OBJDIR): + mkdir $(OBJDIR) + +$(STARTUP): $(INC_DIR)/startup/vector.c + $(CC) $(CFLAGS) $(DEFS) $(INCLUDE) -o $@ -c $< + +$(VERSION_FILE): *.[ch] + @[ -f $(VERSION_FILE) ] || echo -e "#define BUILD_NUMBER \"0\"\n#define BUILD_DATE \"none\"" > $(VERSION_FILE) + @echo " Generate version: $(NEXTVER) for date $(BUILDDATE)" + @sed -i "s/#define BUILD_NUMBER.*/#define BUILD_NUMBER \"$(NEXTVER)\"/" $(VERSION_FILE) + @sed -i "s/#define BUILD_DATE.*/#define BUILD_DATE \"$(BUILDDATE)\"/" $(VERSION_FILE) + +$(OBJDIR)/proto.o: proto.c $(VERSION_FILE) + +$(OBJDIR)/%.o: %.c + @echo " CC $<" + $(CC) $(CFLAGS) $(DEFS) $(INCLUDE) -o $@ -c $< + +$(BIN): $(ELF) + @echo " OBJCOPY $(BIN)" + $(OBJCOPY) -Obinary $(ELF) $(BIN) + +$(HEX): $(ELF) + @echo " OBJCOPY $(HEX)" + $(OBJCOPY) -Oihex $(ELF) $(HEX) + +$(LIST): $(ELF) + @echo " OBJDUMP $(LIST)" + $(OBJDUMP) -S $(ELF) > $(LIST) + +$(ELF): $(OBJDIR) $(OBJS) + @echo " LD $(ELF)" + $(LD) $(LDFLAGS) $(OBJS) $(LDLIBS) -o $(ELF) + +size: $(ELF) + $(SIZE) $(ELF) + +clean: + @echo " CLEAN" + @rm -rf $(OBJDIR) 2>/dev/null || true + + +flash: $(BIN) + @echo " FLASH $(BIN)" + $(STFLASH) write $(BIN) 0x8000000 + +boot: $(BIN) + @echo " LOAD $(BIN) through bootloader" + $(STBOOT) -b$(BOOTSPEED) $(BOOTPORT) -w $(BIN) + +dfuboot: $(BIN) + @echo " LOAD $(BIN) THROUGH DFU" + $(DFUUTIL) -a0 -D $(BIN) -s 0x08000000 + +openocd: + openocd -f openocd.cfg + +dbg: + arm-none-eabi-gdb $(ELF) -ex 'target remote localhost:3333' -ex 'monitor reset halt' + +.PHONY: size clean flash boot dfuboot openocd dbg