Merge pull request #1034 from openmv/build_updates2

Build updates2
This commit is contained in:
Ibrahim Abd Elkader 2020-12-16 19:25:02 +02:00 committed by GitHub
commit e7ae0bcd7f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 49 additions and 38 deletions

View File

@ -38,8 +38,6 @@ CAT = $(Q)cat
# Targets
TARGET ?= OPENMV4
OPENMV = openmv
BOOTLOADER = bootloader
UVC = uvc
FIRMWARE = firmware
# Directories
@ -95,9 +93,14 @@ ifeq ($(FB_ALLOC_STATS), 1)
CFLAGS += -DFB_ALLOC_STATS
endif
# Compiler Flags
include $(MP_BOARD_CONFIG_DIR)/mpconfigboard.mk
include $(OMV_BOARD_CONFIG_DIR)/omv_boardconfig.mk
# Set startup and system files based on MCU.
SYSTEM ?= st/system_stm32fxxx
STARTUP ?= st/startup_$(shell echo $(MCU) | tr '[:upper:]' '[:lower:]')
# Compiler Flags
CFLAGS += -std=gnu99 -Wall -Werror -Warray-bounds -mthumb -nostartfiles -fdata-sections -ffunction-sections
CFLAGS += -D$(MCU) -D$(CFLAGS_MCU) -D$(ARM_MATH) -DARM_NN_TRUNCATE\
-fsingle-precision-constant -Wdouble-promotion -mcpu=$(CPU) -mtune=$(CPU) -mfpu=$(FPU) -mfloat-abi=hard
@ -327,9 +330,9 @@ FIRM_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/py/, \
)
FIRM_OBJ += $(addprefix $(BUILD)/$(CMSIS_DIR)/src/st/,\
FIRM_OBJ += $(addprefix $(BUILD)/$(CMSIS_DIR)/src/,\
$(STARTUP).o \
system_stm32fxxx.o \
$(SYSTEM).o \
)
#------------- MicroPy Core -------------------#
@ -563,20 +566,25 @@ endif
FIRM_OBJ += $(wildcard $(TOP_DIR)/$(TENSORFLOW_DIR)/$(CPU)/*.a)
ifeq ($(OMV_ENABLE_BL), 1)
BOOTLOADER = bootloader
# Bootloader object files
BOOT_OBJ += $(wildcard $(BUILD)/$(BOOTLDR_DIR)/src/*.o)
BOOT_OBJ += $(wildcard $(BUILD)/$(HAL_DIR)/src/*.o)
BOOT_OBJ += $(addprefix $(BUILD)/$(CMSIS_DIR)/src/st/,\
BOOT_OBJ += $(addprefix $(BUILD)/$(CMSIS_DIR)/src/,\
$(STARTUP).o \
system_stm32fxxx.o \
$(SYSTEM).o \
)
endif
ifeq ($(OMV_ENABLE_UVC), 1)
UVC = uvc
# UVC object files
UVC_OBJ += $(wildcard $(BUILD)/$(UVC_DIR)/src/*.o)
UVC_OBJ += $(wildcard $(BUILD)/$(HAL_DIR)/src/*.o)
UVC_OBJ += $(addprefix $(BUILD)/$(CMSIS_DIR)/src/st/,\
UVC_OBJ += $(addprefix $(BUILD)/$(CMSIS_DIR)/src/,\
$(STARTUP).o \
system_stm32fxxx.o \
$(SYSTEM).o \
)
UVC_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/, \
@ -614,6 +622,7 @@ UVC_OBJ += $(wildcard $(BUILD)/$(MLX_DIR)/src/*.o)
ifeq ($(MICROPY_PY_IMU), 1)
UVC_OBJ += $(wildcard $(BUILD)/$(LSM6DS3_DIR)/src/*.o)
endif
endif
###################################################
#Export Variables
@ -633,6 +642,7 @@ export TOP_DIR
export BUILD
export TARGET
export STARTUP
export SYSTEM
export FROZEN_MANIFEST
###################################################
all: $(OPENMV)
@ -659,12 +669,14 @@ endif
ifeq ($(CUBEAI), 1)
$(MAKE) -C $(CUBEAI_DIR) BUILD=$(BUILD)/$(CUBEAI_DIR) CFLAGS="$(CFLAGS) -fno-strict-aliasing -MMD"
endif
ifeq ($(OMV_ENABLE_UVC), 1)
UVC_OBJS: FIRMWARE_OBJS
$(MAKE) -C $(UVC_DIR) BUILD=$(BUILD)/$(UVC_DIR) CFLAGS="$(UVC_CFLAGS) -MMD"
endif
ifeq ($(OMV_ENABLE_BL), 1)
BOOTLOADER_OBJS: FIRMWARE_OBJS
$(MAKE) -C $(BOOTLDR_DIR) BUILD=$(BUILD)/$(BOOTLDR_DIR) CFLAGS="$(BOOTLDR_CFLAGS) -MMD"
endif
# This target generates the main/app firmware image located at 0x08010000
$(FIRMWARE): FIRMWARE_OBJS
@ -673,32 +685,35 @@ $(FIRMWARE): FIRMWARE_OBJS
$(OBJCOPY) -Obinary -R .big_const* $(FW_DIR)/$(FIRMWARE).elf $(FW_DIR)/$(FIRMWARE).bin
$(PYTHON) $(MKDFU) -D $(DFU_DEVICE) -b $(MAIN_APP_ADDR):$(FW_DIR)/$(FIRMWARE).bin $(FW_DIR)/$(FIRMWARE).dfu
# This target generates the bootloader. The bootloader binary is generated twice,
# once without padding, to generate the bootloader.dfu file, and once with padding
# up to the main fw image (MAIN_APP_ADDR), to generate a contiguous firmware.bin image.
ifeq ($(OMV_ENABLE_BL), 1)
# This target generates the bootloader.
$(BOOTLOADER): FIRMWARE_OBJS BOOTLOADER_OBJS
$(CPP) -P -E -I$(OMV_BOARD_CONFIG_DIR) $(BOOTLDR_DIR)/stm32fxxx.ld.S > $(BUILD)/$(BOOTLDR_DIR)/stm32fxxx.lds
$(CC) $(BOOTLDR_LDFLAGS) $(BOOT_OBJ) -o $(FW_DIR)/$(BOOTLOADER).elf -lgcc
$(OBJCOPY) -Obinary $(FW_DIR)/$(BOOTLOADER).elf $(FW_DIR)/$(BOOTLOADER).bin
$(PYTHON) $(MKDFU) -D $(DFU_DEVICE) -b 0x08000000:$(FW_DIR)/$(BOOTLOADER).bin $(FW_DIR)/$(BOOTLOADER).dfu
$(OBJCOPY) -Obinary --pad-to=$(MAIN_APP_ADDR) --gap-fill=0xFF $(FW_DIR)/$(BOOTLOADER).elf $(FW_DIR)/$(BOOTLOADER).bin
endif
ifeq ($(OMV_ENABLE_UVC), 1)
# This target generates the UVC firmware.
$(UVC): FIRMWARE_OBJS UVC_OBJS
$(CPP) -P -E -I$(OMV_BOARD_CONFIG_DIR) $(UVC_DIR)/stm32fxxx.ld.S > $(BUILD)/$(UVC_DIR)/stm32fxxx.lds
$(CC) $(UVC_LDFLAGS) $(UVC_OBJ) -o $(FW_DIR)/$(UVC).elf -lgcc
$(OBJCOPY) -Obinary $(FW_DIR)/$(UVC).elf $(FW_DIR)/$(UVC).bin
$(PYTHON) $(MKDFU) -D $(DFU_DEVICE) -b $(MAIN_APP_ADDR):$(FW_DIR)/$(UVC).bin $(FW_DIR)/$(UVC).dfu
endif
# This target generates a combined bootloader+main firmware image.
# This target generates the uvc, bootloader and firmware images.
$(OPENMV): $(BOOTLOADER) $(UVC) $(FIRMWARE)
$(CAT) $(FW_DIR)/$(BOOTLOADER).bin $(FW_DIR)/$(FIRMWARE).bin > $(FW_DIR)/$(OPENMV).bin
$(PYTHON) $(MKDFU) -D $(DFU_DEVICE) -b 0x08000000:$(FW_DIR)/$(BOOTLOADER).bin -b $(MAIN_APP_ADDR):$(FW_DIR)/$(FIRMWARE).bin $(FW_DIR)/$(OPENMV).dfu
ifeq ($(OMV_ENABLE_BL), 1)
$(SIZE) $(FW_DIR)/$(BOOTLOADER).elf
endif
$(SIZE) $(FW_DIR)/$(FIRMWARE).elf
size:
ifeq ($(OMV_ENABLE_BL), 1)
$(SIZE) --format=SysV $(FW_DIR)/$(BOOTLOADER).elf
endif
$(SIZE) --format=SysV $(FW_DIR)/$(FIRMWARE).elf
clean:
@ -712,14 +727,6 @@ flash_boot::
flash_image::
$(PYDFU) -u $(FW_DIR)/$(FIRMWARE).dfu
# Flash the bootloader + main firmware image (DFU)
flash_dfu::
$(PYDFU) -m -u $(FW_DIR)/$(OPENMV).dfu
# Flash the bootloader + main firmware image (binary)
flash_bin::
$(PYDFU) -m -u $(FW_DIR)/$(OPENMV).bin
# Flash the bootloader using dfu_util
flash_boot_dfu_util::
dfu-util -a 0 -d $(DFU_DEVICE) -D $(FW_DIR)/$(BOOTLOADER).dfu
@ -728,6 +735,3 @@ flash_boot_dfu_util::
flash_image_dfu_util::
dfu-util -a 0 -d $(DFU_DEVICE) -D $(FW_DIR)/$(FIRMWARE).dfu
# Flash the bootloader + main firmware image (DFU) using dfu_util
flash_dfu_util::
dfu-util -a 0 -d $(DFU_DEVICE) -D $(FW_DIR)/$(OPENMV).dfu

View File

@ -7,8 +7,8 @@
#
# CMSIS Makefile
SRC_S = src/st/$(STARTUP).s
SRC_C = src/st/system_stm32fxxx.c
SRC_S = src/$(STARTUP).s
SRC_C = src/$(SYSTEM).c
SRC_C += $(wildcard src/dsp/CommonTables/*.c)
SRC_C += $(wildcard src/dsp/FastMathFunctions/*.c)

View File

@ -5,9 +5,10 @@ HAL_DIR=hal/stm32/f4
ARM_MATH=ARM_MATH_CM4
HAL_INC='<stm32f4xx_hal.h>'
CFLAGS_MCU=MCU_SERIES_F4
STARTUP=startup_stm32f407xx
VECT_TAB_OFFSET=0x10000
MAIN_APP_ADDR=0x08010000
OMV_HSE_VALUE=12000000
DFU_DEVICE=0x0483:0xdf11
OMV_ENABLE_BL=1
OMV_ENABLE_UVC=1
MICROPY_PY_WINC1500 = 1

View File

@ -5,9 +5,10 @@ HAL_DIR=hal/stm32/f4
ARM_MATH=ARM_MATH_CM4
HAL_INC='<stm32f4xx_hal.h>'
CFLAGS_MCU=MCU_SERIES_F4
STARTUP=startup_stm32f427xx
VECT_TAB_OFFSET=0x10000
MAIN_APP_ADDR=0x08010000
OMV_HSE_VALUE=12000000
DFU_DEVICE=0x0483:0xdf11
OMV_ENABLE_BL=1
OMV_ENABLE_UVC=1
MICROPY_PY_WINC1500 = 1

View File

@ -5,10 +5,11 @@ HAL_DIR=hal/stm32/f7
ARM_MATH=ARM_MATH_CM7
HAL_INC='<stm32f7xx_hal.h>'
CFLAGS_MCU=MCU_SERIES_F7
STARTUP=startup_stm32f765xx
VECT_TAB_OFFSET=0x20000
MAIN_APP_ADDR=0x08020000
OMV_HSE_VALUE=12000000
DFU_DEVICE=0x0483:0xdf11
OMV_ENABLE_BL=1
OMV_ENABLE_UVC=1
MICROPY_PY_ULAB = 1
MICROPY_PY_WINC1500 = 1

View File

@ -5,11 +5,12 @@ HAL_DIR=hal/stm32/h7
ARM_MATH=ARM_MATH_CM7
HAL_INC='<stm32h7xx_hal.h>'
CFLAGS_MCU=MCU_SERIES_H7
STARTUP=startup_stm32h743xx
VECT_TAB_OFFSET=0x40000
MAIN_APP_ADDR=0x08040000
OMV_HSE_VALUE=12000000
DFU_DEVICE=0x0483:0xdf11
OMV_ENABLE_BL=1
OMV_ENABLE_UVC=1
MICROPY_PY_ULAB = 1
MICROPY_PY_WINC1500 = 1
MICROPY_PY_IMU = 1

View File

@ -5,10 +5,11 @@ HAL_DIR=hal/stm32/h7
ARM_MATH=ARM_MATH_CM7
HAL_INC='<stm32h7xx_hal.h>'
CFLAGS_MCU=MCU_SERIES_H7
STARTUP=startup_stm32h743xx
VECT_TAB_OFFSET=0x40000
MAIN_APP_ADDR=0x08040000
OMV_HSE_VALUE=12000000
DFU_DEVICE=0x0483:0xdf11
OMV_ENABLE_BL=1
OMV_ENABLE_UVC=1
MICROPY_PY_ULAB = 1
MICROPY_PY_WINC1500 = 1

View File

@ -5,10 +5,11 @@ HAL_DIR=hal/stm32/h7
ARM_MATH=ARM_MATH_CM7
HAL_INC='<stm32h7xx_hal.h>'
CFLAGS_MCU=MCU_SERIES_H7
STARTUP=startup_stm32h743xx
VECT_TAB_OFFSET=0x40000
MAIN_APP_ADDR=0x08040000
OMV_HSE_VALUE=12000000
DFU_DEVICE=0x0483:0xdf11
OMV_ENABLE_BL=1
OMV_ENABLE_UVC=1
MICROPY_PY_ULAB = 1
MICROPY_PY_WINC1500 = 1

View File

@ -5,12 +5,13 @@ HAL_DIR=hal/stm32/h7
ARM_MATH=ARM_MATH_CM7
HAL_INC='<stm32h7xx_hal.h>'
CFLAGS_MCU=MCU_SERIES_H7
STARTUP=startup_stm32h747xx
VECT_TAB_OFFSET=0x40000
MAIN_APP_ADDR=0x08040000
OMV_HSE_VALUE=25000000
DFU_DEVICE=0x2341:0x035b
OMV_BOARD_EXTRA_CFLAGS = -DCORE_CM7
OMV_ENABLE_BL=0
OMV_ENABLE_UVC=1
MICROPY_PY_ULAB = 1
MICROPY_PY_WINC1500 = 0
MICROPY_PY_LWIP = 1