mirror of
https://github.com/openmv/openmv.git
synced 2025-11-04 14:49:50 +08:00
commit
e7ae0bcd7f
62
src/Makefile
62
src/Makefile
@ -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
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user