diff --git a/.gitattributes b/.gitattributes index 274fb9d79..5e3e2f993 100644 --- a/.gitattributes +++ b/.gitattributes @@ -8,6 +8,7 @@ *.elf -crlf -diff *.ld text eol=lf Makefile text eol=lf +*.mk text eol=lf *.bat eol=crlf *.txt text eol=lf *.sh text eol=lf diff --git a/make/mcu/SITL.mk b/make/mcu/SITL.mk index 90210fa1a..8ba66ff91 100644 --- a/make/mcu/SITL.mk +++ b/make/mcu/SITL.mk @@ -1,68 +1,68 @@ - -INCLUDE_DIRS := $(INCLUDE_DIRS) \ - $(ROOT)/lib/main/dyad - -MCU_COMMON_SRC := $(ROOT)/lib/main/dyad/dyad.c - -#Flags -ARCH_FLAGS = -DEVICE_FLAGS = -LD_SCRIPT = src/main/target/SITL/parameter_group.ld -STARTUP_SRC = - -TARGET_FLAGS = -D$(TARGET) -TARGET_FLASH := 2048 - -ARM_SDK_PREFIX = - -MCU_EXCLUDES = \ - drivers/adc.c \ - drivers/bus_i2c.c \ - drivers/bus_i2c_config.c \ - drivers/bus_spi.c \ - drivers/bus_spi_config.c \ - drivers/bus_spi_pinconfig.c \ - drivers/dma.c \ - drivers/pwm_output.c \ - drivers/timer.c \ - drivers/system.c \ - drivers/rcc.c \ - drivers/serial_escserial.c \ - drivers/serial_pinconfig.c \ - drivers/serial_uart.c \ - drivers/serial_uart_init.c \ - drivers/serial_uart_pinconfig.c \ - drivers/rx_xn297.c \ - drivers/display_ug2864hsweg01.c \ - telemetry/crsf.c \ - telemetry/srxl.c \ - io/displayport_oled.c - -TARGET_MAP = $(OBJECT_DIR)/$(FORKNAME)_$(TARGET).map - -LD_FLAGS := \ - -lm \ - -lpthread \ - -lc \ - -lrt \ - $(ARCH_FLAGS) \ - $(LTO_FLAGS) \ - $(DEBUG_FLAGS) \ - -Wl,-gc-sections,-Map,$(TARGET_MAP) \ - -Wl,-L$(LINKER_DIR) \ - -Wl,--cref \ - -T$(LD_SCRIPT) - -ifneq ($(filter SITL_STATIC,$(OPTIONS)),) -LD_FLAGS += \ - -static \ - -static-libgcc -endif - -ifneq ($(DEBUG),GDB) -OPTIMISE_DEFAULT := -Ofast -OPTIMISE_SPEED := -Ofast -OPTIMISE_SIZE := -Os - -LTO_FLAGS := $(OPTIMISATION_BASE) $(OPTIMISE_SPEED) -endif + +INCLUDE_DIRS := $(INCLUDE_DIRS) \ + $(ROOT)/lib/main/dyad + +MCU_COMMON_SRC := $(ROOT)/lib/main/dyad/dyad.c + +#Flags +ARCH_FLAGS = +DEVICE_FLAGS = +LD_SCRIPT = src/main/target/SITL/parameter_group.ld +STARTUP_SRC = + +TARGET_FLAGS = -D$(TARGET) +TARGET_FLASH := 2048 + +ARM_SDK_PREFIX = + +MCU_EXCLUDES = \ + drivers/adc.c \ + drivers/bus_i2c.c \ + drivers/bus_i2c_config.c \ + drivers/bus_spi.c \ + drivers/bus_spi_config.c \ + drivers/bus_spi_pinconfig.c \ + drivers/dma.c \ + drivers/pwm_output.c \ + drivers/timer.c \ + drivers/system.c \ + drivers/rcc.c \ + drivers/serial_escserial.c \ + drivers/serial_pinconfig.c \ + drivers/serial_uart.c \ + drivers/serial_uart_init.c \ + drivers/serial_uart_pinconfig.c \ + drivers/rx_xn297.c \ + drivers/display_ug2864hsweg01.c \ + telemetry/crsf.c \ + telemetry/srxl.c \ + io/displayport_oled.c + +TARGET_MAP = $(OBJECT_DIR)/$(FORKNAME)_$(TARGET).map + +LD_FLAGS := \ + -lm \ + -lpthread \ + -lc \ + -lrt \ + $(ARCH_FLAGS) \ + $(LTO_FLAGS) \ + $(DEBUG_FLAGS) \ + -Wl,-gc-sections,-Map,$(TARGET_MAP) \ + -Wl,-L$(LINKER_DIR) \ + -Wl,--cref \ + -T$(LD_SCRIPT) + +ifneq ($(filter SITL_STATIC,$(OPTIONS)),) +LD_FLAGS += \ + -static \ + -static-libgcc +endif + +ifneq ($(DEBUG),GDB) +OPTIMISE_DEFAULT := -Ofast +OPTIMISE_SPEED := -Ofast +OPTIMISE_SIZE := -Os + +LTO_FLAGS := $(OPTIMISATION_BASE) $(OPTIMISE_SPEED) +endif diff --git a/make/mcu/STM32F1.mk b/make/mcu/STM32F1.mk index b952900d5..b46721890 100644 --- a/make/mcu/STM32F1.mk +++ b/make/mcu/STM32F1.mk @@ -1,80 +1,80 @@ -# -# F4 Make file include -# - -ifeq ($(OPBL),yes) -LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f103_$(FLASH_SIZE)k_opbl.ld -endif - -TARGET_FLASH := 128 -STDPERIPH_DIR = $(ROOT)/lib/main/STM32F1/Drivers/STM32F10x_StdPeriph_Driver -STDPERIPH_SRC = $(notdir $(wildcard $(STDPERIPH_DIR)/src/*.c)) -EXCLUDES = stm32f10x_crc.c \ - stm32f10x_cec.c \ - stm32f10x_can.c -STARTUP_SRC = startup_stm32f10x_md_gcc.S -STDPERIPH_SRC := $(filter-out ${EXCLUDES}, $(STDPERIPH_SRC)) - -# Search path and source files for the CMSIS sources -VPATH := $(VPATH):$(CMSIS_DIR)/CM3/CoreSupport:$(CMSIS_DIR)/CM3/DeviceSupport/ST/STM32F10x -CMSIS_SRC = $(notdir $(wildcard $(CMSIS_DIR)/CM3/CoreSupport/*.c \ - $(CMSIS_DIR)/CM3/DeviceSupport/ST/STM32F10x/*.c)) - -INCLUDE_DIRS := $(INCLUDE_DIRS) \ - $(STDPERIPH_DIR)/inc \ - $(CMSIS_DIR)/CM3/CoreSupport \ - $(CMSIS_DIR)/CM3/DeviceSupport/ST/STM32F10x - -DEVICE_STDPERIPH_SRC = $(STDPERIPH_SRC) - -ifneq ($(filter VCP, $(FEATURES)),) -INCLUDE_DIRS := $(INCLUDE_DIRS) \ - $(USBFS_DIR)/inc \ - $(ROOT)/src/main/vcp - -VPATH := $(VPATH):$(USBFS_DIR)/src - -DEVICE_STDPERIPH_SRC := $(DEVICE_STDPERIPH_SRC) \ - $(USBPERIPH_SRC) - -endif - -LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f103_$(FLASH_SIZE)k.ld -ARCH_FLAGS = -mthumb -mcpu=cortex-m3 - -ifeq ($(DEVICE_FLAGS),) -DEVICE_FLAGS = -DSTM32F10X_MD -endif -DEVICE_FLAGS += -DSTM32F10X - -VCP_SRC = \ - vcp/hw_config.c \ - vcp/stm32_it.c \ - vcp/usb_desc.c \ - vcp/usb_endp.c \ - vcp/usb_istr.c \ - vcp/usb_prop.c \ - vcp/usb_pwr.c \ - drivers/serial_usb_vcp.c \ - drivers/usb_io.c - -MCU_COMMON_SRC = \ - drivers/adc_stm32f10x.c \ - drivers/bus_i2c_stm32f10x.c \ - drivers/dma.c \ - drivers/inverter.c \ - drivers/light_ws2811strip_stdperiph.c \ - drivers/serial_uart_init.c \ - drivers/serial_uart_stm32f10x.c \ - drivers/system_stm32f10x.c \ - drivers/timer_stm32f10x.c - -DSP_LIB := - -ifneq ($(DEBUG),GDB) -OPTIMISE_DEFAULT := -Os -OPTIMISE_SPEED := -OPTIMISE_SIZE := - -LTO_FLAGS := $(OPTIMISATION_BASE) $(OPTIMISE_DEFAULT) -endif +# +# F4 Make file include +# + +ifeq ($(OPBL),yes) +LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f103_$(FLASH_SIZE)k_opbl.ld +endif + +TARGET_FLASH := 128 +STDPERIPH_DIR = $(ROOT)/lib/main/STM32F1/Drivers/STM32F10x_StdPeriph_Driver +STDPERIPH_SRC = $(notdir $(wildcard $(STDPERIPH_DIR)/src/*.c)) +EXCLUDES = stm32f10x_crc.c \ + stm32f10x_cec.c \ + stm32f10x_can.c +STARTUP_SRC = startup_stm32f10x_md_gcc.S +STDPERIPH_SRC := $(filter-out ${EXCLUDES}, $(STDPERIPH_SRC)) + +# Search path and source files for the CMSIS sources +VPATH := $(VPATH):$(CMSIS_DIR)/CM3/CoreSupport:$(CMSIS_DIR)/CM3/DeviceSupport/ST/STM32F10x +CMSIS_SRC = $(notdir $(wildcard $(CMSIS_DIR)/CM3/CoreSupport/*.c \ + $(CMSIS_DIR)/CM3/DeviceSupport/ST/STM32F10x/*.c)) + +INCLUDE_DIRS := $(INCLUDE_DIRS) \ + $(STDPERIPH_DIR)/inc \ + $(CMSIS_DIR)/CM3/CoreSupport \ + $(CMSIS_DIR)/CM3/DeviceSupport/ST/STM32F10x + +DEVICE_STDPERIPH_SRC = $(STDPERIPH_SRC) + +ifneq ($(filter VCP, $(FEATURES)),) +INCLUDE_DIRS := $(INCLUDE_DIRS) \ + $(USBFS_DIR)/inc \ + $(ROOT)/src/main/vcp + +VPATH := $(VPATH):$(USBFS_DIR)/src + +DEVICE_STDPERIPH_SRC := $(DEVICE_STDPERIPH_SRC) \ + $(USBPERIPH_SRC) + +endif + +LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f103_$(FLASH_SIZE)k.ld +ARCH_FLAGS = -mthumb -mcpu=cortex-m3 + +ifeq ($(DEVICE_FLAGS),) +DEVICE_FLAGS = -DSTM32F10X_MD +endif +DEVICE_FLAGS += -DSTM32F10X + +VCP_SRC = \ + vcp/hw_config.c \ + vcp/stm32_it.c \ + vcp/usb_desc.c \ + vcp/usb_endp.c \ + vcp/usb_istr.c \ + vcp/usb_prop.c \ + vcp/usb_pwr.c \ + drivers/serial_usb_vcp.c \ + drivers/usb_io.c + +MCU_COMMON_SRC = \ + drivers/adc_stm32f10x.c \ + drivers/bus_i2c_stm32f10x.c \ + drivers/dma.c \ + drivers/inverter.c \ + drivers/light_ws2811strip_stdperiph.c \ + drivers/serial_uart_init.c \ + drivers/serial_uart_stm32f10x.c \ + drivers/system_stm32f10x.c \ + drivers/timer_stm32f10x.c + +DSP_LIB := + +ifneq ($(DEBUG),GDB) +OPTIMISE_DEFAULT := -Os +OPTIMISE_SPEED := +OPTIMISE_SIZE := + +LTO_FLAGS := $(OPTIMISATION_BASE) $(OPTIMISE_DEFAULT) +endif diff --git a/make/mcu/STM32F3.mk b/make/mcu/STM32F3.mk index f205621c5..4d1bdbe79 100644 --- a/make/mcu/STM32F3.mk +++ b/make/mcu/STM32F3.mk @@ -1,84 +1,84 @@ -# -# F3 Make file include -# - -ifeq ($(OPBL),yes) -LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f303_$(FLASH_SIZE)k_opbl.ld -endif - -TARGET_FLASH := 256 -# note that there is no hardfault debugging startup file assembly handler for other platforms -ifeq ($(DEBUG_HARDFAULTS),F3) -CFLAGS += -DDEBUG_HARDFAULTS -MCU_COMMON_SRC = startup_stm32f3_debug_hardfault_handler.S -else -MCU_COMMON_SRC = startup_stm32f30x_md_gcc.S -endif - -STDPERIPH_DIR = $(ROOT)/lib/main/STM32F3/Drivers/STM32F30x_StdPeriph_Driver -STDPERIPH_SRC = $(notdir $(wildcard $(STDPERIPH_DIR)/src/*.c)) -EXCLUDES = stm32f30x_crc.c \ - stm32f30x_can.c -STARTUP_SRC = startup_stm32f30x_md_gcc.S - -STDPERIPH_SRC := $(filter-out ${EXCLUDES}, $(STDPERIPH_SRC)) -DEVICE_STDPERIPH_SRC = $(STDPERIPH_SRC) - -VPATH := $(VPATH):$(CMSIS_DIR)/CM4/CoreSupport:$(CMSIS_DIR)/CM4/DeviceSupport/ST/STM32F30x -CMSIS_SRC = $(notdir $(wildcard $(CMSIS_DIR)/CM4/CoreSupport/*.c \ - $(CMSIS_DIR)/CM4/DeviceSupport/ST/STM32F30x/*.c)) - -INCLUDE_DIRS := $(INCLUDE_DIRS) \ - $(STDPERIPH_DIR)/inc \ - $(CMSIS_DIR)/CM4/CoreSupport \ - $(CMSIS_DIR)/CM4/DeviceSupport/ST/STM32F30x - -ifneq ($(filter VCP, $(FEATURES)),) -INCLUDE_DIRS := $(INCLUDE_DIRS) \ - $(USBFS_DIR)/inc \ - $(ROOT)/src/main/vcp - -VPATH := $(VPATH):$(USBFS_DIR)/src - -DEVICE_STDPERIPH_SRC := $(DEVICE_STDPERIPH_SRC)\ - $(USBPERIPH_SRC) -endif - -ifneq ($(filter SDCARD, $(FEATURES)),) -INCLUDE_DIRS := $(INCLUDE_DIRS) \ - $(FATFS_DIR) \ - -VPATH := $(VPATH):$(FATFS_DIR) -endif - -LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f303_$(FLASH_SIZE)k.ld - -ARCH_FLAGS = -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -Wdouble-promotion -DEVICE_FLAGS = -DSTM32F303xC -DSTM32F303 - -VCP_SRC = \ - vcp/hw_config.c \ - vcp/stm32_it.c \ - vcp/usb_desc.c \ - vcp/usb_endp.c \ - vcp/usb_istr.c \ - vcp/usb_prop.c \ - vcp/usb_pwr.c \ - drivers/serial_usb_vcp.c \ - drivers/usb_io.c - - -MCU_COMMON_SRC = \ - target/system_stm32f30x.c \ - drivers/adc_stm32f30x.c \ - drivers/bus_i2c_stm32f30x.c \ - drivers/dma.c \ - drivers/light_ws2811strip_stdperiph.c \ - drivers/pwm_output_dshot.c \ - drivers/serial_uart_init.c \ - drivers/serial_uart_stm32f30x.c \ - drivers/system_stm32f30x.c \ - drivers/timer_stm32f30x.c - -DSP_LIB := $(ROOT)/lib/main/DSP_Lib -DEVICE_FLAGS += -DARM_MATH_MATRIX_CHECK -DARM_MATH_ROUNDING -D__FPU_PRESENT=1 -DUNALIGNED_SUPPORT_DISABLE -DARM_MATH_CM4 +# +# F3 Make file include +# + +ifeq ($(OPBL),yes) +LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f303_$(FLASH_SIZE)k_opbl.ld +endif + +TARGET_FLASH := 256 +# note that there is no hardfault debugging startup file assembly handler for other platforms +ifeq ($(DEBUG_HARDFAULTS),F3) +CFLAGS += -DDEBUG_HARDFAULTS +MCU_COMMON_SRC = startup_stm32f3_debug_hardfault_handler.S +else +MCU_COMMON_SRC = startup_stm32f30x_md_gcc.S +endif + +STDPERIPH_DIR = $(ROOT)/lib/main/STM32F3/Drivers/STM32F30x_StdPeriph_Driver +STDPERIPH_SRC = $(notdir $(wildcard $(STDPERIPH_DIR)/src/*.c)) +EXCLUDES = stm32f30x_crc.c \ + stm32f30x_can.c +STARTUP_SRC = startup_stm32f30x_md_gcc.S + +STDPERIPH_SRC := $(filter-out ${EXCLUDES}, $(STDPERIPH_SRC)) +DEVICE_STDPERIPH_SRC = $(STDPERIPH_SRC) + +VPATH := $(VPATH):$(CMSIS_DIR)/CM4/CoreSupport:$(CMSIS_DIR)/CM4/DeviceSupport/ST/STM32F30x +CMSIS_SRC = $(notdir $(wildcard $(CMSIS_DIR)/CM4/CoreSupport/*.c \ + $(CMSIS_DIR)/CM4/DeviceSupport/ST/STM32F30x/*.c)) + +INCLUDE_DIRS := $(INCLUDE_DIRS) \ + $(STDPERIPH_DIR)/inc \ + $(CMSIS_DIR)/CM4/CoreSupport \ + $(CMSIS_DIR)/CM4/DeviceSupport/ST/STM32F30x + +ifneq ($(filter VCP, $(FEATURES)),) +INCLUDE_DIRS := $(INCLUDE_DIRS) \ + $(USBFS_DIR)/inc \ + $(ROOT)/src/main/vcp + +VPATH := $(VPATH):$(USBFS_DIR)/src + +DEVICE_STDPERIPH_SRC := $(DEVICE_STDPERIPH_SRC)\ + $(USBPERIPH_SRC) +endif + +ifneq ($(filter SDCARD, $(FEATURES)),) +INCLUDE_DIRS := $(INCLUDE_DIRS) \ + $(FATFS_DIR) \ + +VPATH := $(VPATH):$(FATFS_DIR) +endif + +LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f303_$(FLASH_SIZE)k.ld + +ARCH_FLAGS = -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -Wdouble-promotion +DEVICE_FLAGS = -DSTM32F303xC -DSTM32F303 + +VCP_SRC = \ + vcp/hw_config.c \ + vcp/stm32_it.c \ + vcp/usb_desc.c \ + vcp/usb_endp.c \ + vcp/usb_istr.c \ + vcp/usb_prop.c \ + vcp/usb_pwr.c \ + drivers/serial_usb_vcp.c \ + drivers/usb_io.c + + +MCU_COMMON_SRC = \ + target/system_stm32f30x.c \ + drivers/adc_stm32f30x.c \ + drivers/bus_i2c_stm32f30x.c \ + drivers/dma.c \ + drivers/light_ws2811strip_stdperiph.c \ + drivers/pwm_output_dshot.c \ + drivers/serial_uart_init.c \ + drivers/serial_uart_stm32f30x.c \ + drivers/system_stm32f30x.c \ + drivers/timer_stm32f30x.c + +DSP_LIB := $(ROOT)/lib/main/DSP_Lib +DEVICE_FLAGS += -DARM_MATH_MATRIX_CHECK -DARM_MATH_ROUNDING -D__FPU_PRESENT=1 -DUNALIGNED_SUPPORT_DISABLE -DARM_MATH_CM4 diff --git a/make/mcu/STM32F4.mk b/make/mcu/STM32F4.mk index 18cf321df..7574afa63 100644 --- a/make/mcu/STM32F4.mk +++ b/make/mcu/STM32F4.mk @@ -1,188 +1,188 @@ -# -# F4 Make file include -# - -ifeq ($(OPBL),yes) -ifeq ($(TARGET), $(filter $(TARGET),$(F405_TARGETS))) -LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f405_opbl.ld -else ifeq ($(TARGET), $(filter $(TARGET),$(F411_TARGETS))) -LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f411_opbl.ld -else -$(error No OPBL linker script specified for $(TARGET`)) -endif -endif - -#CMSIS -ifeq ($(PERIPH_DRIVER), HAL) -CMSIS_DIR := $(ROOT)/lib/main/STM32F4/Drivers/CMSIS -STDPERIPH_DIR = $(ROOT)/lib/main/STM32F4/Drivers/STM32F4xx_HAL_Driver -STDPERIPH_SRC = $(notdir $(wildcard $(STDPERIPH_DIR)/Src/*.c)) -EXCLUDES = -else -CMSIS_DIR := $(ROOT)/lib/main/CMSIS/CM4 -STDPERIPH_DIR = $(ROOT)/lib/main/STM32F4/Drivers/STM32F4xx_StdPeriph_Driver -STDPERIPH_SRC = $(notdir $(wildcard $(STDPERIPH_DIR)/src/*.c)) -EXCLUDES = stm32f4xx_crc.c \ - stm32f4xx_can.c \ - stm32f4xx_fmc.c \ - stm32f4xx_sai.c \ - stm32f4xx_cec.c \ - stm32f4xx_dsi.c \ - stm32f4xx_flash_ramfunc.c \ - stm32f4xx_fmpi2c.c \ - stm32f4xx_lptim.c \ - stm32f4xx_qspi.c \ - stm32f4xx_spdifrx.c \ - stm32f4xx_cryp.c \ - stm32f4xx_cryp_aes.c \ - stm32f4xx_hash_md5.c \ - stm32f4xx_cryp_des.c \ - stm32f4xx_rtc.c \ - stm32f4xx_hash.c \ - stm32f4xx_dbgmcu.c \ - stm32f4xx_cryp_tdes.c \ - stm32f4xx_hash_sha1.c -endif - -ifeq ($(TARGET),$(filter $(TARGET), $(F411_TARGETS))) -EXCLUDES += stm32f4xx_fsmc.c -TARGET_FLASH := 512 -else ifeq ($(TARGET),$(filter $(TARGET), $(F446_TARGETS))) -EXCLUDES += stm32f4xx_fsmc.c -TARGET_FLASH := 512 -else -TARGET_FLASH := 1024 -endif - -STDPERIPH_SRC := $(filter-out ${EXCLUDES}, $(STDPERIPH_SRC)) - -ifeq ($(PERIPH_DRIVER), HAL) -#USB -USBCORE_DIR = $(ROOT)/lib/main/STM32F4/Middlewares/ST/STM32_USB_Device_Library/Core -USBCORE_SRC = $(notdir $(wildcard $(USBCORE_DIR)/Src/*.c)) -EXCLUDES = usbd_conf_template.c -USBCORE_SRC := $(filter-out ${EXCLUDES}, $(USBCORE_SRC)) - -USBCDC_DIR = $(ROOT)/lib/main/STM32F4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC -USBCDC_SRC = $(notdir $(wildcard $(USBCDC_DIR)/Src/*.c)) -EXCLUDES = usbd_cdc_if_template.c -USBCDC_SRC := $(filter-out ${EXCLUDES}, $(USBCDC_SRC)) - -VPATH := $(VPATH):$(USBCDC_DIR)/Src:$(USBCORE_DIR)/Src - -DEVICE_STDPERIPH_SRC := $(STDPERIPH_SRC) \ - $(USBCORE_SRC) \ - $(USBCDC_SRC) -else -USBCORE_DIR = $(ROOT)/lib/main/STM32_USB_Device_Library/Core -USBCORE_SRC = $(notdir $(wildcard $(USBCORE_DIR)/src/*.c)) -USBOTG_DIR = $(ROOT)/lib/main/STM32_USB_OTG_Driver -USBOTG_SRC = $(notdir $(wildcard $(USBOTG_DIR)/src/*.c)) -EXCLUDES = usb_bsp_template.c \ - usb_conf_template.c \ - usb_hcd_int.c \ - usb_hcd.c \ - usb_otg.c - -USBOTG_SRC := $(filter-out ${EXCLUDES}, $(USBOTG_SRC)) -USBCDC_DIR = $(ROOT)/lib/main/STM32_USB_Device_Library/Class/cdc -USBCDC_SRC = $(notdir $(wildcard $(USBCDC_DIR)/src/*.c)) -EXCLUDES = usbd_cdc_if_template.c -USBCDC_SRC := $(filter-out ${EXCLUDES}, $(USBCDC_SRC)) -VPATH := $(VPATH):$(USBOTG_DIR)/src:$(USBCORE_DIR)/src:$(USBCDC_DIR)/src - -DEVICE_STDPERIPH_SRC := $(STDPERIPH_SRC) \ - $(USBOTG_SRC) \ - $(USBCORE_SRC) \ - $(USBCDC_SRC) -endif - -#CMSIS -VPATH := $(VPATH):$(CMSIS_DIR)/CoreSupport:$(CMSIS_DIR)/DeviceSupport/ST/STM32F4xx -VPATH := $(VPATH):$(CMSIS_DIR)/Core:$(CMSIS_DIR)/Device/ST/STM32F4xx - -ifeq ($(PERIPH_DRIVER), HAL) -CMSIS_SRC := -INCLUDE_DIRS := $(INCLUDE_DIRS) \ - $(STDPERIPH_DIR)/Inc \ - $(USBCORE_DIR)/Inc \ - $(USBCDC_DIR)/Inc \ - $(CMSIS_DIR)/Include \ - $(CMSIS_DIR)/Device/ST/STM32F4xx/Include \ - $(ROOT)/src/main/vcp_hal -else -CMSIS_SRC := $(notdir $(wildcard $(CMSIS_DIR)/CM4/CoreSupport/*.c \ - $(CMSIS_DIR)/CM4/DeviceSupport/ST/STM32F4xx/*.c)) -INCLUDE_DIRS := $(INCLUDE_DIRS) \ - $(STDPERIPH_DIR)/inc \ - $(USBOTG_DIR)/inc \ - $(USBCORE_DIR)/inc \ - $(USBCDC_DIR)/inc \ - $(USBFS_DIR)/inc \ - $(CMSIS_DIR)/CoreSupport \ - $(CMSIS_DIR)/Include \ - $(CMSIS_DIR)/DeviceSupport/ST/STM32F4xx \ - $(CMSIS_DIR)/Device/ST/STM32F4xx/Include \ - $(ROOT)/src/main/vcpf4 -endif - -ifneq ($(filter SDCARD,$(FEATURES)),) -INCLUDE_DIRS := $(INCLUDE_DIRS) \ - $(FATFS_DIR) -VPATH := $(VPATH):$(FATFS_DIR) -endif - -#Flags -ARCH_FLAGS = -mthumb -mcpu=cortex-m4 -march=armv7e-m -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -Wdouble-promotion - -ifeq ($(TARGET),$(filter $(TARGET),$(F411_TARGETS))) -DEVICE_FLAGS = -DSTM32F411xE -LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f411.ld -STARTUP_SRC = startup_stm32f411xe.s -else ifeq ($(TARGET),$(filter $(TARGET),$(F405_TARGETS))) -DEVICE_FLAGS = -DSTM32F40_41xxx -DSTM32F405xx -LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f405.ld -STARTUP_SRC = startup_stm32f40xx.s -else ifeq ($(TARGET),$(filter $(TARGET),$(F446_TARGETS))) -DEVICE_FLAGS = -DSTM32F446xx -LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f446.ld -STARTUP_SRC = startup_stm32f446xx.s -else -$(error Unknown MCU for F4 target) -endif -DEVICE_FLAGS += -DHSE_VALUE=$(HSE_VALUE) - -MCU_COMMON_SRC = \ - target/system_stm32f4xx.c \ - drivers/accgyro/accgyro_mpu.c \ - drivers/adc_stm32f4xx.c \ - drivers/bus_i2c_stm32f10x.c \ - drivers/dma_stm32f4xx.c \ - drivers/inverter.c \ - drivers/light_ws2811strip_stdperiph.c \ - drivers/pwm_output_dshot.c \ - drivers/serial_uart_init.c \ - drivers/serial_uart_stm32f4xx.c \ - drivers/system_stm32f4xx.c \ - drivers/timer_stm32f4xx.c - -ifeq ($(PERIPH_DRIVER), HAL) -VCP_SRC = \ - vcp_hal/usbd_desc.c \ - vcp_hal/usbd_conf.c \ - vcp_hal/usbd_cdc_interface.c \ - drivers/serial_usb_vcp.c \ - drivers/usb_io.c -else -VCP_SRC = \ - vcpf4/stm32f4xx_it.c \ - vcpf4/usb_bsp.c \ - vcpf4/usbd_desc.c \ - vcpf4/usbd_usr.c \ - vcpf4/usbd_cdc_vcp.c \ - drivers/serial_usb_vcp.c \ - drivers/usb_io.c -endif - -DSP_LIB := $(ROOT)/lib/main/DSP_Lib -DEVICE_FLAGS += -DARM_MATH_MATRIX_CHECK -DARM_MATH_ROUNDING -D__FPU_PRESENT=1 -DUNALIGNED_SUPPORT_DISABLE -DARM_MATH_CM4 +# +# F4 Make file include +# + +ifeq ($(OPBL),yes) +ifeq ($(TARGET), $(filter $(TARGET),$(F405_TARGETS))) +LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f405_opbl.ld +else ifeq ($(TARGET), $(filter $(TARGET),$(F411_TARGETS))) +LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f411_opbl.ld +else +$(error No OPBL linker script specified for $(TARGET`)) +endif +endif + +#CMSIS +ifeq ($(PERIPH_DRIVER), HAL) +CMSIS_DIR := $(ROOT)/lib/main/STM32F4/Drivers/CMSIS +STDPERIPH_DIR = $(ROOT)/lib/main/STM32F4/Drivers/STM32F4xx_HAL_Driver +STDPERIPH_SRC = $(notdir $(wildcard $(STDPERIPH_DIR)/Src/*.c)) +EXCLUDES = +else +CMSIS_DIR := $(ROOT)/lib/main/CMSIS/CM4 +STDPERIPH_DIR = $(ROOT)/lib/main/STM32F4/Drivers/STM32F4xx_StdPeriph_Driver +STDPERIPH_SRC = $(notdir $(wildcard $(STDPERIPH_DIR)/src/*.c)) +EXCLUDES = stm32f4xx_crc.c \ + stm32f4xx_can.c \ + stm32f4xx_fmc.c \ + stm32f4xx_sai.c \ + stm32f4xx_cec.c \ + stm32f4xx_dsi.c \ + stm32f4xx_flash_ramfunc.c \ + stm32f4xx_fmpi2c.c \ + stm32f4xx_lptim.c \ + stm32f4xx_qspi.c \ + stm32f4xx_spdifrx.c \ + stm32f4xx_cryp.c \ + stm32f4xx_cryp_aes.c \ + stm32f4xx_hash_md5.c \ + stm32f4xx_cryp_des.c \ + stm32f4xx_rtc.c \ + stm32f4xx_hash.c \ + stm32f4xx_dbgmcu.c \ + stm32f4xx_cryp_tdes.c \ + stm32f4xx_hash_sha1.c +endif + +ifeq ($(TARGET),$(filter $(TARGET), $(F411_TARGETS))) +EXCLUDES += stm32f4xx_fsmc.c +TARGET_FLASH := 512 +else ifeq ($(TARGET),$(filter $(TARGET), $(F446_TARGETS))) +EXCLUDES += stm32f4xx_fsmc.c +TARGET_FLASH := 512 +else +TARGET_FLASH := 1024 +endif + +STDPERIPH_SRC := $(filter-out ${EXCLUDES}, $(STDPERIPH_SRC)) + +ifeq ($(PERIPH_DRIVER), HAL) +#USB +USBCORE_DIR = $(ROOT)/lib/main/STM32F4/Middlewares/ST/STM32_USB_Device_Library/Core +USBCORE_SRC = $(notdir $(wildcard $(USBCORE_DIR)/Src/*.c)) +EXCLUDES = usbd_conf_template.c +USBCORE_SRC := $(filter-out ${EXCLUDES}, $(USBCORE_SRC)) + +USBCDC_DIR = $(ROOT)/lib/main/STM32F4/Middlewares/ST/STM32_USB_Device_Library/Class/CDC +USBCDC_SRC = $(notdir $(wildcard $(USBCDC_DIR)/Src/*.c)) +EXCLUDES = usbd_cdc_if_template.c +USBCDC_SRC := $(filter-out ${EXCLUDES}, $(USBCDC_SRC)) + +VPATH := $(VPATH):$(USBCDC_DIR)/Src:$(USBCORE_DIR)/Src + +DEVICE_STDPERIPH_SRC := $(STDPERIPH_SRC) \ + $(USBCORE_SRC) \ + $(USBCDC_SRC) +else +USBCORE_DIR = $(ROOT)/lib/main/STM32_USB_Device_Library/Core +USBCORE_SRC = $(notdir $(wildcard $(USBCORE_DIR)/src/*.c)) +USBOTG_DIR = $(ROOT)/lib/main/STM32_USB_OTG_Driver +USBOTG_SRC = $(notdir $(wildcard $(USBOTG_DIR)/src/*.c)) +EXCLUDES = usb_bsp_template.c \ + usb_conf_template.c \ + usb_hcd_int.c \ + usb_hcd.c \ + usb_otg.c + +USBOTG_SRC := $(filter-out ${EXCLUDES}, $(USBOTG_SRC)) +USBCDC_DIR = $(ROOT)/lib/main/STM32_USB_Device_Library/Class/cdc +USBCDC_SRC = $(notdir $(wildcard $(USBCDC_DIR)/src/*.c)) +EXCLUDES = usbd_cdc_if_template.c +USBCDC_SRC := $(filter-out ${EXCLUDES}, $(USBCDC_SRC)) +VPATH := $(VPATH):$(USBOTG_DIR)/src:$(USBCORE_DIR)/src:$(USBCDC_DIR)/src + +DEVICE_STDPERIPH_SRC := $(STDPERIPH_SRC) \ + $(USBOTG_SRC) \ + $(USBCORE_SRC) \ + $(USBCDC_SRC) +endif + +#CMSIS +VPATH := $(VPATH):$(CMSIS_DIR)/CoreSupport:$(CMSIS_DIR)/DeviceSupport/ST/STM32F4xx +VPATH := $(VPATH):$(CMSIS_DIR)/Core:$(CMSIS_DIR)/Device/ST/STM32F4xx + +ifeq ($(PERIPH_DRIVER), HAL) +CMSIS_SRC := +INCLUDE_DIRS := $(INCLUDE_DIRS) \ + $(STDPERIPH_DIR)/Inc \ + $(USBCORE_DIR)/Inc \ + $(USBCDC_DIR)/Inc \ + $(CMSIS_DIR)/Include \ + $(CMSIS_DIR)/Device/ST/STM32F4xx/Include \ + $(ROOT)/src/main/vcp_hal +else +CMSIS_SRC := $(notdir $(wildcard $(CMSIS_DIR)/CM4/CoreSupport/*.c \ + $(CMSIS_DIR)/CM4/DeviceSupport/ST/STM32F4xx/*.c)) +INCLUDE_DIRS := $(INCLUDE_DIRS) \ + $(STDPERIPH_DIR)/inc \ + $(USBOTG_DIR)/inc \ + $(USBCORE_DIR)/inc \ + $(USBCDC_DIR)/inc \ + $(USBFS_DIR)/inc \ + $(CMSIS_DIR)/CoreSupport \ + $(CMSIS_DIR)/Include \ + $(CMSIS_DIR)/DeviceSupport/ST/STM32F4xx \ + $(CMSIS_DIR)/Device/ST/STM32F4xx/Include \ + $(ROOT)/src/main/vcpf4 +endif + +ifneq ($(filter SDCARD,$(FEATURES)),) +INCLUDE_DIRS := $(INCLUDE_DIRS) \ + $(FATFS_DIR) +VPATH := $(VPATH):$(FATFS_DIR) +endif + +#Flags +ARCH_FLAGS = -mthumb -mcpu=cortex-m4 -march=armv7e-m -mfloat-abi=hard -mfpu=fpv4-sp-d16 -fsingle-precision-constant -Wdouble-promotion + +ifeq ($(TARGET),$(filter $(TARGET),$(F411_TARGETS))) +DEVICE_FLAGS = -DSTM32F411xE +LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f411.ld +STARTUP_SRC = startup_stm32f411xe.s +else ifeq ($(TARGET),$(filter $(TARGET),$(F405_TARGETS))) +DEVICE_FLAGS = -DSTM32F40_41xxx -DSTM32F405xx +LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f405.ld +STARTUP_SRC = startup_stm32f40xx.s +else ifeq ($(TARGET),$(filter $(TARGET),$(F446_TARGETS))) +DEVICE_FLAGS = -DSTM32F446xx +LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f446.ld +STARTUP_SRC = startup_stm32f446xx.s +else +$(error Unknown MCU for F4 target) +endif +DEVICE_FLAGS += -DHSE_VALUE=$(HSE_VALUE) + +MCU_COMMON_SRC = \ + target/system_stm32f4xx.c \ + drivers/accgyro/accgyro_mpu.c \ + drivers/adc_stm32f4xx.c \ + drivers/bus_i2c_stm32f10x.c \ + drivers/dma_stm32f4xx.c \ + drivers/inverter.c \ + drivers/light_ws2811strip_stdperiph.c \ + drivers/pwm_output_dshot.c \ + drivers/serial_uart_init.c \ + drivers/serial_uart_stm32f4xx.c \ + drivers/system_stm32f4xx.c \ + drivers/timer_stm32f4xx.c + +ifeq ($(PERIPH_DRIVER), HAL) +VCP_SRC = \ + vcp_hal/usbd_desc.c \ + vcp_hal/usbd_conf.c \ + vcp_hal/usbd_cdc_interface.c \ + drivers/serial_usb_vcp.c \ + drivers/usb_io.c +else +VCP_SRC = \ + vcpf4/stm32f4xx_it.c \ + vcpf4/usb_bsp.c \ + vcpf4/usbd_desc.c \ + vcpf4/usbd_usr.c \ + vcpf4/usbd_cdc_vcp.c \ + drivers/serial_usb_vcp.c \ + drivers/usb_io.c +endif + +DSP_LIB := $(ROOT)/lib/main/DSP_Lib +DEVICE_FLAGS += -DARM_MATH_MATRIX_CHECK -DARM_MATH_ROUNDING -D__FPU_PRESENT=1 -DUNALIGNED_SUPPORT_DISABLE -DARM_MATH_CM4 diff --git a/make/mcu/STM32F7.mk b/make/mcu/STM32F7.mk index 4cca92bc4..7433e6cca 100644 --- a/make/mcu/STM32F7.mk +++ b/make/mcu/STM32F7.mk @@ -1,166 +1,166 @@ -# -# F7 Make file include -# - -ifeq ($(DEBUG_HARDFAULTS),F7) -CFLAGS += -DDEBUG_HARDFAULTS -endif - -#CMSIS -CMSIS_DIR := $(ROOT)/lib/main/STM32F7/Drivers/CMSIS - -#STDPERIPH -STDPERIPH_DIR = $(ROOT)/lib/main/STM32F7/Drivers/STM32F7xx_HAL_Driver -STDPERIPH_SRC = $(notdir $(wildcard $(STDPERIPH_DIR)/Src/*.c)) -EXCLUDES = stm32f7xx_hal_can.c \ - stm32f7xx_hal_cec.c \ - stm32f7xx_hal_crc.c \ - stm32f7xx_hal_crc_ex.c \ - stm32f7xx_hal_cryp.c \ - stm32f7xx_hal_cryp_ex.c \ - stm32f7xx_hal_dac.c \ - stm32f7xx_hal_dac_ex.c \ - stm32f7xx_hal_dcmi.c \ - stm32f7xx_hal_dcmi_ex.c \ - stm32f7xx_hal_dfsdm.c \ - stm32f7xx_hal_dma2d.c \ - stm32f7xx_hal_dsi.c \ - stm32f7xx_hal_eth.c \ - stm32f7xx_hal_hash.c \ - stm32f7xx_hal_hash_ex.c \ - stm32f7xx_hal_hcd.c \ - stm32f7xx_hal_i2s.c \ - stm32f7xx_hal_irda.c \ - stm32f7xx_hal_iwdg.c \ - stm32f7xx_hal_jpeg.c \ - stm32f7xx_hal_lptim.c \ - stm32f7xx_hal_ltdc.c \ - stm32f7xx_hal_ltdc_ex.c \ - stm32f7xx_hal_mdios.c \ - stm32f7xx_hal_mmc.c \ - stm32f7xx_hal_msp_template.c \ - stm32f7xx_hal_nand.c \ - stm32f7xx_hal_nor.c \ - stm32f7xx_hal_qspi.c \ - stm32f7xx_hal_rng.c \ - stm32f7xx_hal_rtc.c \ - stm32f7xx_hal_rtc_ex.c \ - stm32f7xx_hal_sai.c \ - stm32f7xx_hal_sai_ex.c \ - stm32f7xx_hal_sd.c \ - stm32f7xx_hal_sdram.c \ - stm32f7xx_hal_smartcard.c \ - stm32f7xx_hal_smartcard_ex.c \ - stm32f7xx_hal_smbus.c \ - stm32f7xx_hal_spdifrx.c \ - stm32f7xx_hal_sram.c \ - stm32f7xx_hal_timebase_rtc_alarm_template.c \ - stm32f7xx_hal_timebase_rtc_wakeup_template.c \ - stm32f7xx_hal_timebase_tim_template.c \ - stm32f7xx_hal_wwdg.c \ - stm32f7xx_ll_adc.c \ - stm32f7xx_ll_crc.c \ - stm32f7xx_ll_dac.c \ - stm32f7xx_ll_exti.c \ - stm32f7xx_ll_fmc.c \ - stm32f7xx_ll_i2c.c \ - stm32f7xx_ll_lptim.c \ - stm32f7xx_ll_pwr.c \ - stm32f7xx_ll_rng.c \ - stm32f7xx_ll_rtc.c \ - stm32f7xx_ll_sdmmc.c \ - stm32f7xx_ll_usart.c - -STDPERIPH_SRC := $(filter-out ${EXCLUDES}, $(STDPERIPH_SRC)) - -#USB -USBCORE_DIR = $(ROOT)/lib/main/STM32F7/Middlewares/ST/STM32_USB_Device_Library/Core -USBCORE_SRC = $(notdir $(wildcard $(USBCORE_DIR)/Src/*.c)) -EXCLUDES = usbd_conf_template.c -USBCORE_SRC := $(filter-out ${EXCLUDES}, $(USBCORE_SRC)) - -USBCDC_DIR = $(ROOT)/lib/main/STM32F7/Middlewares/ST/STM32_USB_Device_Library/Class/CDC -USBCDC_SRC = $(notdir $(wildcard $(USBCDC_DIR)/Src/*.c)) -EXCLUDES = usbd_cdc_if_template.c -USBCDC_SRC := $(filter-out ${EXCLUDES}, $(USBCDC_SRC)) - -VPATH := $(VPATH):$(USBCDC_DIR)/Src:$(USBCORE_DIR)/Src - -DEVICE_STDPERIPH_SRC := $(STDPERIPH_SRC) \ - $(USBCORE_SRC) \ - $(USBCDC_SRC) - -#CMSIS -VPATH := $(VPATH):$(CMSIS_DIR)/Include:$(CMSIS_DIR)/Device/ST/STM32F7xx -VPATH := $(VPATH):$(STDPERIPH_DIR)/Src -CMSIS_SRC := -INCLUDE_DIRS := $(INCLUDE_DIRS) \ - $(STDPERIPH_DIR)/Inc \ - $(USBCORE_DIR)/Inc \ - $(USBCDC_DIR)/Inc \ - $(CMSIS_DIR)/Include \ - $(CMSIS_DIR)/Device/ST/STM32F7xx/Include \ - $(ROOT)/src/main/vcp_hal - -ifneq ($(filter SDCARD,$(FEATURES)),) -INCLUDE_DIRS := $(INCLUDE_DIRS) \ - $(FATFS_DIR) -VPATH := $(VPATH):$(FATFS_DIR) -endif - -#Flags -ARCH_FLAGS = -mthumb -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-sp-d16 -fsingle-precision-constant -Wdouble-promotion - -DEVICE_FLAGS = -DUSE_HAL_DRIVER -DUSE_FULL_LL_DRIVER -ifeq ($(TARGET),$(filter $(TARGET),$(F7X5XG_TARGETS))) -DEVICE_FLAGS += -DSTM32F745xx -LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f745.ld -STARTUP_SRC = startup_stm32f745xx.s -TARGET_FLASH := 2048 -else ifeq ($(TARGET),$(filter $(TARGET),$(F7X6XG_TARGETS))) -DEVICE_FLAGS += -DSTM32F746xx -LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f746.ld -STARTUP_SRC = startup_stm32f746xx.s -TARGET_FLASH := 2048 -else ifeq ($(TARGET),$(filter $(TARGET),$(F7X2RE_TARGETS))) -DEVICE_FLAGS += -DSTM32F722xx -LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f722.ld -STARTUP_SRC = startup_stm32f722xx.s -TARGET_FLASH := 512 -else -$(error Unknown MCU for F7 target) -endif -DEVICE_FLAGS += -DHSE_VALUE=$(HSE_VALUE) - -TARGET_FLAGS = -D$(TARGET) - -VCP_SRC = \ - vcp_hal/usbd_desc.c \ - vcp_hal/usbd_conf.c \ - vcp_hal/usbd_cdc_interface.c \ - drivers/serial_usb_vcp.c \ - drivers/usb_io.c - -MCU_COMMON_SRC = \ - target/system_stm32f7xx.c \ - drivers/accgyro/accgyro_mpu.c \ - drivers/adc_stm32f7xx.c \ - drivers/bus_i2c_hal.c \ - drivers/dma_stm32f7xx.c \ - drivers/light_ws2811strip_hal.c \ - drivers/bus_spi_ll.c \ - drivers/pwm_output_dshot_hal.c \ - drivers/timer_hal.c \ - drivers/timer_stm32f7xx.c \ - drivers/system_stm32f7xx.c \ - drivers/serial_uart_stm32f7xx.c \ - drivers/serial_uart_hal.c - -MCU_EXCLUDES = \ - drivers/bus_spi.c \ - drivers/bus_i2c.c \ - drivers/timer.c \ - drivers/serial_uart.c - -DSP_LIB := $(ROOT)/lib/main/DSP_Lib -DEVICE_FLAGS += -DARM_MATH_MATRIX_CHECK -DARM_MATH_ROUNDING -D__FPU_PRESENT=1 -DUNALIGNED_SUPPORT_DISABLE -DARM_MATH_CM7 +# +# F7 Make file include +# + +ifeq ($(DEBUG_HARDFAULTS),F7) +CFLAGS += -DDEBUG_HARDFAULTS +endif + +#CMSIS +CMSIS_DIR := $(ROOT)/lib/main/STM32F7/Drivers/CMSIS + +#STDPERIPH +STDPERIPH_DIR = $(ROOT)/lib/main/STM32F7/Drivers/STM32F7xx_HAL_Driver +STDPERIPH_SRC = $(notdir $(wildcard $(STDPERIPH_DIR)/Src/*.c)) +EXCLUDES = stm32f7xx_hal_can.c \ + stm32f7xx_hal_cec.c \ + stm32f7xx_hal_crc.c \ + stm32f7xx_hal_crc_ex.c \ + stm32f7xx_hal_cryp.c \ + stm32f7xx_hal_cryp_ex.c \ + stm32f7xx_hal_dac.c \ + stm32f7xx_hal_dac_ex.c \ + stm32f7xx_hal_dcmi.c \ + stm32f7xx_hal_dcmi_ex.c \ + stm32f7xx_hal_dfsdm.c \ + stm32f7xx_hal_dma2d.c \ + stm32f7xx_hal_dsi.c \ + stm32f7xx_hal_eth.c \ + stm32f7xx_hal_hash.c \ + stm32f7xx_hal_hash_ex.c \ + stm32f7xx_hal_hcd.c \ + stm32f7xx_hal_i2s.c \ + stm32f7xx_hal_irda.c \ + stm32f7xx_hal_iwdg.c \ + stm32f7xx_hal_jpeg.c \ + stm32f7xx_hal_lptim.c \ + stm32f7xx_hal_ltdc.c \ + stm32f7xx_hal_ltdc_ex.c \ + stm32f7xx_hal_mdios.c \ + stm32f7xx_hal_mmc.c \ + stm32f7xx_hal_msp_template.c \ + stm32f7xx_hal_nand.c \ + stm32f7xx_hal_nor.c \ + stm32f7xx_hal_qspi.c \ + stm32f7xx_hal_rng.c \ + stm32f7xx_hal_rtc.c \ + stm32f7xx_hal_rtc_ex.c \ + stm32f7xx_hal_sai.c \ + stm32f7xx_hal_sai_ex.c \ + stm32f7xx_hal_sd.c \ + stm32f7xx_hal_sdram.c \ + stm32f7xx_hal_smartcard.c \ + stm32f7xx_hal_smartcard_ex.c \ + stm32f7xx_hal_smbus.c \ + stm32f7xx_hal_spdifrx.c \ + stm32f7xx_hal_sram.c \ + stm32f7xx_hal_timebase_rtc_alarm_template.c \ + stm32f7xx_hal_timebase_rtc_wakeup_template.c \ + stm32f7xx_hal_timebase_tim_template.c \ + stm32f7xx_hal_wwdg.c \ + stm32f7xx_ll_adc.c \ + stm32f7xx_ll_crc.c \ + stm32f7xx_ll_dac.c \ + stm32f7xx_ll_exti.c \ + stm32f7xx_ll_fmc.c \ + stm32f7xx_ll_i2c.c \ + stm32f7xx_ll_lptim.c \ + stm32f7xx_ll_pwr.c \ + stm32f7xx_ll_rng.c \ + stm32f7xx_ll_rtc.c \ + stm32f7xx_ll_sdmmc.c \ + stm32f7xx_ll_usart.c + +STDPERIPH_SRC := $(filter-out ${EXCLUDES}, $(STDPERIPH_SRC)) + +#USB +USBCORE_DIR = $(ROOT)/lib/main/STM32F7/Middlewares/ST/STM32_USB_Device_Library/Core +USBCORE_SRC = $(notdir $(wildcard $(USBCORE_DIR)/Src/*.c)) +EXCLUDES = usbd_conf_template.c +USBCORE_SRC := $(filter-out ${EXCLUDES}, $(USBCORE_SRC)) + +USBCDC_DIR = $(ROOT)/lib/main/STM32F7/Middlewares/ST/STM32_USB_Device_Library/Class/CDC +USBCDC_SRC = $(notdir $(wildcard $(USBCDC_DIR)/Src/*.c)) +EXCLUDES = usbd_cdc_if_template.c +USBCDC_SRC := $(filter-out ${EXCLUDES}, $(USBCDC_SRC)) + +VPATH := $(VPATH):$(USBCDC_DIR)/Src:$(USBCORE_DIR)/Src + +DEVICE_STDPERIPH_SRC := $(STDPERIPH_SRC) \ + $(USBCORE_SRC) \ + $(USBCDC_SRC) + +#CMSIS +VPATH := $(VPATH):$(CMSIS_DIR)/Include:$(CMSIS_DIR)/Device/ST/STM32F7xx +VPATH := $(VPATH):$(STDPERIPH_DIR)/Src +CMSIS_SRC := +INCLUDE_DIRS := $(INCLUDE_DIRS) \ + $(STDPERIPH_DIR)/Inc \ + $(USBCORE_DIR)/Inc \ + $(USBCDC_DIR)/Inc \ + $(CMSIS_DIR)/Include \ + $(CMSIS_DIR)/Device/ST/STM32F7xx/Include \ + $(ROOT)/src/main/vcp_hal + +ifneq ($(filter SDCARD,$(FEATURES)),) +INCLUDE_DIRS := $(INCLUDE_DIRS) \ + $(FATFS_DIR) +VPATH := $(VPATH):$(FATFS_DIR) +endif + +#Flags +ARCH_FLAGS = -mthumb -mcpu=cortex-m7 -mfloat-abi=hard -mfpu=fpv5-sp-d16 -fsingle-precision-constant -Wdouble-promotion + +DEVICE_FLAGS = -DUSE_HAL_DRIVER -DUSE_FULL_LL_DRIVER +ifeq ($(TARGET),$(filter $(TARGET),$(F7X5XG_TARGETS))) +DEVICE_FLAGS += -DSTM32F745xx +LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f745.ld +STARTUP_SRC = startup_stm32f745xx.s +TARGET_FLASH := 2048 +else ifeq ($(TARGET),$(filter $(TARGET),$(F7X6XG_TARGETS))) +DEVICE_FLAGS += -DSTM32F746xx +LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f746.ld +STARTUP_SRC = startup_stm32f746xx.s +TARGET_FLASH := 2048 +else ifeq ($(TARGET),$(filter $(TARGET),$(F7X2RE_TARGETS))) +DEVICE_FLAGS += -DSTM32F722xx +LD_SCRIPT = $(LINKER_DIR)/stm32_flash_f722.ld +STARTUP_SRC = startup_stm32f722xx.s +TARGET_FLASH := 512 +else +$(error Unknown MCU for F7 target) +endif +DEVICE_FLAGS += -DHSE_VALUE=$(HSE_VALUE) + +TARGET_FLAGS = -D$(TARGET) + +VCP_SRC = \ + vcp_hal/usbd_desc.c \ + vcp_hal/usbd_conf.c \ + vcp_hal/usbd_cdc_interface.c \ + drivers/serial_usb_vcp.c \ + drivers/usb_io.c + +MCU_COMMON_SRC = \ + target/system_stm32f7xx.c \ + drivers/accgyro/accgyro_mpu.c \ + drivers/adc_stm32f7xx.c \ + drivers/bus_i2c_hal.c \ + drivers/dma_stm32f7xx.c \ + drivers/light_ws2811strip_hal.c \ + drivers/bus_spi_ll.c \ + drivers/pwm_output_dshot_hal.c \ + drivers/timer_hal.c \ + drivers/timer_stm32f7xx.c \ + drivers/system_stm32f7xx.c \ + drivers/serial_uart_stm32f7xx.c \ + drivers/serial_uart_hal.c + +MCU_EXCLUDES = \ + drivers/bus_spi.c \ + drivers/bus_i2c.c \ + drivers/timer.c \ + drivers/serial_uart.c + +DSP_LIB := $(ROOT)/lib/main/DSP_Lib +DEVICE_FLAGS += -DARM_MATH_MATRIX_CHECK -DARM_MATH_ROUNDING -D__FPU_PRESENT=1 -DUNALIGNED_SUPPORT_DISABLE -DARM_MATH_CM7 diff --git a/make/source.mk b/make/source.mk index 0e56d7968..f5cd0f81b 100644 --- a/make/source.mk +++ b/make/source.mk @@ -1,322 +1,322 @@ -COMMON_SRC = \ - build/build_config.c \ - build/debug.c \ - build/version.c \ - $(TARGET_DIR_SRC) \ - main.c \ - common/bitarray.c \ - common/crc.c \ - common/encoding.c \ - common/filter.c \ - common/huffman.c \ - common/huffman_table.c \ - common/maths.c \ - common/printf.c \ - common/streambuf.c \ - common/typeconversion.c \ - config/config_eeprom.c \ - config/feature.c \ - config/parameter_group.c \ - config/config_streamer.c \ - drivers/adc.c \ - drivers/buf_writer.c \ - drivers/bus.c \ - drivers/bus_i2c_config.c \ - drivers/bus_i2c_busdev.c \ - drivers/bus_i2c_soft.c \ - drivers/bus_spi.c \ - drivers/bus_spi_config.c \ - drivers/bus_spi_pinconfig.c \ - drivers/bus_spi_soft.c \ - drivers/buttons.c \ - drivers/display.c \ - drivers/exti.c \ - drivers/io.c \ - drivers/light_led.c \ - drivers/resource.c \ - drivers/rcc.c \ - drivers/serial.c \ - drivers/serial_pinconfig.c \ - drivers/serial_uart.c \ - drivers/serial_uart_pinconfig.c \ - drivers/sound_beeper.c \ - drivers/stack_check.c \ - drivers/system.c \ - drivers/timer.c \ - drivers/transponder_ir.c \ - drivers/transponder_ir_arcitimer.c \ - drivers/transponder_ir_ilap.c \ - drivers/transponder_ir_erlt.c \ - fc/config.c \ - fc/fc_dispatch.c \ - fc/fc_hardfaults.c \ - fc/fc_msp.c \ - fc/fc_msp_box.c \ - fc/fc_tasks.c \ - fc/runtime_config.c \ - io/beeper.c \ - io/serial.c \ - io/statusindicator.c \ - io/transponder_ir.c \ - msp/msp_serial.c \ - scheduler/scheduler.c \ - sensors/battery.c \ - sensors/current.c \ - sensors/voltage.c \ - -OSD_SLAVE_SRC = \ - io/displayport_max7456.c \ - osd_slave/osd_slave_init.c \ - io/osd_slave.c - -FC_SRC = \ - fc/fc_init.c \ - fc/controlrate_profile.c \ - drivers/camera_control.c \ - drivers/gyro_sync.c \ - drivers/rx_nrf24l01.c \ - drivers/rx_spi.c \ - drivers/rx_xn297.c \ - drivers/pwm_esc_detect.c \ - drivers/pwm_output.c \ - drivers/rx_pwm.c \ - drivers/serial_softserial.c \ - fc/fc_core.c \ - fc/fc_rc.c \ - fc/rc_adjustments.c \ - fc/rc_controls.c \ - fc/rc_modes.c \ - fc/cli.c \ - fc/settings.c \ - flight/altitude.c \ - flight/failsafe.c \ - flight/imu.c \ - flight/mixer.c \ - flight/pid.c \ - flight/servos.c \ - io/serial_4way.c \ - io/serial_4way_avrootloader.c \ - io/serial_4way_stk500v2.c \ - rx/ibus.c \ - rx/jetiexbus.c \ - rx/msp.c \ - rx/nrf24_cx10.c \ - rx/nrf24_inav.c \ - rx/nrf24_h8_3d.c \ - rx/nrf24_syma.c \ - rx/nrf24_v202.c \ - rx/pwm.c \ - rx/rx.c \ - rx/rx_spi.c \ - rx/crsf.c \ - rx/sbus.c \ - rx/spektrum.c \ - rx/sumd.c \ - rx/sumh.c \ - rx/xbus.c \ - sensors/acceleration.c \ - sensors/boardalignment.c \ - sensors/compass.c \ - sensors/gyro.c \ - sensors/gyroanalyse.c \ - sensors/initialisation.c \ - blackbox/blackbox.c \ - blackbox/blackbox_encoding.c \ - blackbox/blackbox_io.c \ - cms/cms.c \ - cms/cms_menu_blackbox.c \ - cms/cms_menu_builtin.c \ - cms/cms_menu_imu.c \ - cms/cms_menu_ledstrip.c \ - cms/cms_menu_misc.c \ - cms/cms_menu_osd.c \ - cms/cms_menu_vtx_rtc6705.c \ - cms/cms_menu_vtx_smartaudio.c \ - cms/cms_menu_vtx_tramp.c \ - common/colorconversion.c \ - common/gps_conversion.c \ - drivers/display_ug2864hsweg01.c \ - drivers/light_ws2811strip.c \ - drivers/serial_escserial.c \ - drivers/sonar_hcsr04.c \ - drivers/vtx_common.c \ - flight/navigation.c \ - io/dashboard.c \ - io/displayport_max7456.c \ - io/displayport_msp.c \ - io/displayport_oled.c \ - io/displayport_rcdevice.c \ - io/rcdevice_cam.c \ - io/rcdevice.c \ - io/rcdevice_osd.c \ - io/gps.c \ - io/ledstrip.c \ - io/osd.c \ - sensors/sonar.c \ - sensors/barometer.c \ - telemetry/telemetry.c \ - telemetry/crsf.c \ - telemetry/srxl.c \ - telemetry/frsky.c \ - telemetry/hott.c \ - telemetry/jetiexbus.c \ - telemetry/smartport.c \ - telemetry/ltm.c \ - telemetry/mavlink.c \ - telemetry/msp_shared.c \ - telemetry/ibus.c \ - telemetry/ibus_shared.c \ - sensors/esc_sensor.c \ - io/vtx_string.c \ - io/vtx_settings_config.c \ - io/vtx_rtc6705.c \ - io/vtx_smartaudio.c \ - io/vtx_tramp.c \ - io/vtx_control.c - -COMMON_DEVICE_SRC = \ - $(CMSIS_SRC) \ - $(DEVICE_STDPERIPH_SRC) - -ifeq ($(OSD_SLAVE),yes) -TARGET_FLAGS := -DUSE_OSD_SLAVE $(TARGET_FLAGS) -COMMON_SRC := $(COMMON_SRC) $(OSD_SLAVE_SRC) $(COMMON_DEVICE_SRC) -else -COMMON_SRC := $(COMMON_SRC) $(FC_SRC) $(COMMON_DEVICE_SRC) -endif - - -SPEED_OPTIMISED_SRC := "" -SIZE_OPTIMISED_SRC := "" - -ifneq ($(TARGET),$(filter $(TARGET),$(F1_TARGETS))) -SPEED_OPTIMISED_SRC := $(SPEED_OPTIMISED_SRC) \ - common/encoding.c \ - common/filter.c \ - common/maths.c \ - common/typeconversion.c \ - drivers/adc.c \ - drivers/buf_writer.c \ - drivers/bus.c \ - drivers/bus_spi.c \ - drivers/exti.c \ - drivers/io.c \ - drivers/pwm_output.c \ - drivers/rcc.c \ - drivers/serial.c \ - drivers/serial_uart.c \ - drivers/system.c \ - drivers/timer.c \ - fc/fc_core.c \ - fc/fc_tasks.c \ - fc/fc_rc.c \ - fc/rc_controls.c \ - fc/runtime_config.c \ - flight/imu.c \ - flight/mixer.c \ - flight/pid.c \ - io/serial.c \ - rx/ibus.c \ - rx/rx.c \ - rx/rx_spi.c \ - rx/crsf.c \ - rx/sbus.c \ - rx/spektrum.c \ - rx/sumd.c \ - rx/xbus.c \ - scheduler/scheduler.c \ - sensors/acceleration.c \ - sensors/boardalignment.c \ - sensors/gyro.c \ - sensors/gyroanalyse.c \ - $(CMSIS_SRC) \ - $(DEVICE_STDPERIPH_SRC) \ - drivers/light_ws2811strip.c \ - io/displayport_max7456.c \ - io/osd.c \ - io/osd_slave.c - -SIZE_OPTIMISED_SRC := $(SIZE_OPTIMISED_SRC) \ - drivers/bus_i2c_config.c \ - drivers/bus_spi_config.c \ - drivers/bus_spi_pinconfig.c \ - drivers/serial_escserial.c \ - drivers/serial_pinconfig.c \ - drivers/serial_uart_init.c \ - drivers/serial_uart_pinconfig.c \ - drivers/vtx_rtc6705_soft_spi.c \ - drivers/vtx_rtc6705.c \ - drivers/vtx_common.c \ - fc/fc_init.c \ - fc/cli.c \ - fc/settings.c \ - config/config_eeprom.c \ - config/feature.c \ - config/parameter_group.c \ - config/config_streamer.c \ - io/serial_4way.c \ - io/serial_4way_avrootloader.c \ - io/serial_4way_stk500v2.c \ - io/dashboard.c \ - msp/msp_serial.c \ - cms/cms.c \ - cms/cms_menu_blackbox.c \ - cms/cms_menu_builtin.c \ - cms/cms_menu_imu.c \ - cms/cms_menu_ledstrip.c \ - cms/cms_menu_misc.c \ - cms/cms_menu_osd.c \ - io/vtx_string.c \ - io/vtx_settings_config.c \ - io/vtx_rtc6705.c \ - io/vtx_smartaudio.c \ - io/vtx_tramp.c \ - io/vtx_control.c -endif #!F1 - -# check if target.mk supplied -SRC := $(STARTUP_SRC) $(MCU_COMMON_SRC) $(TARGET_SRC) $(VARIANT_SRC) - -ifneq ($(DSP_LIB),) - -INCLUDE_DIRS += $(DSP_LIB)/Include - -SRC += $(DSP_LIB)/Source/BasicMathFunctions/arm_mult_f32.c -SRC += $(DSP_LIB)/Source/TransformFunctions/arm_rfft_fast_f32.c -SRC += $(DSP_LIB)/Source/TransformFunctions/arm_cfft_f32.c -SRC += $(DSP_LIB)/Source/TransformFunctions/arm_rfft_fast_init_f32.c -SRC += $(DSP_LIB)/Source/TransformFunctions/arm_cfft_radix8_f32.c -SRC += $(DSP_LIB)/Source/CommonTables/arm_common_tables.c - -SRC += $(DSP_LIB)/Source/ComplexMathFunctions/arm_cmplx_mag_f32.c -SRC += $(DSP_LIB)/Source/StatisticsFunctions/arm_max_f32.c - -SRC += $(wildcard $(DSP_LIB)/Source/*/*.S) -endif - -ifneq ($(filter ONBOARDFLASH,$(FEATURES)),) -SRC += \ - drivers/flash_m25p16.c \ - io/flashfs.c -endif - -SRC += $(COMMON_SRC) - -#excludes -SRC := $(filter-out ${MCU_EXCLUDES}, $(SRC)) - -ifneq ($(filter SDCARD,$(FEATURES)),) -SRC += \ - drivers/sdcard.c \ - drivers/sdcard_standard.c \ - io/asyncfatfs/asyncfatfs.c \ - io/asyncfatfs/fat_standard.c -endif - -ifneq ($(filter VCP,$(FEATURES)),) -SRC += $(VCP_SRC) -endif -# end target specific make file checks - -# Search path and source files for the ST stdperiph library -VPATH := $(VPATH):$(STDPERIPH_DIR)/src +COMMON_SRC = \ + build/build_config.c \ + build/debug.c \ + build/version.c \ + $(TARGET_DIR_SRC) \ + main.c \ + common/bitarray.c \ + common/crc.c \ + common/encoding.c \ + common/filter.c \ + common/huffman.c \ + common/huffman_table.c \ + common/maths.c \ + common/printf.c \ + common/streambuf.c \ + common/typeconversion.c \ + config/config_eeprom.c \ + config/feature.c \ + config/parameter_group.c \ + config/config_streamer.c \ + drivers/adc.c \ + drivers/buf_writer.c \ + drivers/bus.c \ + drivers/bus_i2c_config.c \ + drivers/bus_i2c_busdev.c \ + drivers/bus_i2c_soft.c \ + drivers/bus_spi.c \ + drivers/bus_spi_config.c \ + drivers/bus_spi_pinconfig.c \ + drivers/bus_spi_soft.c \ + drivers/buttons.c \ + drivers/display.c \ + drivers/exti.c \ + drivers/io.c \ + drivers/light_led.c \ + drivers/resource.c \ + drivers/rcc.c \ + drivers/serial.c \ + drivers/serial_pinconfig.c \ + drivers/serial_uart.c \ + drivers/serial_uart_pinconfig.c \ + drivers/sound_beeper.c \ + drivers/stack_check.c \ + drivers/system.c \ + drivers/timer.c \ + drivers/transponder_ir.c \ + drivers/transponder_ir_arcitimer.c \ + drivers/transponder_ir_ilap.c \ + drivers/transponder_ir_erlt.c \ + fc/config.c \ + fc/fc_dispatch.c \ + fc/fc_hardfaults.c \ + fc/fc_msp.c \ + fc/fc_msp_box.c \ + fc/fc_tasks.c \ + fc/runtime_config.c \ + io/beeper.c \ + io/serial.c \ + io/statusindicator.c \ + io/transponder_ir.c \ + msp/msp_serial.c \ + scheduler/scheduler.c \ + sensors/battery.c \ + sensors/current.c \ + sensors/voltage.c \ + +OSD_SLAVE_SRC = \ + io/displayport_max7456.c \ + osd_slave/osd_slave_init.c \ + io/osd_slave.c + +FC_SRC = \ + fc/fc_init.c \ + fc/controlrate_profile.c \ + drivers/camera_control.c \ + drivers/gyro_sync.c \ + drivers/rx_nrf24l01.c \ + drivers/rx_spi.c \ + drivers/rx_xn297.c \ + drivers/pwm_esc_detect.c \ + drivers/pwm_output.c \ + drivers/rx_pwm.c \ + drivers/serial_softserial.c \ + fc/fc_core.c \ + fc/fc_rc.c \ + fc/rc_adjustments.c \ + fc/rc_controls.c \ + fc/rc_modes.c \ + fc/cli.c \ + fc/settings.c \ + flight/altitude.c \ + flight/failsafe.c \ + flight/imu.c \ + flight/mixer.c \ + flight/pid.c \ + flight/servos.c \ + io/serial_4way.c \ + io/serial_4way_avrootloader.c \ + io/serial_4way_stk500v2.c \ + rx/ibus.c \ + rx/jetiexbus.c \ + rx/msp.c \ + rx/nrf24_cx10.c \ + rx/nrf24_inav.c \ + rx/nrf24_h8_3d.c \ + rx/nrf24_syma.c \ + rx/nrf24_v202.c \ + rx/pwm.c \ + rx/rx.c \ + rx/rx_spi.c \ + rx/crsf.c \ + rx/sbus.c \ + rx/spektrum.c \ + rx/sumd.c \ + rx/sumh.c \ + rx/xbus.c \ + sensors/acceleration.c \ + sensors/boardalignment.c \ + sensors/compass.c \ + sensors/gyro.c \ + sensors/gyroanalyse.c \ + sensors/initialisation.c \ + blackbox/blackbox.c \ + blackbox/blackbox_encoding.c \ + blackbox/blackbox_io.c \ + cms/cms.c \ + cms/cms_menu_blackbox.c \ + cms/cms_menu_builtin.c \ + cms/cms_menu_imu.c \ + cms/cms_menu_ledstrip.c \ + cms/cms_menu_misc.c \ + cms/cms_menu_osd.c \ + cms/cms_menu_vtx_rtc6705.c \ + cms/cms_menu_vtx_smartaudio.c \ + cms/cms_menu_vtx_tramp.c \ + common/colorconversion.c \ + common/gps_conversion.c \ + drivers/display_ug2864hsweg01.c \ + drivers/light_ws2811strip.c \ + drivers/serial_escserial.c \ + drivers/sonar_hcsr04.c \ + drivers/vtx_common.c \ + flight/navigation.c \ + io/dashboard.c \ + io/displayport_max7456.c \ + io/displayport_msp.c \ + io/displayport_oled.c \ + io/displayport_rcdevice.c \ + io/rcdevice_cam.c \ + io/rcdevice.c \ + io/rcdevice_osd.c \ + io/gps.c \ + io/ledstrip.c \ + io/osd.c \ + sensors/sonar.c \ + sensors/barometer.c \ + telemetry/telemetry.c \ + telemetry/crsf.c \ + telemetry/srxl.c \ + telemetry/frsky.c \ + telemetry/hott.c \ + telemetry/jetiexbus.c \ + telemetry/smartport.c \ + telemetry/ltm.c \ + telemetry/mavlink.c \ + telemetry/msp_shared.c \ + telemetry/ibus.c \ + telemetry/ibus_shared.c \ + sensors/esc_sensor.c \ + io/vtx_string.c \ + io/vtx_settings_config.c \ + io/vtx_rtc6705.c \ + io/vtx_smartaudio.c \ + io/vtx_tramp.c \ + io/vtx_control.c + +COMMON_DEVICE_SRC = \ + $(CMSIS_SRC) \ + $(DEVICE_STDPERIPH_SRC) + +ifeq ($(OSD_SLAVE),yes) +TARGET_FLAGS := -DUSE_OSD_SLAVE $(TARGET_FLAGS) +COMMON_SRC := $(COMMON_SRC) $(OSD_SLAVE_SRC) $(COMMON_DEVICE_SRC) +else +COMMON_SRC := $(COMMON_SRC) $(FC_SRC) $(COMMON_DEVICE_SRC) +endif + + +SPEED_OPTIMISED_SRC := "" +SIZE_OPTIMISED_SRC := "" + +ifneq ($(TARGET),$(filter $(TARGET),$(F1_TARGETS))) +SPEED_OPTIMISED_SRC := $(SPEED_OPTIMISED_SRC) \ + common/encoding.c \ + common/filter.c \ + common/maths.c \ + common/typeconversion.c \ + drivers/adc.c \ + drivers/buf_writer.c \ + drivers/bus.c \ + drivers/bus_spi.c \ + drivers/exti.c \ + drivers/io.c \ + drivers/pwm_output.c \ + drivers/rcc.c \ + drivers/serial.c \ + drivers/serial_uart.c \ + drivers/system.c \ + drivers/timer.c \ + fc/fc_core.c \ + fc/fc_tasks.c \ + fc/fc_rc.c \ + fc/rc_controls.c \ + fc/runtime_config.c \ + flight/imu.c \ + flight/mixer.c \ + flight/pid.c \ + io/serial.c \ + rx/ibus.c \ + rx/rx.c \ + rx/rx_spi.c \ + rx/crsf.c \ + rx/sbus.c \ + rx/spektrum.c \ + rx/sumd.c \ + rx/xbus.c \ + scheduler/scheduler.c \ + sensors/acceleration.c \ + sensors/boardalignment.c \ + sensors/gyro.c \ + sensors/gyroanalyse.c \ + $(CMSIS_SRC) \ + $(DEVICE_STDPERIPH_SRC) \ + drivers/light_ws2811strip.c \ + io/displayport_max7456.c \ + io/osd.c \ + io/osd_slave.c + +SIZE_OPTIMISED_SRC := $(SIZE_OPTIMISED_SRC) \ + drivers/bus_i2c_config.c \ + drivers/bus_spi_config.c \ + drivers/bus_spi_pinconfig.c \ + drivers/serial_escserial.c \ + drivers/serial_pinconfig.c \ + drivers/serial_uart_init.c \ + drivers/serial_uart_pinconfig.c \ + drivers/vtx_rtc6705_soft_spi.c \ + drivers/vtx_rtc6705.c \ + drivers/vtx_common.c \ + fc/fc_init.c \ + fc/cli.c \ + fc/settings.c \ + config/config_eeprom.c \ + config/feature.c \ + config/parameter_group.c \ + config/config_streamer.c \ + io/serial_4way.c \ + io/serial_4way_avrootloader.c \ + io/serial_4way_stk500v2.c \ + io/dashboard.c \ + msp/msp_serial.c \ + cms/cms.c \ + cms/cms_menu_blackbox.c \ + cms/cms_menu_builtin.c \ + cms/cms_menu_imu.c \ + cms/cms_menu_ledstrip.c \ + cms/cms_menu_misc.c \ + cms/cms_menu_osd.c \ + io/vtx_string.c \ + io/vtx_settings_config.c \ + io/vtx_rtc6705.c \ + io/vtx_smartaudio.c \ + io/vtx_tramp.c \ + io/vtx_control.c +endif #!F1 + +# check if target.mk supplied +SRC := $(STARTUP_SRC) $(MCU_COMMON_SRC) $(TARGET_SRC) $(VARIANT_SRC) + +ifneq ($(DSP_LIB),) + +INCLUDE_DIRS += $(DSP_LIB)/Include + +SRC += $(DSP_LIB)/Source/BasicMathFunctions/arm_mult_f32.c +SRC += $(DSP_LIB)/Source/TransformFunctions/arm_rfft_fast_f32.c +SRC += $(DSP_LIB)/Source/TransformFunctions/arm_cfft_f32.c +SRC += $(DSP_LIB)/Source/TransformFunctions/arm_rfft_fast_init_f32.c +SRC += $(DSP_LIB)/Source/TransformFunctions/arm_cfft_radix8_f32.c +SRC += $(DSP_LIB)/Source/CommonTables/arm_common_tables.c + +SRC += $(DSP_LIB)/Source/ComplexMathFunctions/arm_cmplx_mag_f32.c +SRC += $(DSP_LIB)/Source/StatisticsFunctions/arm_max_f32.c + +SRC += $(wildcard $(DSP_LIB)/Source/*/*.S) +endif + +ifneq ($(filter ONBOARDFLASH,$(FEATURES)),) +SRC += \ + drivers/flash_m25p16.c \ + io/flashfs.c +endif + +SRC += $(COMMON_SRC) + +#excludes +SRC := $(filter-out ${MCU_EXCLUDES}, $(SRC)) + +ifneq ($(filter SDCARD,$(FEATURES)),) +SRC += \ + drivers/sdcard.c \ + drivers/sdcard_standard.c \ + io/asyncfatfs/asyncfatfs.c \ + io/asyncfatfs/fat_standard.c +endif + +ifneq ($(filter VCP,$(FEATURES)),) +SRC += $(VCP_SRC) +endif +# end target specific make file checks + +# Search path and source files for the ST stdperiph library +VPATH := $(VPATH):$(STDPERIPH_DIR)/src diff --git a/make/targets.mk b/make/targets.mk index 70f27fd10..9ec6c24ec 100644 --- a/make/targets.mk +++ b/make/targets.mk @@ -1,191 +1,191 @@ -OFFICIAL_TARGETS = ALIENFLIGHTF3 ALIENFLIGHTF4 ANYFCF7 BETAFLIGHTF3 BLUEJAYF4 FURYF4 REVO SIRINFPV SPARKY SPRACINGF3 SPRACINGF3EVO SPRACINGF3NEO SPRACINGF4EVO STM32F3DISCOVERY -SKIP_TARGETS := ALIENWHOOP MOTOLABF4 -ALT_TARGETS = $(sort $(filter-out target, $(basename $(notdir $(wildcard $(ROOT)/src/main/target/*/*.mk))))) -OPBL_TARGETS = $(filter %_OPBL, $(ALT_TARGETS)) -OSD_SLAVE_TARGETS = SPRACINGF3OSD - -VALID_TARGETS = $(dir $(wildcard $(ROOT)/src/main/target/*/target.mk)) -VALID_TARGETS := $(subst /,, $(subst ./src/main/target/,, $(VALID_TARGETS))) -VALID_TARGETS := $(VALID_TARGETS) $(ALT_TARGETS) -VALID_TARGETS := $(sort $(VALID_TARGETS)) -VALID_TARGETS := $(filter-out $(SKIP_TARGETS), $(VALID_TARGETS)) - -ifeq ($(filter $(TARGET),$(SKIP_TARGETS)), $(TARGET)) -ALTERNATES := $(sort $(filter-out target, $(basename $(notdir $(wildcard $(ROOT)/src/main/target/$(TARGET)/*.mk))))) -$(error The target specified, $(TARGET), cannot be built. Use one of the ALT targets: $(ALTERNATES)) -endif - -UNSUPPORTED_TARGETS := \ - AFROMINI \ - ALIENFLIGHTF1 \ - BEEBRAIN \ - CC3D \ - CC3D_OPBL \ - CJMCU \ - MICROSCISKY \ - NAZE - -SUPPORTED_TARGETS := $(filter-out $(UNSUPPORTED_TARGETS), $(VALID_TARGETS)) - -GROUP_1_TARGETS := \ - AIORACERF3 \ - AIR32 \ - AIRBOTF4 \ - AIRBOTF4SD \ - AIRHEROF3 \ - ALIENFLIGHTF3 \ - ALIENFLIGHTF4 \ - ALIENFLIGHTNGF7 \ - ALIENWHOOPF4 \ - ALIENWHOOPF7 \ - ANYFCF7 \ - BEEBRAIN_V2D \ - BEEBRAIN_V2F \ - BEEROTORF4 \ - BETAFLIGHTF3 \ - BETAFLIGHTF4 \ - BLUEJAYF4 \ - CHEBUZZF3 \ - CLRACINGF4 \ - COLIBRI \ - COLIBRI_OPBL \ - COLIBRI_RACE \ - -GROUP_2_TARGETS := \ - DOGE \ - DYSF4PRO \ - EACHIF3 \ - ELLE0 \ - F4BY \ - FISHDRONEF4 \ - FLIP32F3OSD \ - FF_ACROWHOOPSP \ - FF_FORTINIF4 \ - FF_KOMBINI \ - FF_PIKOBLX \ - FF_PIKOF4 \ - FF_RADIANCE \ - FRSKYF3 \ - FRSKYF4 \ - FURYF3 \ - FURYF3OSD \ - FURYF4 \ - FURYF4OSD \ - FURYF7 \ - IMPULSERCF3 \ - IRCFUSIONF3 \ - ISHAPEDF3 \ - KAKUTEF4 \ - KAKUTEF7 \ - KISSCC \ - KISSFC \ - KIWIF4 \ - KIWIF4V2 \ - KROOZX - -GROUP_3_TARGETS := \ - LUX_RACE \ - LUXV2_RACE \ - LUXF4OSD \ - MLTEMPF4 \ - MLTYPHF4 \ - MOTOLAB \ - MULTIFLITEPICO \ - NERO \ - NUCLEOF7 \ - OMNIBUS \ - OMNIBUSF4 \ - OMNIBUSF4SD \ - OMNIBUSF7 \ - OMNIBUSF7V2 \ - PLUMF4 \ - PODIUMF4 \ - RACEBASE \ - RCEXPLORERF3 \ - RG_SSD_F3 \ - REVO \ - REVO_OPBL \ - REVOLT \ - REVONANO \ - RMDO - -GROUP_4_TARGETS := \ - SINGULARITY \ - SIRINFPV \ - SOULF4 \ - SPARKY \ - SPARKY2 \ - SPRACINGF3 \ - SPRACINGF3EVO \ - SPRACINGF3MINI \ - SPRACINGF3MQ \ - SPRACINGF3NEO \ - SPRACINGF3OSD \ - SPRACINGF4EVO \ - SPRACINGF4NEO \ - STM32F3DISCOVERY \ - TINYBEEF3 \ - TINYFISH \ - VRRACE \ - XRACERF4 \ - X_RACERSPI \ - ZCOREF3 - -GROUP_OTHER_TARGETS := $(filter-out $(GROUP_1_TARGETS) $(GROUP_2_TARGETS) $(GROUP_3_TARGETS) $(GROUP_4_TARGETS), $(SUPPORTED_TARGETS)) - -ifeq ($(filter $(TARGET),$(ALT_TARGETS)), $(TARGET)) -BASE_TARGET := $(firstword $(subst /,, $(subst ./src/main/target/,, $(dir $(wildcard $(ROOT)/src/main/target/*/$(TARGET).mk))))) -include $(ROOT)/src/main/target/$(BASE_TARGET)/$(TARGET).mk -else -BASE_TARGET := $(TARGET) -endif - -ifeq ($(filter $(TARGET),$(OPBL_TARGETS)), $(TARGET)) -OPBL = yes -endif - -ifeq ($(filter $(TARGET),$(OSD_SLAVE_TARGETS)), $(TARGET)) -# build an OSD SLAVE -OSD_SLAVE = yes -else -# build an FC -FC = yes -endif - -# silently ignore if the file is not present. Allows for target specific. --include $(ROOT)/src/main/target/$(BASE_TARGET)/target.mk - -F4_TARGETS := $(F405_TARGETS) $(F411_TARGETS) $(F446_TARGETS) -F7_TARGETS := $(F7X2RE_TARGETS) $(F7X5XE_TARGETS) $(F7X5XG_TARGETS) $(F7X5XI_TARGETS) $(F7X6XG_TARGETS) - -ifeq ($(filter $(TARGET),$(VALID_TARGETS)),) -$(error Target '$(TARGET)' is not valid, must be one of $(VALID_TARGETS). Have you prepared a valid target.mk?) -endif - -ifeq ($(filter $(TARGET),$(F1_TARGETS) $(F3_TARGETS) $(F4_TARGETS) $(F7_TARGETS) $(SITL_TARGETS)),) -$(error Target '$(TARGET)' has not specified a valid STM group, must be one of F1, F3, F405, F411 or F7x5. Have you prepared a valid target.mk?) -endif - -ifeq ($(TARGET),$(filter $(TARGET),$(F3_TARGETS))) -TARGET_MCU := STM32F3 - -else ifeq ($(TARGET),$(filter $(TARGET), $(F4_TARGETS))) -TARGET_MCU := STM32F4 - -else ifeq ($(TARGET),$(filter $(TARGET), $(F7_TARGETS))) -TARGET_MCU := STM32F7 - -else ifeq ($(TARGET),$(filter $(TARGET), $(SITL_TARGETS))) -TARGET_MCU := SITL - -else ifeq ($(TARGET),$(filter $(TARGET), $(F1_TARGETS))) -TARGET_MCU := STM32F1 -else -$(error Unknown target MCU specified.) -endif - -ifneq ($(BASE_TARGET), $(TARGET)) -TARGET_FLAGS := $(TARGET_FLAGS) -D$(BASE_TARGET) -endif - -TARGET_FLAGS := $(TARGET_FLAGS) -D$(TARGET_MCU) +OFFICIAL_TARGETS = ALIENFLIGHTF3 ALIENFLIGHTF4 ANYFCF7 BETAFLIGHTF3 BLUEJAYF4 FURYF4 REVO SIRINFPV SPARKY SPRACINGF3 SPRACINGF3EVO SPRACINGF3NEO SPRACINGF4EVO STM32F3DISCOVERY +SKIP_TARGETS := ALIENWHOOP MOTOLABF4 +ALT_TARGETS = $(sort $(filter-out target, $(basename $(notdir $(wildcard $(ROOT)/src/main/target/*/*.mk))))) +OPBL_TARGETS = $(filter %_OPBL, $(ALT_TARGETS)) +OSD_SLAVE_TARGETS = SPRACINGF3OSD + +VALID_TARGETS = $(dir $(wildcard $(ROOT)/src/main/target/*/target.mk)) +VALID_TARGETS := $(subst /,, $(subst ./src/main/target/,, $(VALID_TARGETS))) +VALID_TARGETS := $(VALID_TARGETS) $(ALT_TARGETS) +VALID_TARGETS := $(sort $(VALID_TARGETS)) +VALID_TARGETS := $(filter-out $(SKIP_TARGETS), $(VALID_TARGETS)) + +ifeq ($(filter $(TARGET),$(SKIP_TARGETS)), $(TARGET)) +ALTERNATES := $(sort $(filter-out target, $(basename $(notdir $(wildcard $(ROOT)/src/main/target/$(TARGET)/*.mk))))) +$(error The target specified, $(TARGET), cannot be built. Use one of the ALT targets: $(ALTERNATES)) +endif + +UNSUPPORTED_TARGETS := \ + AFROMINI \ + ALIENFLIGHTF1 \ + BEEBRAIN \ + CC3D \ + CC3D_OPBL \ + CJMCU \ + MICROSCISKY \ + NAZE + +SUPPORTED_TARGETS := $(filter-out $(UNSUPPORTED_TARGETS), $(VALID_TARGETS)) + +GROUP_1_TARGETS := \ + AIORACERF3 \ + AIR32 \ + AIRBOTF4 \ + AIRBOTF4SD \ + AIRHEROF3 \ + ALIENFLIGHTF3 \ + ALIENFLIGHTF4 \ + ALIENFLIGHTNGF7 \ + ALIENWHOOPF4 \ + ALIENWHOOPF7 \ + ANYFCF7 \ + BEEBRAIN_V2D \ + BEEBRAIN_V2F \ + BEEROTORF4 \ + BETAFLIGHTF3 \ + BETAFLIGHTF4 \ + BLUEJAYF4 \ + CHEBUZZF3 \ + CLRACINGF4 \ + COLIBRI \ + COLIBRI_OPBL \ + COLIBRI_RACE \ + +GROUP_2_TARGETS := \ + DOGE \ + DYSF4PRO \ + EACHIF3 \ + ELLE0 \ + F4BY \ + FISHDRONEF4 \ + FLIP32F3OSD \ + FF_ACROWHOOPSP \ + FF_FORTINIF4 \ + FF_KOMBINI \ + FF_PIKOBLX \ + FF_PIKOF4 \ + FF_RADIANCE \ + FRSKYF3 \ + FRSKYF4 \ + FURYF3 \ + FURYF3OSD \ + FURYF4 \ + FURYF4OSD \ + FURYF7 \ + IMPULSERCF3 \ + IRCFUSIONF3 \ + ISHAPEDF3 \ + KAKUTEF4 \ + KAKUTEF7 \ + KISSCC \ + KISSFC \ + KIWIF4 \ + KIWIF4V2 \ + KROOZX + +GROUP_3_TARGETS := \ + LUX_RACE \ + LUXV2_RACE \ + LUXF4OSD \ + MLTEMPF4 \ + MLTYPHF4 \ + MOTOLAB \ + MULTIFLITEPICO \ + NERO \ + NUCLEOF7 \ + OMNIBUS \ + OMNIBUSF4 \ + OMNIBUSF4SD \ + OMNIBUSF7 \ + OMNIBUSF7V2 \ + PLUMF4 \ + PODIUMF4 \ + RACEBASE \ + RCEXPLORERF3 \ + RG_SSD_F3 \ + REVO \ + REVO_OPBL \ + REVOLT \ + REVONANO \ + RMDO + +GROUP_4_TARGETS := \ + SINGULARITY \ + SIRINFPV \ + SOULF4 \ + SPARKY \ + SPARKY2 \ + SPRACINGF3 \ + SPRACINGF3EVO \ + SPRACINGF3MINI \ + SPRACINGF3MQ \ + SPRACINGF3NEO \ + SPRACINGF3OSD \ + SPRACINGF4EVO \ + SPRACINGF4NEO \ + STM32F3DISCOVERY \ + TINYBEEF3 \ + TINYFISH \ + VRRACE \ + XRACERF4 \ + X_RACERSPI \ + ZCOREF3 + +GROUP_OTHER_TARGETS := $(filter-out $(GROUP_1_TARGETS) $(GROUP_2_TARGETS) $(GROUP_3_TARGETS) $(GROUP_4_TARGETS), $(SUPPORTED_TARGETS)) + +ifeq ($(filter $(TARGET),$(ALT_TARGETS)), $(TARGET)) +BASE_TARGET := $(firstword $(subst /,, $(subst ./src/main/target/,, $(dir $(wildcard $(ROOT)/src/main/target/*/$(TARGET).mk))))) +include $(ROOT)/src/main/target/$(BASE_TARGET)/$(TARGET).mk +else +BASE_TARGET := $(TARGET) +endif + +ifeq ($(filter $(TARGET),$(OPBL_TARGETS)), $(TARGET)) +OPBL = yes +endif + +ifeq ($(filter $(TARGET),$(OSD_SLAVE_TARGETS)), $(TARGET)) +# build an OSD SLAVE +OSD_SLAVE = yes +else +# build an FC +FC = yes +endif + +# silently ignore if the file is not present. Allows for target specific. +-include $(ROOT)/src/main/target/$(BASE_TARGET)/target.mk + +F4_TARGETS := $(F405_TARGETS) $(F411_TARGETS) $(F446_TARGETS) +F7_TARGETS := $(F7X2RE_TARGETS) $(F7X5XE_TARGETS) $(F7X5XG_TARGETS) $(F7X5XI_TARGETS) $(F7X6XG_TARGETS) + +ifeq ($(filter $(TARGET),$(VALID_TARGETS)),) +$(error Target '$(TARGET)' is not valid, must be one of $(VALID_TARGETS). Have you prepared a valid target.mk?) +endif + +ifeq ($(filter $(TARGET),$(F1_TARGETS) $(F3_TARGETS) $(F4_TARGETS) $(F7_TARGETS) $(SITL_TARGETS)),) +$(error Target '$(TARGET)' has not specified a valid STM group, must be one of F1, F3, F405, F411 or F7x5. Have you prepared a valid target.mk?) +endif + +ifeq ($(TARGET),$(filter $(TARGET),$(F3_TARGETS))) +TARGET_MCU := STM32F3 + +else ifeq ($(TARGET),$(filter $(TARGET), $(F4_TARGETS))) +TARGET_MCU := STM32F4 + +else ifeq ($(TARGET),$(filter $(TARGET), $(F7_TARGETS))) +TARGET_MCU := STM32F7 + +else ifeq ($(TARGET),$(filter $(TARGET), $(SITL_TARGETS))) +TARGET_MCU := SITL + +else ifeq ($(TARGET),$(filter $(TARGET), $(F1_TARGETS))) +TARGET_MCU := STM32F1 +else +$(error Unknown target MCU specified.) +endif + +ifneq ($(BASE_TARGET), $(TARGET)) +TARGET_FLAGS := $(TARGET_FLAGS) -D$(BASE_TARGET) +endif + +TARGET_FLAGS := $(TARGET_FLAGS) -D$(TARGET_MCU)