stm32/Makefile: Make stm32lib configurable.
The default stm32lib remains lib/stm32lib, but it can now be easily overriden at build time by specifying STM32LIB_DIR, or STM32LIB_CMSIS_DIR and STM32LIB_HAL_DIR. Signed-off-by: Damien George <damien@micropython.org>
This commit is contained in:
parent
e4f59a0020
commit
9127e63708
|
@ -36,12 +36,7 @@ include $(TOP)/py/py.mk
|
||||||
|
|
||||||
GIT_SUBMODULES += lib/libhydrogen lib/lwip lib/mbedtls lib/stm32lib
|
GIT_SUBMODULES += lib/libhydrogen lib/lwip lib/mbedtls lib/stm32lib
|
||||||
|
|
||||||
MCU_SERIES_UPPER = $(shell echo $(MCU_SERIES) | tr '[:lower:]' '[:upper:]')
|
|
||||||
CMSIS_MCU_LOWER = $(shell echo $(CMSIS_MCU) | tr '[:upper:]' '[:lower:]')
|
|
||||||
|
|
||||||
LD_DIR=boards
|
LD_DIR=boards
|
||||||
CMSIS_DIR=$(TOP)/lib/stm32lib/CMSIS/STM32$(MCU_SERIES_UPPER)xx/Include
|
|
||||||
HAL_DIR=lib/stm32lib/STM32$(MCU_SERIES_UPPER)xx_HAL_Driver
|
|
||||||
USBDEV_DIR=usbdev
|
USBDEV_DIR=usbdev
|
||||||
#USBHOST_DIR=usbhost
|
#USBHOST_DIR=usbhost
|
||||||
DFU=$(TOP)/tools/dfu.py
|
DFU=$(TOP)/tools/dfu.py
|
||||||
|
@ -55,8 +50,8 @@ BOOTLOADER_DFU_USB_PID ?= 0xDF11
|
||||||
STFLASH ?= st-flash
|
STFLASH ?= st-flash
|
||||||
OPENOCD ?= openocd
|
OPENOCD ?= openocd
|
||||||
OPENOCD_CONFIG ?= boards/openocd_stm32f4.cfg
|
OPENOCD_CONFIG ?= boards/openocd_stm32f4.cfg
|
||||||
STARTUP_FILE ?= lib/stm32lib/CMSIS/STM32$(MCU_SERIES_UPPER)xx/Source/Templates/gcc/startup_$(CMSIS_MCU_LOWER).o
|
|
||||||
SYSTEM_FILE ?= lib/stm32lib/CMSIS/STM32$(MCU_SERIES_UPPER)xx/Source/Templates/system_stm32$(MCU_SERIES)xx.o
|
include stm32.mk
|
||||||
|
|
||||||
# Select the cross compile prefix
|
# Select the cross compile prefix
|
||||||
CROSS_COMPILE ?= arm-none-eabi-
|
CROSS_COMPILE ?= arm-none-eabi-
|
||||||
|
@ -65,41 +60,12 @@ INC += -I.
|
||||||
INC += -I$(TOP)
|
INC += -I$(TOP)
|
||||||
INC += -I$(BUILD)
|
INC += -I$(BUILD)
|
||||||
INC += -I$(TOP)/lib/cmsis/inc
|
INC += -I$(TOP)/lib/cmsis/inc
|
||||||
INC += -I$(CMSIS_DIR)/
|
INC += -I$(STM32LIB_CMSIS_ABS)/Include
|
||||||
INC += -I$(TOP)/$(HAL_DIR)/Inc
|
INC += -I$(STM32LIB_HAL_ABS)/Inc
|
||||||
INC += -I$(USBDEV_DIR)/core/inc -I$(USBDEV_DIR)/class/inc
|
INC += -I$(USBDEV_DIR)/core/inc -I$(USBDEV_DIR)/class/inc
|
||||||
#INC += -I$(USBHOST_DIR)
|
#INC += -I$(USBHOST_DIR)
|
||||||
INC += -Ilwip_inc
|
INC += -Ilwip_inc
|
||||||
|
|
||||||
# Basic Cortex-M flags
|
|
||||||
CFLAGS_CORTEX_M = -mthumb
|
|
||||||
|
|
||||||
# Select hardware floating-point support
|
|
||||||
SUPPORTS_HARDWARE_FP_SINGLE = 0
|
|
||||||
SUPPORTS_HARDWARE_FP_DOUBLE = 0
|
|
||||||
ifeq ($(CMSIS_MCU),$(filter $(CMSIS_MCU),STM32F765xx STM32F767xx STM32F769xx STM32H743xx STM32H750xx STM32H7A3xx STM32H7A3xxQ STM32H7B3xx STM32H7B3xxQ))
|
|
||||||
CFLAGS_CORTEX_M += -mfpu=fpv5-d16 -mfloat-abi=hard
|
|
||||||
SUPPORTS_HARDWARE_FP_SINGLE = 1
|
|
||||||
SUPPORTS_HARDWARE_FP_DOUBLE = 1
|
|
||||||
else
|
|
||||||
ifeq ($(MCU_SERIES),$(filter $(MCU_SERIES),f0 l0))
|
|
||||||
CFLAGS_CORTEX_M += -msoft-float
|
|
||||||
else
|
|
||||||
CFLAGS_CORTEX_M += -mfpu=fpv4-sp-d16 -mfloat-abi=hard
|
|
||||||
SUPPORTS_HARDWARE_FP_SINGLE = 1
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Options for particular MCU series
|
|
||||||
CFLAGS_MCU_f0 = $(CFLAGS_CORTEX_M) -mtune=cortex-m0 -mcpu=cortex-m0
|
|
||||||
CFLAGS_MCU_f4 = $(CFLAGS_CORTEX_M) -mtune=cortex-m4 -mcpu=cortex-m4
|
|
||||||
CFLAGS_MCU_f7 = $(CFLAGS_CORTEX_M) -mtune=cortex-m7 -mcpu=cortex-m7
|
|
||||||
CFLAGS_MCU_g4 = $(CFLAGS_CORTEX_M) -mtune=cortex-m4 -mcpu=cortex-m4
|
|
||||||
CFLAGS_MCU_l0 = $(CFLAGS_CORTEX_M) -mtune=cortex-m0plus -mcpu=cortex-m0plus
|
|
||||||
CFLAGS_MCU_l4 = $(CFLAGS_CORTEX_M) -mtune=cortex-m4 -mcpu=cortex-m4
|
|
||||||
CFLAGS_MCU_h7 = $(CFLAGS_CORTEX_M) -mtune=cortex-m7 -mcpu=cortex-m7
|
|
||||||
CFLAGS_MCU_wb = $(CFLAGS_CORTEX_M) -mtune=cortex-m4 -mcpu=cortex-m4
|
|
||||||
|
|
||||||
CFLAGS += $(INC) -Wall -Wpointer-arith -Werror -Wdouble-promotion -Wfloat-conversion -std=gnu99 -nostdlib $(CFLAGS_MOD) $(CFLAGS_EXTRA)
|
CFLAGS += $(INC) -Wall -Wpointer-arith -Werror -Wdouble-promotion -Wfloat-conversion -std=gnu99 -nostdlib $(CFLAGS_MOD) $(CFLAGS_EXTRA)
|
||||||
CFLAGS += -D$(CMSIS_MCU) -DUSE_FULL_LL_DRIVER
|
CFLAGS += -D$(CMSIS_MCU) -DUSE_FULL_LL_DRIVER
|
||||||
CFLAGS += $(CFLAGS_MCU_$(MCU_SERIES))
|
CFLAGS += $(CFLAGS_MCU_$(MCU_SERIES))
|
||||||
|
@ -377,7 +343,7 @@ SRC_O += \
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
HAL_SRC_C += $(addprefix $(HAL_DIR)/Src/stm32$(MCU_SERIES)xx_,\
|
HAL_SRC_C += $(addprefix $(STM32LIB_HAL_BASE)/Src/stm32$(MCU_SERIES)xx_,\
|
||||||
hal.c \
|
hal.c \
|
||||||
hal_adc.c \
|
hal_adc.c \
|
||||||
hal_adc_ex.c \
|
hal_adc_ex.c \
|
||||||
|
@ -403,13 +369,13 @@ HAL_SRC_C += $(addprefix $(HAL_DIR)/Src/stm32$(MCU_SERIES)xx_,\
|
||||||
)
|
)
|
||||||
|
|
||||||
ifeq ($(MCU_SERIES),$(filter $(MCU_SERIES),f4 f7 h7 l0 l4 wb))
|
ifeq ($(MCU_SERIES),$(filter $(MCU_SERIES),f4 f7 h7 l0 l4 wb))
|
||||||
HAL_SRC_C += $(addprefix $(HAL_DIR)/Src/stm32$(MCU_SERIES)xx_,\
|
HAL_SRC_C += $(addprefix $(STM32LIB_HAL_BASE)/Src/stm32$(MCU_SERIES)xx_,\
|
||||||
ll_usb.c \
|
ll_usb.c \
|
||||||
)
|
)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(MCU_SERIES),$(filter $(MCU_SERIES),f4 f7 h7 l4))
|
ifeq ($(MCU_SERIES),$(filter $(MCU_SERIES),f4 f7 h7 l4))
|
||||||
HAL_SRC_C += $(addprefix $(HAL_DIR)/Src/stm32$(MCU_SERIES)xx_,\
|
HAL_SRC_C += $(addprefix $(STM32LIB_HAL_BASE)/Src/stm32$(MCU_SERIES)xx_,\
|
||||||
hal_sd.c \
|
hal_sd.c \
|
||||||
ll_sdmmc.c \
|
ll_sdmmc.c \
|
||||||
ll_fmc.c \
|
ll_fmc.c \
|
||||||
|
@ -417,7 +383,7 @@ HAL_SRC_C += $(addprefix $(HAL_DIR)/Src/stm32$(MCU_SERIES)xx_,\
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(MCU_SERIES),$(filter $(MCU_SERIES),f4 f7 h7))
|
ifeq ($(MCU_SERIES),$(filter $(MCU_SERIES),f4 f7 h7))
|
||||||
HAL_SRC_C += $(addprefix $(HAL_DIR)/Src/stm32$(MCU_SERIES)xx_,\
|
HAL_SRC_C += $(addprefix $(STM32LIB_HAL_BASE)/Src/stm32$(MCU_SERIES)xx_,\
|
||||||
hal_mmc.c \
|
hal_mmc.c \
|
||||||
hal_sdram.c \
|
hal_sdram.c \
|
||||||
hal_dma_ex.c \
|
hal_dma_ex.c \
|
||||||
|
@ -426,35 +392,35 @@ HAL_SRC_C += $(addprefix $(HAL_DIR)/Src/stm32$(MCU_SERIES)xx_,\
|
||||||
ifeq ($(MCU_SERIES),$(filter $(MCU_SERIES),f4))
|
ifeq ($(MCU_SERIES),$(filter $(MCU_SERIES),f4))
|
||||||
# HAL F4-1.16.0 has a bug with missing parentheses in HAL_MMC_Erase.
|
# HAL F4-1.16.0 has a bug with missing parentheses in HAL_MMC_Erase.
|
||||||
# This function is unused so let the error go by as a warning.
|
# This function is unused so let the error go by as a warning.
|
||||||
$(BUILD)/$(HAL_DIR)/Src/stm32$(MCU_SERIES)xx_hal_mmc.o: CFLAGS += -Wno-error=parentheses
|
$(BUILD)/$(STM32LIB_HAL_BASE)/Src/stm32$(MCU_SERIES)xx_hal_mmc.o: CFLAGS += -Wno-error=parentheses
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(MCU_SERIES),$(filter $(MCU_SERIES),g4))
|
ifeq ($(MCU_SERIES),$(filter $(MCU_SERIES),g4))
|
||||||
HAL_SRC_C += $(addprefix $(HAL_DIR)/Src/stm32$(MCU_SERIES)xx_, hal_fdcan.c)
|
HAL_SRC_C += $(addprefix $(STM32LIB_HAL_BASE)/Src/stm32$(MCU_SERIES)xx_, hal_fdcan.c)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(CMSIS_MCU),$(filter $(CMSIS_MCU),STM32H743xx STM32H750xx STM32H7A3xx STM32H7A3xxQ STM32H7B3xx STM32H7B3xxQ))
|
ifeq ($(CMSIS_MCU),$(filter $(CMSIS_MCU),STM32H743xx STM32H750xx STM32H7A3xx STM32H7A3xxQ STM32H7B3xx STM32H7B3xxQ))
|
||||||
HAL_SRC_C += $(addprefix $(HAL_DIR)/Src/stm32$(MCU_SERIES)xx_, hal_fdcan.c)
|
HAL_SRC_C += $(addprefix $(STM32LIB_HAL_BASE)/Src/stm32$(MCU_SERIES)xx_, hal_fdcan.c)
|
||||||
else
|
else
|
||||||
ifeq ($(MCU_SERIES),$(filter $(MCU_SERIES),f0 f4 f7 h7))
|
ifeq ($(MCU_SERIES),$(filter $(MCU_SERIES),f0 f4 f7 h7))
|
||||||
HAL_SRC_C += $(addprefix $(HAL_DIR)/Src/stm32$(MCU_SERIES)xx_, hal_can.c)
|
HAL_SRC_C += $(addprefix $(STM32LIB_HAL_BASE)/Src/stm32$(MCU_SERIES)xx_, hal_can.c)
|
||||||
else
|
else
|
||||||
ifeq ($(MCU_SERIES),$(filter $(MCU_SERIES),l4))
|
ifeq ($(MCU_SERIES),$(filter $(MCU_SERIES),l4))
|
||||||
HAL_SRC_C += $(addprefix $(HAL_DIR)/Src/Legacy/stm32$(MCU_SERIES)xx_, hal_can.c)
|
HAL_SRC_C += $(addprefix $(STM32LIB_HAL_BASE)/Src/Legacy/stm32$(MCU_SERIES)xx_, hal_can.c)
|
||||||
$(BUILD)/$(HAL_DIR)/Src/Legacy/stm32$(MCU_SERIES)xx_hal_can.o: CFLAGS += -Wno-error=cpp
|
$(BUILD)/$(STM32LIB_HAL_BASE)/Src/Legacy/stm32$(MCU_SERIES)xx_hal_can.o: CFLAGS += -Wno-error=cpp
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(MCU_SERIES),$(filter $(MCU_SERIES),f0 f4 f7 l0))
|
ifeq ($(MCU_SERIES),$(filter $(MCU_SERIES),f0 f4 f7 l0))
|
||||||
HAL_SRC_C += $(addprefix $(HAL_DIR)/Src/stm32$(MCU_SERIES)xx_,\
|
HAL_SRC_C += $(addprefix $(STM32LIB_HAL_BASE)/Src/stm32$(MCU_SERIES)xx_,\
|
||||||
hal_i2s.c \
|
hal_i2s.c \
|
||||||
)
|
)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(MCU_SERIES),$(filter $(MCU_SERIES),f4))
|
ifeq ($(MCU_SERIES),$(filter $(MCU_SERIES),f4))
|
||||||
HAL_SRC_C += $(addprefix $(HAL_DIR)/Src/stm32$(MCU_SERIES)xx_,\
|
HAL_SRC_C += $(addprefix $(STM32LIB_HAL_BASE)/Src/stm32$(MCU_SERIES)xx_,\
|
||||||
hal_i2s_ex.c \
|
hal_i2s_ex.c \
|
||||||
)
|
)
|
||||||
endif
|
endif
|
||||||
|
@ -778,7 +744,7 @@ GEN_PLLFREQTABLE_HDR = $(HEADER_BUILD)/pllfreqtable.h
|
||||||
GEN_STMCONST_HDR = $(HEADER_BUILD)/modstm_const.h
|
GEN_STMCONST_HDR = $(HEADER_BUILD)/modstm_const.h
|
||||||
GEN_STMCONST_QSTR = $(BUILD)/modstm_qstr.h
|
GEN_STMCONST_QSTR = $(BUILD)/modstm_qstr.h
|
||||||
GEN_STMCONST_MPZ = $(HEADER_BUILD)/modstm_mpz.h
|
GEN_STMCONST_MPZ = $(HEADER_BUILD)/modstm_mpz.h
|
||||||
CMSIS_MCU_HDR = $(CMSIS_DIR)/$(CMSIS_MCU_LOWER).h
|
CMSIS_MCU_HDR = $(STM32LIB_CMSIS_ABS)/Include/$(CMSIS_MCU_LOWER).h
|
||||||
|
|
||||||
modmachine.c: $(GEN_PLLFREQTABLE_HDR)
|
modmachine.c: $(GEN_PLLFREQTABLE_HDR)
|
||||||
$(GEN_PLLFREQTABLE_HDR): $(PLLVALUES) | $(HEADER_BUILD)
|
$(GEN_PLLFREQTABLE_HDR): $(PLLVALUES) | $(HEADER_BUILD)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
MCU_SERIES = wb
|
MCU_SERIES = wb
|
||||||
CMSIS_MCU = STM32WB55xx
|
CMSIS_MCU = STM32WB55xx
|
||||||
AF_FILE = boards/stm32wb55_af.csv
|
AF_FILE = boards/stm32wb55_af.csv
|
||||||
STARTUP_FILE = lib/stm32lib/CMSIS/STM32WBxx/Source/Templates/gcc/startup_stm32wb55xx_cm4.o
|
STARTUP_FILE = $(STM32LIB_CMSIS_BASE)/Source/Templates/gcc/startup_stm32wb55xx_cm4.o
|
||||||
|
|
||||||
ifeq ($(USE_MBOOT),1)
|
ifeq ($(USE_MBOOT),1)
|
||||||
# When using Mboot all the text goes together after the bootloader
|
# When using Mboot all the text goes together after the bootloader
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
MCU_SERIES = wb
|
MCU_SERIES = wb
|
||||||
CMSIS_MCU = STM32WB55xx
|
CMSIS_MCU = STM32WB55xx
|
||||||
AF_FILE = boards/stm32wb55_af.csv
|
AF_FILE = boards/stm32wb55_af.csv
|
||||||
STARTUP_FILE = lib/stm32lib/CMSIS/STM32WBxx/Source/Templates/gcc/startup_stm32wb55xx_cm4.o
|
STARTUP_FILE = $(STM32LIB_CMSIS_BASE)/Source/Templates/gcc/startup_stm32wb55xx_cm4.o
|
||||||
|
|
||||||
ifeq ($(USE_MBOOT),1)
|
ifeq ($(USE_MBOOT),1)
|
||||||
# When using Mboot all the text goes together after the bootloader
|
# When using Mboot all the text goes together after the bootloader
|
||||||
|
|
|
@ -32,11 +32,6 @@ include $(BOARD_DIR)/mpconfigboard.mk
|
||||||
# A board can set MBOOT_TEXT0_ADDR to a custom location where mboot should reside.
|
# A board can set MBOOT_TEXT0_ADDR to a custom location where mboot should reside.
|
||||||
MBOOT_TEXT0_ADDR ?= 0x08000000
|
MBOOT_TEXT0_ADDR ?= 0x08000000
|
||||||
|
|
||||||
MCU_SERIES_UPPER = $(shell echo $(MCU_SERIES) | tr '[:lower:]' '[:upper:]')
|
|
||||||
CMSIS_MCU_LOWER = $(shell echo $(CMSIS_MCU) | tr '[:upper:]' '[:lower:]')
|
|
||||||
|
|
||||||
CMSIS_DIR=$(TOP)/lib/stm32lib/CMSIS/STM32$(MCU_SERIES_UPPER)xx/Include
|
|
||||||
HAL_DIR=lib/stm32lib/STM32$(MCU_SERIES_UPPER)xx_HAL_Driver
|
|
||||||
USBDEV_DIR=usbdev
|
USBDEV_DIR=usbdev
|
||||||
DFU=$(TOP)/tools/dfu.py
|
DFU=$(TOP)/tools/dfu.py
|
||||||
PYDFU ?= $(TOP)/tools/pydfu.py
|
PYDFU ?= $(TOP)/tools/pydfu.py
|
||||||
|
@ -45,8 +40,8 @@ BOOTLOADER_DFU_USB_PID ?= 0xDF11
|
||||||
STFLASH ?= st-flash
|
STFLASH ?= st-flash
|
||||||
OPENOCD ?= openocd
|
OPENOCD ?= openocd
|
||||||
OPENOCD_CONFIG ?= boards/openocd_stm32f4.cfg
|
OPENOCD_CONFIG ?= boards/openocd_stm32f4.cfg
|
||||||
STARTUP_FILE ?= lib/stm32lib/CMSIS/STM32$(MCU_SERIES_UPPER)xx/Source/Templates/gcc/startup_$(CMSIS_MCU_LOWER).o
|
|
||||||
SYSTEM_FILE ?= lib/stm32lib/CMSIS/STM32$(MCU_SERIES_UPPER)xx/Source/Templates/system_stm32$(MCU_SERIES)xx.o
|
include ../stm32.mk
|
||||||
|
|
||||||
CROSS_COMPILE ?= arm-none-eabi-
|
CROSS_COMPILE ?= arm-none-eabi-
|
||||||
|
|
||||||
|
@ -55,20 +50,10 @@ INC += -I..
|
||||||
INC += -I$(TOP)
|
INC += -I$(TOP)
|
||||||
INC += -I$(BUILD)
|
INC += -I$(BUILD)
|
||||||
INC += -I$(TOP)/lib/cmsis/inc
|
INC += -I$(TOP)/lib/cmsis/inc
|
||||||
INC += -I$(CMSIS_DIR)/
|
INC += -I$(STM32LIB_CMSIS_ABS)/Include
|
||||||
INC += -I$(TOP)/$(HAL_DIR)/Inc
|
INC += -I$(STM32LIB_HAL_ABS)/Inc
|
||||||
INC += -I../$(USBDEV_DIR)/core/inc -I../$(USBDEV_DIR)/class/inc
|
INC += -I../$(USBDEV_DIR)/core/inc -I../$(USBDEV_DIR)/class/inc
|
||||||
|
|
||||||
# Basic Cortex-M flags
|
|
||||||
CFLAGS_CORTEX_M = -mthumb
|
|
||||||
|
|
||||||
# Options for particular MCU series
|
|
||||||
CFLAGS_MCU_f4 = $(CFLAGS_CORTEX_M) -mtune=cortex-m4 -mcpu=cortex-m4
|
|
||||||
CFLAGS_MCU_f7 = $(CFLAGS_CORTEX_M) -mtune=cortex-m7 -mcpu=cortex-m7
|
|
||||||
CFLAGS_MCU_h7 = $(CFLAGS_CORTEX_M) -mtune=cortex-m7 -mcpu=cortex-m7
|
|
||||||
CFLAGS_MCU_l4 = $(CFLAGS_CORTEX_M) -mtune=cortex-m4 -mcpu=cortex-m4
|
|
||||||
CFLAGS_MCU_wb = $(CFLAGS_CORTEX_M) -mtune=cortex-m4 -mcpu=cortex-m4
|
|
||||||
|
|
||||||
# Standard C functions like memset need to be compiled with special flags so
|
# Standard C functions like memset need to be compiled with special flags so
|
||||||
# the compiler does not optimise these functions in terms of themselves.
|
# the compiler does not optimise these functions in terms of themselves.
|
||||||
CFLAGS_BUILTIN ?= -ffreestanding -fno-builtin -fno-lto
|
CFLAGS_BUILTIN ?= -ffreestanding -fno-builtin -fno-lto
|
||||||
|
@ -154,8 +139,8 @@ CFLAGS += -DMBOOT_PACK_CHUNKSIZE=$(MBOOT_PACK_CHUNKSIZE)
|
||||||
CFLAGS += -DMBOOT_PACK_KEYS_FILE=\"$(MBOOT_PACK_KEYS_FILE)\"
|
CFLAGS += -DMBOOT_PACK_KEYS_FILE=\"$(MBOOT_PACK_KEYS_FILE)\"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
$(BUILD)/$(HAL_DIR)/Src/stm32$(MCU_SERIES)xx_ll_usb.o: CFLAGS += -Wno-attributes
|
$(BUILD)/$(STM32LIB_HAL_BASE)/Src/stm32$(MCU_SERIES)xx_ll_usb.o: CFLAGS += -Wno-attributes
|
||||||
SRC_HAL += $(addprefix $(HAL_DIR)/Src/stm32$(MCU_SERIES)xx_,\
|
SRC_HAL += $(addprefix $(STM32LIB_HAL_BASE)/Src/stm32$(MCU_SERIES)xx_,\
|
||||||
hal_cortex.c \
|
hal_cortex.c \
|
||||||
hal_flash.c \
|
hal_flash.c \
|
||||||
hal_flash_ex.c \
|
hal_flash_ex.c \
|
||||||
|
|
|
@ -0,0 +1,68 @@
|
||||||
|
#
|
||||||
|
# Makefile fragment for STM32 MCUs.
|
||||||
|
#
|
||||||
|
|
||||||
|
# Create variables for the MCU name.
|
||||||
|
MCU_SERIES_UPPER = $(shell echo $(MCU_SERIES) | tr '[:lower:]' '[:upper:]')
|
||||||
|
CMSIS_MCU_LOWER = $(shell echo $(CMSIS_MCU) | tr '[:upper:]' '[:lower:]')
|
||||||
|
|
||||||
|
# Configure location of stm32lib. Options are:
|
||||||
|
# 1. default: use provided lib/stm32lib
|
||||||
|
# 2. set STM32LIB_DIR to point to an stm32lib directory structure
|
||||||
|
# 3. set STM32LIB_CMSIS_DIR to point to xxx/CMSIS/Device/ST/STM32<series>xx
|
||||||
|
# and STM32LIB_HAL_DIR to point to xxx/STM32<series>xx_HAL_Driver
|
||||||
|
ifneq ($(STM32LIB_CMSIS_DIR),)
|
||||||
|
# Option 3
|
||||||
|
STM32LIB_CMSIS_BASE = $(abspath $(STM32LIB_CMSIS_DIR))
|
||||||
|
STM32LIB_CMSIS_ABS = $(STM32LIB_CMSIS_BASE)
|
||||||
|
STM32LIB_HAL_BASE = $(abspath $(STM32LIB_HAL_DIR))
|
||||||
|
STM32LIB_HAL_ABS = $(STM32LIB_HAL_BASE)
|
||||||
|
else
|
||||||
|
ifneq ($(STM32LIB_DIR),)
|
||||||
|
# Option 2
|
||||||
|
STM32LIB_VPATH = $(abspath $(STM32LIB_DIR))
|
||||||
|
STM32LIB_FROM_HERE = $(STM32LIB_VPATH)
|
||||||
|
else
|
||||||
|
# Option 1
|
||||||
|
STM32LIB_VPATH = lib/stm32lib
|
||||||
|
STM32LIB_FROM_HERE = $(TOP)/$(STM32LIB_VPATH)
|
||||||
|
endif
|
||||||
|
STM32LIB_CMSIS_BASE = $(STM32LIB_VPATH)/CMSIS/STM32$(MCU_SERIES_UPPER)xx
|
||||||
|
STM32LIB_CMSIS_ABS = $(STM32LIB_FROM_HERE)/CMSIS/STM32$(MCU_SERIES_UPPER)xx
|
||||||
|
STM32LIB_HAL_BASE = $(STM32LIB_VPATH)/STM32$(MCU_SERIES_UPPER)xx_HAL_Driver
|
||||||
|
STM32LIB_HAL_ABS = $(STM32LIB_FROM_HERE)/STM32$(MCU_SERIES_UPPER)xx_HAL_Driver
|
||||||
|
endif
|
||||||
|
|
||||||
|
STARTUP_FILE ?= $(STM32LIB_CMSIS_BASE)/Source/Templates/gcc/startup_$(CMSIS_MCU_LOWER).o
|
||||||
|
SYSTEM_FILE ?= $(STM32LIB_CMSIS_BASE)/Source/Templates/system_stm32$(MCU_SERIES)xx.o
|
||||||
|
|
||||||
|
# Basic Cortex-M flags.
|
||||||
|
CFLAGS_CORTEX_M = -mthumb
|
||||||
|
|
||||||
|
ifneq ($(BUILDING_MBOOT),1)
|
||||||
|
# Select hardware floating-point support.
|
||||||
|
SUPPORTS_HARDWARE_FP_SINGLE = 0
|
||||||
|
SUPPORTS_HARDWARE_FP_DOUBLE = 0
|
||||||
|
ifeq ($(CMSIS_MCU),$(filter $(CMSIS_MCU),STM32F765xx STM32F767xx STM32F769xx STM32H743xx STM32H750xx STM32H7A3xx STM32H7A3xxQ STM32H7B3xx STM32H7B3xxQ))
|
||||||
|
CFLAGS_CORTEX_M += -mfpu=fpv5-d16 -mfloat-abi=hard
|
||||||
|
SUPPORTS_HARDWARE_FP_SINGLE = 1
|
||||||
|
SUPPORTS_HARDWARE_FP_DOUBLE = 1
|
||||||
|
else
|
||||||
|
ifeq ($(MCU_SERIES),$(filter $(MCU_SERIES),f0 l0))
|
||||||
|
CFLAGS_CORTEX_M += -msoft-float
|
||||||
|
else
|
||||||
|
CFLAGS_CORTEX_M += -mfpu=fpv4-sp-d16 -mfloat-abi=hard
|
||||||
|
SUPPORTS_HARDWARE_FP_SINGLE = 1
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Options for particular MCU series.
|
||||||
|
CFLAGS_MCU_f0 = $(CFLAGS_CORTEX_M) -mtune=cortex-m0 -mcpu=cortex-m0
|
||||||
|
CFLAGS_MCU_f4 = $(CFLAGS_CORTEX_M) -mtune=cortex-m4 -mcpu=cortex-m4
|
||||||
|
CFLAGS_MCU_f7 = $(CFLAGS_CORTEX_M) -mtune=cortex-m7 -mcpu=cortex-m7
|
||||||
|
CFLAGS_MCU_g4 = $(CFLAGS_CORTEX_M) -mtune=cortex-m4 -mcpu=cortex-m4
|
||||||
|
CFLAGS_MCU_l0 = $(CFLAGS_CORTEX_M) -mtune=cortex-m0plus -mcpu=cortex-m0plus
|
||||||
|
CFLAGS_MCU_l4 = $(CFLAGS_CORTEX_M) -mtune=cortex-m4 -mcpu=cortex-m4
|
||||||
|
CFLAGS_MCU_h7 = $(CFLAGS_CORTEX_M) -mtune=cortex-m7 -mcpu=cortex-m7
|
||||||
|
CFLAGS_MCU_wb = $(CFLAGS_CORTEX_M) -mtune=cortex-m4 -mcpu=cortex-m4
|
Loading…
Reference in New Issue