Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
a779298deThis file is pinned to the selected release. Download the original to open it in your design tool.
# Optimization level, can be [0, 1, 2, 3, s].
# 0 = turn off optimization. s = optimize for size.
#
OPT = -O1
# OPT = -O1 # for debugging
# Object files directory
# Warning: this will be removed by make clean!
#
OBJDIR = obj_app
# Target file name (without extension)
TARGET = $(OBJDIR)/stmbl
# Define all C source files (dependencies are generated automatically)
INCDIRS += inc
INCDIRS += inc/comps
INCDIRS += inc/comps/hw
INCDIRS += inc/shared_comps
INCDIRS += shared
SOURCES += src/main.c
SOURCES += src/stm32f4xx_it.c
SOURCES += src/system_stm32f4xx.c #TODO: update this, system file from cmsis
SOURCES += src/setup.c
SOURCES += src/usb_cdc.c
SOURCES += src/config.c
# SOURCES += src/hal_conf.c
SOURCES += src/hal_tbl.c
HWVERSION = v4
ifeq ($(HWVERSION),v3)
SRC_COMPS += src/comps/hw/io3.c
SRC_COMPS += src/comps/hvf1.c
SHARED_COMPS += shared/comps/pmsm.c
SHARED_COMPS += shared/comps/curpid.c
SHARED_COMPS += shared/comps/dq.c
SHARED_COMPS += shared/comps/idq.c
SHARED_COMPS += shared/common_f1.c
CFLAGS += -DV3
else
SRC_COMPS += src/comps/hw/io4.c
SRC_COMPS += src/comps/hv.c
#TODO: need backport to v3
SRC_COMPS += src/comps/enc_cmd.c
SRC_COMPS += src/comps/o_fb.c
SRC_COMPS += src/comps/sserial.c
SRC_COMPS += src/comps/yaskawa.c
SRC_COMPS += src/comps/encs.c
SRC_COMPS += src/comps/encf.c
SRC_COMPS += src/comps/endat.c
CFLAGS += -DV4
endif
SRC_COMPS += src/comps/usart.c
SRC_COMPS += src/comps/encm.c
SRC_COMPS += src/comps/dmm.c
SRC_COMPS += src/comps/smartabs.c
SRC_COMPS += src/comps/adc.c
SRC_COMPS += src/comps/enc_fb.c
SRC_COMPS += src/comps/conf.c
SRC_COMPS += src/comps/res.c
SRC_COMPS += src/comps/hx711.c
SHARED_COMPS += shared/comps/sim.c
SHARED_COMPS += shared/comps/term.c
SHARED_COMPS += shared/comps/svm.c
SHARED_COMPS += shared/comps/vel.c
SHARED_COMPS += shared/comps/rev.c
SHARED_COMPS += shared/comps/hal_test.c
# SHARED_COMPS += shared/comps/dc.c
SHARED_COMPS += shared/comps/ypid.c
SHARED_COMPS += shared/comps/fault.c
SHARED_COMPS += shared/comps/pid.c
SHARED_COMPS += shared/comps/spid.c
SHARED_COMPS += shared/comps/pe.c
SHARED_COMPS += shared/comps/pmsm_limits.c
SHARED_COMPS += shared/comps/pmsm_ttc.c
SHARED_COMPS += shared/comps/dc_limits.c
SHARED_COMPS += shared/comps/dc_ttc.c
SHARED_COMPS += shared/comps/acim_ttc.c
SHARED_COMPS += shared/comps/uvw.c
SHARED_COMPS += shared/comps/fanuc.c
SHARED_COMPS += shared/comps/fb_switch.c
SHARED_COMPS += shared/comps/reslimit.c
SHARED_COMPS += shared/comps/iit.c
SHARED_COMPS += shared/comps/vel_int.c
SHARED_COMPS += shared/comps/linrev.c
SHARED_COMPS += shared/comps/psi.c
SHARED_COMPS += shared/comps/stp.c
#SHARED_COMPS += shared/comps/uf.c
SHARED_COMPS += shared/comps/uf2.c
SHARED_COMPS += shared/comps/ramp.c
SHARED_COMPS += shared/comps/scale.c
SHARED_COMPS += shared/comps/idx_home.c
SHARED_COMPS += shared/comps/move.c
# SHARED_COMPS += shared/comps/ac.c
SHARED_COMPS += shared/comps/not.c
SHARED_COMPS += shared/comps/and.c
SHARED_COMPS += shared/comps/or.c
SHARED_COMPS += shared/comps/jog.c
SHARED_COMPS += shared/comps/velbuf.c
SHARED_COMPS += shared/comps/avg.c
SHARED_COMPS += shared/comps/mux.c
SHARED_COMPS += shared/comps/veltopos.c
# SHARED_COMPS += shared/comps/wobl.c
SHARED_COMPS += shared/comps/debounce.c
SHARED_COMPS += shared/comps/pos_filter.c
SHARED_COMPS += shared/comps/rl.c
SHARED_COMPS += shared/comps/mad.c
SHARED_COMPS += shared/comps/sensorless.c
SHARED_COMPS += shared/comps/field.c
SHARED_COMPS += shared/comps/gain.c
SHARED_COMPS += shared/comps/rlpsij.c
SHARED_COMPS += shared/comps/veltime.c
SHARED_COMPS += shared/comps/mpid.c
SHARED_COMPS += shared/comps/fmove.c
SHARED_COMPS += shared/comps/home.c
SHARED_COMPS += shared/comps/en.c
SHARED_COMPS += shared/comps/th.c
#SHARED_COMPS += shared/comps/asm.c
SHARED_COMPS += shared/comps/idpmsm.c
SHARED_COMPS += shared/comps/iddc.c
SHARED_COMPS += shared/comps/idm.c
SHARED_COMPS += shared/comps/ids.c
#SHARED_COMPS += shared/comps/motsim.c
COMPS = $(SRC_COMPS) $(SHARED_COMPS)
SOURCES += $(COMPS)
# SOURCES += src/eeprom.c
# SOURCES += src/link.c
SOURCES += src/version.c
SOURCES += src/syscalls.c
SOURCES += shared/crc.c
SOURCES += shared/crc8.c
SOURCES += shared/yaskawa_crc16.c
SOURCES += shared/endat.c
SOURCES += shared/angle.c
SOURCES += shared/hal.c
SOURCES += shared/commands.c
SOURCES += shared/config.c
SOURCES += src/conf_templates.c
SOURCES += shared/ringbuf.c
CONFIG_TEMPLATES = $(wildcard conf/template/*.txt)
USB_VCP_DIR = lib/STM32_USB_Device_VCP-1.2.0
CPPFLAGS += -DUSBD_PRODUCT_STRING='"STMBL Virtual ComPort"'
CPPFLAGS += -DCDC_IN_FRAME_INTERVAL=1
CPPFLAGS += -DAPP_RX_DATA_SIZE=4096
INCDIRS += $(USB_VCP_DIR)/inc
SOURCES += $(USB_VCP_DIR)/src/usbd_desc.c
USB_DEVICE_DIR = lib/STM32_USB_Device_Library-1.2.0
INCDIRS += $(USB_DEVICE_DIR)/Class/cdc/inc
SOURCES += $(USB_DEVICE_DIR)/Class/cdc/src/usbd_cdc_core.c
INCDIRS += $(USB_DEVICE_DIR)/Core/inc
SOURCES += $(USB_DEVICE_DIR)/Core/src/usbd_core.c
SOURCES += $(USB_DEVICE_DIR)/Core/src/usbd_ioreq.c
SOURCES += $(USB_DEVICE_DIR)/Core/src/usbd_req.c
USB_DRIVER_DIR = lib/STM32_USB_OTG_Driver-2.2.0
INCDIRS += $(USB_DRIVER_DIR)/inc
SOURCES += $(USB_DRIVER_DIR)/src/usb_core.c
SOURCES += $(USB_DRIVER_DIR)/src/usb_dcd.c
SOURCES += $(USB_DRIVER_DIR)/src/usb_dcd_int.c
# Standard peripheral library
CPPFLAGS += -DUSE_STDPERIPH_DRIVER
#CPPFLAGS += -DUSE_FULL_ASSERT
PERIPH_DRV_DIR = lib/STM32F4xx_StdPeriph_Driver-V1.6.0
INCDIRS += $(PERIPH_DRV_DIR)/inc
INCDIRS += lib/CMSIS/Include
INCDIRS += lib/CMSIS/Device/ST/STM32F4xx/Include
SOURCES += $(PERIPH_DRV_DIR)/src/stm32f4xx_adc.c
SOURCES += $(PERIPH_DRV_DIR)/src/stm32f4xx_crc.c
SOURCES += $(PERIPH_DRV_DIR)/src/stm32f4xx_dma.c
SOURCES += $(PERIPH_DRV_DIR)/src/stm32f4xx_flash.c
SOURCES += $(PERIPH_DRV_DIR)/src/stm32f4xx_gpio.c
SOURCES += $(PERIPH_DRV_DIR)/src/stm32f4xx_pwr.c
SOURCES += $(PERIPH_DRV_DIR)/src/stm32f4xx_rcc.c
SOURCES += $(PERIPH_DRV_DIR)/src/stm32f4xx_tim.c
SOURCES += $(PERIPH_DRV_DIR)/src/stm32f4xx_usart.c
SOURCES += $(PERIPH_DRV_DIR)/src/stm32f4xx_spi.c
SOURCES += $(PERIPH_DRV_DIR)/src/misc.c
SOURCES += lib/CMSIS/Device/ST/STM32F4xx/Source/startup_stm32f40_41xxx.s
CPPFLAGS += -DSTM32F40_41xxx
CPPFLAGS += -DHSE_VALUE=8000000
LDSCRIPT = stm32_flash.ld
#============================================================================
SRC_COMP_OBJECTS = $(addprefix $(OBJDIR)/,$(addsuffix .o,$(basename $(SRC_COMPS))))
SHARED_COMP_OBJECTS = $(addprefix $(OBJDIR)/,$(addsuffix .o,$(basename $(SHARED_COMPS))))
OBJECTS += $(addprefix $(OBJDIR)/,$(addsuffix .o,$(basename $(SOURCES))))
OBJECTS += hv_firmware.o
CPPFLAGS += $(addprefix -I,$(INCDIRS))
#---------------- Preprocessor Options ----------------
# -fsingle... make better use of the single-precision FPU
# -g generate debugging information
# -save-temps preserve .s and .i-files
#
CPPFLAGS += -fsingle-precision-constant
CPPFLAGS += -g
# CPPFLAGS += -save-temps=obj
#---------------- C Compiler Options ----------------
# -O* optimization level
# -f... tuning, see GCC documentation
# -Wall... warning level
#
CFLAGS += $(OPT)
CFLAGS += -std=gnu11
CFLAGS += -ffunction-sections
CFLAGS += -fdata-sections
CFLAGS += -Wall
CFLAGS += -Wmaybe-uninitialized
CFLAGS += -Wuninitialized
CFLAGS += -fno-builtin ## from old
CFLAGS += -nostartfiles
CFLAGS += -Wfatal-errors
#CFLAGS += -Wstrict-prototypes
#CFLAGS += -Wextra
#CFLAGS += -Wpointer-arith
#CFLAGS += -Winline
#CFLAGS += -Wunreachable-code
#CFLAGS += -Wundef
# Use a friendly C dialect
CPPFLAGS += -fno-strict-aliasing
CPPFLAGS += -fwrapv
#---------------- C++ Compiler Options ----------------
#
CXXFLAGS += $(OPT)
CXXFLAGS += -ffunction-sections
CXXFLAGS += -fdata-sections
CXXFLAGS += -Wall
#---------------- Assembler Options ----------------
# -Wa,... tell GCC to pass this to the assembler
#
#---------------- Linker Options ----------------
# -Wl,... tell GCC to pass this to linker
# -Map create map file
# --cref add cross reference to map file
#
LDFLAGS += $(OPT)
LDFLAGS += -lm
LDFLAGS += -Wl,-Map=$(TARGET).map,--cref
LDFLAGS += -Wl,--gc-sections
# LDFLAGS += -specs=nano.specs -u _printf_float -u _scanf_float
LDFLAGS += -T$(LDSCRIPT)
#============================================================================
POSTLD = $(PYTHON) tools/add_version_info.py # -q
# Compiler flags to generate dependency files
#
GENDEPFLAGS = -MMD -MP
# Combine all necessary flags and optional flags
# Add target processor to flags.
#
CPU = -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16
CFLAGS += $(CPU)
CXXFLAGS += $(CPU)
ASFLAGS += $(CPU)
LDFLAGS += $(CPU)
ADDRESS = 0x08010000
# Default target
#
all: gccversion tbl boot build showsize
build: tbl elf hex bin lss sym f3_boot
elf: $(TARGET).elf
hex: $(TARGET).hex
bin: tbl $(TARGET).bin
lss: $(TARGET).lss
sym: $(TARGET).sym
$(OBJDIR)/shared/commands.o: inc/commandslist.h
inc/commandslist.h: tools/create_cmd.py $(SOURCES)
@echo Generating commands list
@$(MKDIR) -p $(dir $@)
@$(PYTHON) tools/create_cmd.py $@ $(SOURCES)
src/hal_tbl.c: tools/create_hal_tbl.py $(COMPS)
@echo Generating HAL table
@$(MKDIR) -p $(dir $@)
@$(PYTHON) tools/create_hal_tbl.py $@ $(COMPS)
$(SRC_COMP_OBJECTS): $(OBJDIR)/src/comps/%.o: inc/comps/%_comp.h
$(SHARED_COMP_OBJECTS): $(OBJDIR)/shared/comps/%.o: inc/shared_comps/%_comp.h
inc/comps/%_comp.h: src/comps/%.c
@echo Generating H: $<
@$(MKDIR) -p $(dir $@)
@$(PYTHON) tools/create_comp_h.py $@ $<
inc/shared_comps/%_comp.h: shared/comps/%.c
@echo Generating H: $<
@$(MKDIR) -p $(dir $@)
@$(PYTHON) tools/create_comp_h.py $@ $<
src/conf_templates.c: tools/create_config.py $(CONFIG_TEMPLATES)
@echo Generating config
@$(MKDIR) -p $(dir $@)
@$(PYTHON) tools/create_config.py src/conf_templates.c $(CONFIG_TEMPLATES)
tbl: inc/commandslist.h src/hal_tbl.c src/conf_templates.c
obj_boot/blboot.bin: force_look
$(MAKE) -f bootloader/Makefile
#build f4 bootloader
boot: obj_boot/blboot.bin
#flash f4 bootloader using stlink
boot_flash:
$(MAKE) -f bootloader/Makefile flash
#flash f4 bootloader using df-util
boot_btburn:
$(MAKE) -f bootloader/Makefile btburn
#build f3 bootloader
f3_boot: force_look
$(MAKE) -f f3_boot/Makefile
#flash f3 bootloader using stlink
f3_boot_flash:
$(MAKE) -f f3_boot/Makefile flash
#flash f3 bootloader using df-util
f3_boot_btburn:
$(MAKE) -f f3_boot/Makefile btburn
#build f3 firmware
f3: force_look
$(MAKE) -f stm32f303/Makefile
#flash f3 firmware using stlink
f3_flash:
$(MAKE) -f stm32f303/Makefile flash
#flash f3 firmware using df-util
f3_btburn:
$(MAKE) -f stm32f303/Makefile btburn
#generate f3 firmware object from f3 bin
hv_firmware.o: force_look
$(MAKE) -f stm32f303/Makefile all
#build f103 firmware for V3 hardware
f1: force_look
$(MAKE) -f stm32f103/Makefile
#flash f103 firmware for V3 hardware using stlink
f1_flash: boot
$(MAKE) -f stm32f103/Makefile flash
f3_all_btburn: f3.bin
@$(DFU-UTIL) -d 0483:df11 -a 0 -s 0x08000000:leave -D f3.bin
all_btburn: tools/bootloader.py f4.bin
@$(PYTHON) tools/bootloader.py
@sleep 1
@$(DFU-UTIL) -d 0483:df11 -a 0 -s 0x08000000:leave -D f4.bin
all_flash: f4.bin
@$(ST-FLASH) --reset write f4.bin 0x08000000
f3_all_flash: f3.bin
@$(ST-FLASH) --reset write f3.bin 0x08000000
deploy: f3_boot f3 boot build binall
f4.bin: obj_boot/blboot.bin conf/festo.txt $(TARGET).bin
cat obj_boot/blboot.bin /dev/zero | head -c 32768 > f4.bin
cat conf/festo.txt /dev/zero | head -c 32768 >> f4.bin
cat $(TARGET).bin >> f4.bin
f3.bin: obj_f3_boot/f3_boot.bin obj_hvf3/hvf3.bin
cat obj_f3_boot/f3_boot.bin /dev/zero | head -c 16384 > f3.bin
cat obj_hvf3/hvf3.bin >> f3.bin
# TODO: consolidate these two rules into a wildcard version?
f4.dfu: tools/dfu-convert.py f4.bin
$(PYTHON) tools/dfu-convert.py -b 0x08000000:f4.bin f4.dfu
f3.dfu: tools/dfu-convert.py f3.bin
$(PYTHON) tools/dfu-convert.py -b 0x08000000:f3.bin f3.dfu
stmbl.dfu: tools/dfu-convert.py $(TARGET).bin
$(PYTHON) tools/dfu-convert.py -b 0x08010000:$(TARGET).bin stmbl.dfu
binall: f4.dfu f3.dfu stmbl.dfu
format:
find src/ f3_boot/ bootloader/ stm32f103/ stm32f303/ shared/ inc/ tools/ -iname '*.h' -o -iname '*.c' | xargs clang-format -i
# Target: clean project
#
clean:
@echo Cleaning project:
rm -rf hv_firmware.o
rm -rf f3.bin f4.bin f3.dfu f4.dfu stmbl.dfu
rm -rf $(OBJDIR)
rm -rf inc/commandslist.h
rm -rf inc/comps/*
rm -rf inc/shared_comps/*
rm -rf src/conf_templates.c
rm -rf src/hal_tbl.c
@$(MAKE) -f bootloader/Makefile clean
@$(MAKE) -f f3_boot/Makefile clean
@$(MAKE) -f stm32f103/Makefile clean
@$(MAKE) -f stm32f303/Makefile clean
# Include the base rules
#
include base.mak
# Include the dependency files
#
-include $(OBJECTS:.o=.d)
force_look:
@true
# Listing of phony targets
#
.PHONY: all build clean \
elf hex bin lss sym tbl \
boot boot_flash boot_brburn \
f3_boot f3_boot_flash f3_boot_btburn \
f3 f3_flash f3_btburn \
f1 f1_flash \
f3_all_btburn all_btburn all_flash f3_all_flash \
deploy \
format \
force_look