mirror of
https://github.com/openmv/openmv.git
synced 2025-11-04 14:49:50 +08:00
Move main Makefile to port Makefile(s)
This commit is contained in:
parent
cf35c53e73
commit
c397ca3aeb
453
src/Makefile
453
src/Makefile
@ -87,457 +87,14 @@ ifeq ($(FB_ALLOC_STATS), 1)
|
||||
CFLAGS += -DFB_ALLOC_STATS
|
||||
endif
|
||||
|
||||
# include this first to set the port
|
||||
# Include the board config to set the port.
|
||||
include $(OMV_BOARD_CONFIG_DIR)/omv_boardconfig.mk
|
||||
include $(OMV_DIR)/ports/$(PORT)/omv_portconfig.mk
|
||||
|
||||
# MicroPython board config.
|
||||
#include $(MP_BOARD_CONFIG_DIR)/mpconfigboard.mk
|
||||
|
||||
# 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
|
||||
CFLAGS += -D__FPU_PRESENT=1 -D__VFP_FP__ -DUSE_USB_FS -DUSE_DEVICE_MODE -DUSE_USB_OTG_ID=0 -DHSE_VALUE=$(OMV_HSE_VALUE)\
|
||||
-D$(TARGET) -DVECT_TAB_OFFSET=$(VECT_TAB_OFFSET) -DMAIN_APP_ADDR=$(MAIN_APP_ADDR) $(OMV_PORT_CFLAGS)
|
||||
CFLAGS += $(OMV_BOARD_EXTRA_CFLAGS)
|
||||
|
||||
HAL_CFLAGS += -I$(TOP_DIR)/$(CMSIS_DIR)/include/
|
||||
HAL_CFLAGS += -I$(TOP_DIR)/$(HAL_DIR)/include/
|
||||
HAL_CFLAGS += $(OMV_PORT_HAL_CFLAGS)
|
||||
|
||||
MPY_CFLAGS += -I$(MP_BOARD_CONFIG_DIR)
|
||||
MPY_CFLAGS += -I$(BUILD)/$(MICROPY_DIR)/
|
||||
MPY_CFLAGS += -I$(TOP_DIR)/$(MICROPY_DIR)/
|
||||
MPY_CFLAGS += -I$(TOP_DIR)/$(MICROPY_DIR)/py/
|
||||
MPY_CFLAGS += -I$(TOP_DIR)/$(MICROPY_DIR)/lib/mp-readline
|
||||
MPY_CFLAGS += $(OMV_PORT_MPY_CFLAGS)
|
||||
|
||||
# In addition to CFLAGS, the following options are needed to set varilables
|
||||
# in MicroPython's Makefile, to enable or disable compiling additional modules.
|
||||
MICROPY_ARGS = BOARD=$(TARGET) DEBUG=$(DEBUG) QSTR_DEFS="$(OMV_QSTR_DEFS)" MPY_LIB_DIR=$(MPY_LIB_DIR)
|
||||
|
||||
ifeq ($(MICROPY_PY_WINC1500), 1)
|
||||
MPY_CFLAGS += -DMICROPY_PY_WINC1500=1
|
||||
MICROPY_ARGS += MICROPY_PY_WINC1500=1
|
||||
endif
|
||||
ifeq ($(MICROPY_PY_IMU), 1)
|
||||
MPY_CFLAGS += -DMICROPY_PY_IMU=1
|
||||
MICROPY_ARGS += MICROPY_PY_IMU=1
|
||||
endif
|
||||
ifeq ($(MICROPY_PY_ULAB), 1)
|
||||
MPY_CFLAGS += -DMICROPY_PY_ULAB=1
|
||||
MICROPY_ARGS += MICROPY_PY_ULAB=1
|
||||
endif
|
||||
ifeq ($(MICROPY_PY_LWIP), 1)
|
||||
MPY_CFLAGS += -DMICROPY_PY_LWIP=1
|
||||
MICROPY_ARGS += MICROPY_PY_LWIP=1
|
||||
endif
|
||||
ifeq ($(MICROPY_PY_NETWORK_CYW43), 1)
|
||||
MPY_CFLAGS += -DMICROPY_PY_NETWORK_CYW43=1
|
||||
MICROPY_ARGS += MICROPY_PY_NETWORK_CYW43=1
|
||||
endif
|
||||
ifeq ($(MICROPY_PY_AUDIO), 1)
|
||||
MPY_CFLAGS += -DMICROPY_PY_AUDIO=1
|
||||
MICROPY_ARGS += MICROPY_PY_AUDIO=1
|
||||
endif
|
||||
ifeq ($(MICROPY_PY_MICRO_SPEECH), 1)
|
||||
MPY_CFLAGS += -DMICROPY_PY_MICRO_SPEECH=1
|
||||
MICROPY_ARGS += MICROPY_PY_MICRO_SPEECH=1
|
||||
endif
|
||||
|
||||
OMV_CFLAGS += -I$(OMV_BOARD_CONFIG_DIR)
|
||||
OMV_CFLAGS += -I$(TOP_DIR)/$(OMV_DIR)/
|
||||
OMV_CFLAGS += -I$(TOP_DIR)/$(OMV_DIR)/alloc/
|
||||
OMV_CFLAGS += -I$(TOP_DIR)/$(OMV_DIR)/common/
|
||||
OMV_CFLAGS += -I$(TOP_DIR)/$(OMV_DIR)/imlib/
|
||||
OMV_CFLAGS += -I$(TOP_DIR)/$(OMV_DIR)/modules/
|
||||
OMV_CFLAGS += -I$(TOP_DIR)/$(OMV_DIR)/sensors/
|
||||
OMV_CFLAGS += -I$(TOP_DIR)/$(OMV_DIR)/ports/$(PORT)/
|
||||
OMV_CFLAGS += -I$(TOP_DIR)/$(OMV_DIR)/ports/$(PORT)/modules/
|
||||
|
||||
OMV_CFLAGS += -I$(TOP_DIR)/$(LEPTON_DIR)/include/
|
||||
OMV_CFLAGS += -I$(TOP_DIR)/$(MLX_DIR)/include/
|
||||
OMV_CFLAGS += -I$(TOP_DIR)/$(LSM6DS3_DIR)/include/
|
||||
OMV_CFLAGS += -I$(TOP_DIR)/$(TENSORFLOW_DIR)/$(CPU)/
|
||||
OMV_CFLAGS += -I$(TOP_DIR)/$(WINC1500_DIR)/include/
|
||||
OMV_CFLAGS += -I$(TOP_DIR)/$(LIBPDM_DIR)/
|
||||
|
||||
ifeq ($(OMV_ENABLE_BL), 1)
|
||||
BL_CFLAGS := $(CFLAGS) $(HAL_CFLAGS)
|
||||
BL_CFLAGS += -I$(OMV_BOARD_CONFIG_DIR)
|
||||
BL_CFLAGS += -I$(TOP_DIR)/$(BOOTLDR_DIR)/include/
|
||||
# Linker Flags
|
||||
BL_LDFLAGS = -mcpu=$(CPU) -mabi=aapcs-linux -mthumb -mfpu=$(FPU) -mfloat-abi=hard\
|
||||
-nostdlib -Wl,--gc-sections -Wl,-T$(BUILD)/$(BOOTLDR_DIR)/stm32fxxx.lds
|
||||
endif
|
||||
|
||||
ifeq ($(OMV_ENABLE_UVC), 1)
|
||||
UVC_CFLAGS := $(CFLAGS) $(HAL_CFLAGS)
|
||||
UVC_CFLAGS += -I$(OMV_BOARD_CONFIG_DIR)
|
||||
UVC_CFLAGS += -I$(TOP_DIR)/$(UVC_DIR)/include/
|
||||
UVC_CFLAGS += $(OMV_CFLAGS) $(MPY_CFLAGS)
|
||||
# Linker Flags
|
||||
UVC_LDFLAGS = -mcpu=$(CPU) -mabi=aapcs-linux -mthumb -mfpu=$(FPU) -mfloat-abi=hard\
|
||||
-nostdlib -Wl,--gc-sections -Wl,-T$(BUILD)/$(UVC_DIR)/stm32fxxx.lds
|
||||
endif
|
||||
|
||||
CFLAGS += $(HAL_CFLAGS) $(MPY_CFLAGS) $(OMV_CFLAGS)
|
||||
|
||||
# Linker Flags
|
||||
LDFLAGS = -mcpu=$(CPU) -mabi=aapcs-linux -mthumb -mfpu=$(FPU) -mfloat-abi=hard\
|
||||
-nostdlib -Wl,--gc-sections -Wl,-T$(BUILD)/$(LDSCRIPT).lds
|
||||
|
||||
#------------- Libraries ----------------#
|
||||
LIBS += $(TOP_DIR)/$(TENSORFLOW_DIR)/$(CPU)/libtf*.a
|
||||
ifeq ($(MICROPY_PY_AUDIO), 1)
|
||||
LIBS += $(TOP_DIR)/$(LIBPDM_DIR)/libPDMFilter_CM7_GCC_wc32.a
|
||||
endif
|
||||
|
||||
#------------- Firmware Objects ----------------#
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/dsp/CommonTables/*.o)
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/dsp/FastMathFunctions/*.o)
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/dsp/MatrixFunctions/*.o)
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/nn/ActivationFunctions/*.o)
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/nn/FullyConnectedFunctions/*.o)
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/nn/NNSupportFunctions/*.o)
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/nn/PoolingFunctions/*.o)
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/nn/SoftmaxFunctions/*.o)
|
||||
ifeq ($(CUBEAI),)
|
||||
# Conflicts with NetworkRuntime library.
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/nn/ConvolutionFunctions/*.o)
|
||||
endif
|
||||
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(HAL_DIR)/src/*.o)
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(LEPTON_DIR)/src/*.o)
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(MLX_DIR)/src/*.o)
|
||||
ifeq ($(MICROPY_PY_IMU), 1)
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(LSM6DS3_DIR)/src/*.o)
|
||||
endif
|
||||
ifeq ($(MICROPY_PY_WINC1500), 1)
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(WINC1500_DIR)/src/*.o)
|
||||
endif
|
||||
|
||||
#------------- OpenMV Objects ----------------#
|
||||
FIRM_OBJ += $(addprefix $(BUILD)/$(CMSIS_DIR)/src/, \
|
||||
$(STARTUP).o \
|
||||
$(SYSTEM).o \
|
||||
)
|
||||
|
||||
FIRM_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/alloc/, \
|
||||
xalloc.o \
|
||||
fb_alloc.o \
|
||||
umm_malloc.o \
|
||||
)
|
||||
|
||||
FIRM_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/common/, \
|
||||
array.o \
|
||||
ff_wrapper.o \
|
||||
ini.o \
|
||||
ringbuf.o \
|
||||
trace.o \
|
||||
mutex.o \
|
||||
)
|
||||
|
||||
FIRM_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/sensors/, \
|
||||
ov2640.o \
|
||||
ov5640.o \
|
||||
ov7690.o \
|
||||
ov7725.o \
|
||||
ov9650.o \
|
||||
mt9v034.o \
|
||||
lepton.o \
|
||||
hm01b0.o \
|
||||
)
|
||||
|
||||
FIRM_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/modules/, \
|
||||
py_clock.o \
|
||||
py_gif.o \
|
||||
py_helper.o \
|
||||
py_image.o \
|
||||
py_mjpeg.o \
|
||||
py_omv.o \
|
||||
py_sensor.o \
|
||||
py_tf.o \
|
||||
)
|
||||
|
||||
FIRM_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/imlib/, \
|
||||
agast.o \
|
||||
apriltag.o \
|
||||
binary.o \
|
||||
blob.o \
|
||||
bmp.o \
|
||||
clahe.o \
|
||||
collections.o \
|
||||
dmtx.o \
|
||||
draw.o \
|
||||
edge.o \
|
||||
eye.o \
|
||||
fast.o \
|
||||
fft.o \
|
||||
filter.o \
|
||||
fmath.o \
|
||||
font.o \
|
||||
framebuffer.o \
|
||||
fsort.o \
|
||||
gif.o \
|
||||
haar.o \
|
||||
hog.o \
|
||||
hough.o \
|
||||
imlib.o \
|
||||
integral.o \
|
||||
integral_mw.o \
|
||||
jpeg.o \
|
||||
kmeans.o \
|
||||
lab_tab.o \
|
||||
lbp.o \
|
||||
line.o \
|
||||
lsd.o \
|
||||
mathop.o \
|
||||
mjpeg.o \
|
||||
orb.o \
|
||||
phasecorrelation.o \
|
||||
point.o \
|
||||
pool.o \
|
||||
ppm.o \
|
||||
qrcode.o \
|
||||
qsort.o \
|
||||
rainbow_tab.o \
|
||||
rectangle.o \
|
||||
selective_search.o \
|
||||
sincos_tab.o \
|
||||
stats.o \
|
||||
template.o \
|
||||
xyz_tab.o \
|
||||
yuv_tab.o \
|
||||
zbar.o \
|
||||
)
|
||||
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(OMV_DIR)/ports/$(PORT)/*.o)
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(OMV_DIR)/ports/$(PORT)/modules/*.o)
|
||||
|
||||
#------------- MicroPy Objects -------------------#
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(MICROPY_DIR)/py/*.o)
|
||||
FIRM_OBJ += $(OMV_PORT_MPY_OBJ)
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(MICROPY_DIR)/boards/$(TARGET)/*.o)
|
||||
|
||||
ifeq ($(MICROPY_PY_ULAB), 1)
|
||||
FIRM_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/extmod/ulab/,\
|
||||
code/fft.o \
|
||||
code/linalg.o \
|
||||
code/ndarray.o \
|
||||
code/numerical.o \
|
||||
code/poly.o \
|
||||
code/ulab.o \
|
||||
code/vectorise.o \
|
||||
code/create.o \
|
||||
code/approx.o \
|
||||
code/filter.o \
|
||||
code/compare.o \
|
||||
code/extras.o \
|
||||
)
|
||||
endif
|
||||
|
||||
ifeq ($(MICROPY_PY_LWIP), 1)
|
||||
FIRM_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/,\
|
||||
sdio.o \
|
||||
lib/lwip/src/core/*.o \
|
||||
lib/lwip/src/core/*/*.o \
|
||||
lib/lwip/src/netif/*.o \
|
||||
lib/lwip/src/apps/*/*.o \
|
||||
extmod/modlwip.o \
|
||||
extmod/moduwebsocket.o \
|
||||
extmod/modwebrepl.o \
|
||||
)
|
||||
endif
|
||||
|
||||
ifeq ($(MICROPY_PY_NETWORK_CYW43), 1)
|
||||
FIRM_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/,\
|
||||
drivers/cyw43/*.o \
|
||||
extmod/network_cyw43.o \
|
||||
)
|
||||
LIBS += $(MICROPY_DIR)/drivers/cyw43/libcyw43.a
|
||||
endif
|
||||
|
||||
#------------- CubeAI Objects -------------------#
|
||||
ifeq ($(CUBEAI), 1)
|
||||
include $(TOP_DIR)/stm32cubeai/cube.mk
|
||||
endif
|
||||
|
||||
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/,\
|
||||
$(STARTUP).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/,\
|
||||
$(STARTUP).o \
|
||||
$(SYSTEM).o \
|
||||
)
|
||||
|
||||
UVC_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/alloc/, \
|
||||
fb_alloc.o \
|
||||
)
|
||||
|
||||
UVC_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/common/, \
|
||||
array.o \
|
||||
trace.o \
|
||||
mutex.o \
|
||||
)
|
||||
|
||||
UVC_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/sensors/, \
|
||||
ov2640.o \
|
||||
ov5640.o \
|
||||
ov7690.o \
|
||||
ov7725.o \
|
||||
ov9650.o \
|
||||
mt9v034.o \
|
||||
lepton.o \
|
||||
hm01b0.o \
|
||||
)
|
||||
|
||||
UVC_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/imlib/,\
|
||||
lab_tab.o \
|
||||
xyz_tab.o \
|
||||
yuv_tab.o \
|
||||
rainbow_tab.o \
|
||||
jpeg.o \
|
||||
fmath.o \
|
||||
imlib.o \
|
||||
framebuffer.o \
|
||||
)
|
||||
|
||||
UVC_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/ports/stm32/,\
|
||||
sensor.o \
|
||||
stm32fxxx_hal_msp.o \
|
||||
soft_i2c.o \
|
||||
cambus.o \
|
||||
)
|
||||
|
||||
UVC_OBJ += $(wildcard $(BUILD)/$(LEPTON_DIR)/src/*.o)
|
||||
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
|
||||
export Q
|
||||
export CC
|
||||
export AS
|
||||
export LD
|
||||
export AR
|
||||
export SIZE
|
||||
export OBJCOPY
|
||||
export OBJDUMP
|
||||
export MKDIR
|
||||
export ECHO
|
||||
export CFLAGS
|
||||
export LDFLAGS
|
||||
export TOP_DIR
|
||||
export BUILD
|
||||
export TARGET
|
||||
export STARTUP
|
||||
export SYSTEM
|
||||
export FROZEN_MANIFEST
|
||||
export PORT
|
||||
###################################################
|
||||
all: $(OPENMV)
|
||||
|
||||
$(BUILD):
|
||||
$(MKDIR) -p $@
|
||||
|
||||
$(FW_DIR):
|
||||
$(MKDIR) -p $@
|
||||
|
||||
FIRMWARE_OBJS: | $(BUILD) $(FW_DIR)
|
||||
$(MAKE) -C $(CMSIS_DIR) BUILD=$(BUILD)/$(CMSIS_DIR) CFLAGS="$(CFLAGS) -fno-strict-aliasing -MMD"
|
||||
$(MAKE) -C $(MICROPY_DIR)/ports/$(PORT) BUILD=$(BUILD)/$(MICROPY_DIR) $(MICROPY_ARGS)
|
||||
$(MAKE) -C $(HAL_DIR) BUILD=$(BUILD)/$(HAL_DIR) CFLAGS="$(CFLAGS) -MMD"
|
||||
$(MAKE) -C $(LEPTON_DIR) BUILD=$(BUILD)/$(LEPTON_DIR) CFLAGS="$(CFLAGS) -MMD"
|
||||
$(MAKE) -C $(MLX_DIR) BUILD=$(BUILD)/$(MLX_DIR) CFLAGS="$(CFLAGS) -MMD"
|
||||
ifeq ($(MICROPY_PY_IMU), 1)
|
||||
$(MAKE) -C $(LSM6DS3_DIR) BUILD=$(BUILD)/$(LSM6DS3_DIR) CFLAGS="$(CFLAGS) -MMD"
|
||||
endif
|
||||
ifeq ($(MICROPY_PY_WINC1500), 1)
|
||||
$(MAKE) -C $(WINC1500_DIR) BUILD=$(BUILD)/$(WINC1500_DIR) CFLAGS="$(CFLAGS) -MMD"
|
||||
endif
|
||||
$(MAKE) -C $(OMV_DIR) BUILD=$(BUILD)/$(OMV_DIR) CFLAGS="$(CFLAGS) -MMD"
|
||||
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="$(BL_CFLAGS) -MMD"
|
||||
endif
|
||||
|
||||
# This target generates the main/app firmware image located at 0x08010000
|
||||
$(FIRMWARE): FIRMWARE_OBJS
|
||||
$(CPP) -P -E -I$(OMV_BOARD_CONFIG_DIR) $(OMV_DIR)/ports/$(PORT)/$(LDSCRIPT).ld.S > $(BUILD)/$(LDSCRIPT).lds
|
||||
$(CC) $(LDFLAGS) $(FIRM_OBJ) -o $(FW_DIR)/$(FIRMWARE).elf $(LIBS) -lgcc
|
||||
$(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
|
||||
|
||||
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) $(BL_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
|
||||
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 the uvc, bootloader and firmware images.
|
||||
$(OPENMV): $(BOOTLOADER) $(UVC) $(FIRMWARE)
|
||||
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
|
||||
# Include the port Makefile.
|
||||
include $(OMV_DIR)/ports/$(PORT)/omv_port.mk
|
||||
|
||||
clean:
|
||||
$(RM) -fr $(BUILD)
|
||||
|
||||
# Flash the bootloader
|
||||
flash_boot::
|
||||
$(PYDFU) -u $(FW_DIR)/$(BOOTLOADER).dfu
|
||||
|
||||
# Flash the main firmware image
|
||||
flash_image::
|
||||
$(PYDFU) -u $(FW_DIR)/$(FIRMWARE).dfu
|
||||
|
||||
# Flash the bootloader using dfu_util
|
||||
flash_boot_dfu_util::
|
||||
dfu-util -a 0 -d $(DFU_DEVICE) -D $(FW_DIR)/$(BOOTLOADER).dfu
|
||||
|
||||
# Flash the main firmware image using dfu_util
|
||||
flash_image_dfu_util::
|
||||
dfu-util -a 0 -d $(DFU_DEVICE) -D $(FW_DIR)/$(FIRMWARE).dfu
|
||||
|
||||
|
||||
629
src/omv/ports/stm32/omv_port.mk
Normal file
629
src/omv/ports/stm32/omv_port.mk
Normal file
@ -0,0 +1,629 @@
|
||||
# Set startup and system files based on MCU.
|
||||
SYSTEM ?= st/system_stm32fxxx
|
||||
STARTUP ?= st/startup_$(shell echo $(MCU) | tr '[:upper:]' '[:lower:]')
|
||||
LDSCRIPT ?= stm32fxxx
|
||||
|
||||
# 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
|
||||
CFLAGS += -D__FPU_PRESENT=1 -D__VFP_FP__ -DUSE_USB_FS -DUSE_DEVICE_MODE -DUSE_USB_OTG_ID=0 -DHSE_VALUE=$(OMV_HSE_VALUE)\
|
||||
-D$(TARGET) -DVECT_TAB_OFFSET=$(VECT_TAB_OFFSET) -DMAIN_APP_ADDR=$(MAIN_APP_ADDR) -DSTM32_HAL_H=$(HAL_INC)
|
||||
CFLAGS += $(OMV_BOARD_EXTRA_CFLAGS)
|
||||
|
||||
HAL_CFLAGS += -I$(TOP_DIR)/$(CMSIS_DIR)/include/
|
||||
HAL_CFLAGS += -I$(TOP_DIR)/$(CMSIS_DIR)/include/st
|
||||
HAL_CFLAGS += -I$(TOP_DIR)/$(HAL_DIR)/include/
|
||||
HAL_CFLAGS += -I$(TOP_DIR)/$(HAL_DIR)/include/Legacy/
|
||||
|
||||
MPY_CFLAGS += -I$(MP_BOARD_CONFIG_DIR)
|
||||
MPY_CFLAGS += -I$(BUILD)/$(MICROPY_DIR)/
|
||||
MPY_CFLAGS += -I$(TOP_DIR)/$(MICROPY_DIR)/
|
||||
MPY_CFLAGS += -I$(TOP_DIR)/$(MICROPY_DIR)/py/
|
||||
MPY_CFLAGS += -I$(TOP_DIR)/$(MICROPY_DIR)/lib/mp-readline
|
||||
MPY_CFLAGS += -I$(TOP_DIR)/$(MICROPY_DIR)/lib/oofatfs
|
||||
MPY_CFLAGS += -I$(TOP_DIR)/$(MICROPY_DIR)/lib/lwip/src/include/
|
||||
MPY_CFLAGS += -I$(TOP_DIR)/$(MICROPY_DIR)/ports/stm32/
|
||||
MPY_CFLAGS += -I$(TOP_DIR)/$(MICROPY_DIR)/ports/stm32/usbdev/core/inc/
|
||||
MPY_CFLAGS += -I$(TOP_DIR)/$(MICROPY_DIR)/ports/stm32/usbdev/class/inc/
|
||||
MPY_CFLAGS += -I$(TOP_DIR)/$(MICROPY_DIR)/ports/stm32/lwip_inc/
|
||||
|
||||
# In addition to CFLAGS, the following options are needed to set varilables
|
||||
# in MicroPython's Makefile, to enable or disable compiling additional modules.
|
||||
MICROPY_ARGS = BOARD=$(TARGET) DEBUG=$(DEBUG) QSTR_DEFS="$(OMV_QSTR_DEFS)" MPY_LIB_DIR=$(MPY_LIB_DIR)
|
||||
|
||||
ifeq ($(MICROPY_PY_WINC1500), 1)
|
||||
MPY_CFLAGS += -DMICROPY_PY_WINC1500=1
|
||||
MICROPY_ARGS += MICROPY_PY_WINC1500=1
|
||||
endif
|
||||
ifeq ($(MICROPY_PY_IMU), 1)
|
||||
MPY_CFLAGS += -DMICROPY_PY_IMU=1
|
||||
MICROPY_ARGS += MICROPY_PY_IMU=1
|
||||
endif
|
||||
ifeq ($(MICROPY_PY_ULAB), 1)
|
||||
MPY_CFLAGS += -DMICROPY_PY_ULAB=1
|
||||
MICROPY_ARGS += MICROPY_PY_ULAB=1
|
||||
endif
|
||||
ifeq ($(MICROPY_PY_LWIP), 1)
|
||||
MPY_CFLAGS += -DMICROPY_PY_LWIP=1
|
||||
MICROPY_ARGS += MICROPY_PY_LWIP=1
|
||||
endif
|
||||
ifeq ($(MICROPY_PY_NETWORK_CYW43), 1)
|
||||
MPY_CFLAGS += -DMICROPY_PY_NETWORK_CYW43=1
|
||||
MICROPY_ARGS += MICROPY_PY_NETWORK_CYW43=1
|
||||
endif
|
||||
ifeq ($(MICROPY_PY_AUDIO), 1)
|
||||
MPY_CFLAGS += -DMICROPY_PY_AUDIO=1
|
||||
MICROPY_ARGS += MICROPY_PY_AUDIO=1
|
||||
endif
|
||||
ifeq ($(MICROPY_PY_MICRO_SPEECH), 1)
|
||||
MPY_CFLAGS += -DMICROPY_PY_MICRO_SPEECH=1
|
||||
MICROPY_ARGS += MICROPY_PY_MICRO_SPEECH=1
|
||||
endif
|
||||
|
||||
OMV_CFLAGS += -I$(OMV_BOARD_CONFIG_DIR)
|
||||
OMV_CFLAGS += -I$(TOP_DIR)/$(OMV_DIR)/
|
||||
OMV_CFLAGS += -I$(TOP_DIR)/$(OMV_DIR)/alloc/
|
||||
OMV_CFLAGS += -I$(TOP_DIR)/$(OMV_DIR)/common/
|
||||
OMV_CFLAGS += -I$(TOP_DIR)/$(OMV_DIR)/imlib/
|
||||
OMV_CFLAGS += -I$(TOP_DIR)/$(OMV_DIR)/modules/
|
||||
OMV_CFLAGS += -I$(TOP_DIR)/$(OMV_DIR)/sensors/
|
||||
OMV_CFLAGS += -I$(TOP_DIR)/$(OMV_DIR)/ports/$(PORT)/
|
||||
OMV_CFLAGS += -I$(TOP_DIR)/$(OMV_DIR)/ports/$(PORT)/modules/
|
||||
|
||||
OMV_CFLAGS += -I$(TOP_DIR)/$(LEPTON_DIR)/include/
|
||||
OMV_CFLAGS += -I$(TOP_DIR)/$(MLX_DIR)/include/
|
||||
OMV_CFLAGS += -I$(TOP_DIR)/$(LSM6DS3_DIR)/include/
|
||||
OMV_CFLAGS += -I$(TOP_DIR)/$(TENSORFLOW_DIR)/$(CPU)/
|
||||
OMV_CFLAGS += -I$(TOP_DIR)/$(WINC1500_DIR)/include/
|
||||
OMV_CFLAGS += -I$(TOP_DIR)/$(LIBPDM_DIR)/
|
||||
|
||||
ifeq ($(OMV_ENABLE_BL), 1)
|
||||
BL_CFLAGS := $(CFLAGS) $(HAL_CFLAGS)
|
||||
BL_CFLAGS += -I$(OMV_BOARD_CONFIG_DIR)
|
||||
BL_CFLAGS += -I$(TOP_DIR)/$(BOOTLDR_DIR)/include/
|
||||
# Linker Flags
|
||||
BL_LDFLAGS = -mcpu=$(CPU) -mabi=aapcs-linux -mthumb -mfpu=$(FPU) -mfloat-abi=hard\
|
||||
-nostdlib -Wl,--gc-sections -Wl,-T$(BUILD)/$(BOOTLDR_DIR)/stm32fxxx.lds
|
||||
endif
|
||||
|
||||
ifeq ($(OMV_ENABLE_UVC), 1)
|
||||
UVC_CFLAGS := $(CFLAGS) $(HAL_CFLAGS)
|
||||
UVC_CFLAGS += -I$(OMV_BOARD_CONFIG_DIR)
|
||||
UVC_CFLAGS += -I$(TOP_DIR)/$(UVC_DIR)/include/
|
||||
UVC_CFLAGS += $(OMV_CFLAGS) $(MPY_CFLAGS)
|
||||
# Linker Flags
|
||||
UVC_LDFLAGS = -mcpu=$(CPU) -mabi=aapcs-linux -mthumb -mfpu=$(FPU) -mfloat-abi=hard\
|
||||
-nostdlib -Wl,--gc-sections -Wl,-T$(BUILD)/$(UVC_DIR)/stm32fxxx.lds
|
||||
endif
|
||||
|
||||
CFLAGS += $(HAL_CFLAGS) $(MPY_CFLAGS) $(OMV_CFLAGS)
|
||||
|
||||
# Linker Flags
|
||||
LDFLAGS = -mcpu=$(CPU) -mabi=aapcs-linux -mthumb -mfpu=$(FPU) -mfloat-abi=hard\
|
||||
-nostdlib -Wl,--gc-sections -Wl,-T$(BUILD)/$(LDSCRIPT).lds
|
||||
|
||||
#------------- Libraries ----------------#
|
||||
LIBS += $(TOP_DIR)/$(TENSORFLOW_DIR)/$(CPU)/libtf*.a
|
||||
ifeq ($(MICROPY_PY_AUDIO), 1)
|
||||
LIBS += $(TOP_DIR)/$(LIBPDM_DIR)/libPDMFilter_CM7_GCC_wc32.a
|
||||
endif
|
||||
|
||||
#------------- Firmware Objects ----------------#
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/dsp/CommonTables/*.o)
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/dsp/FastMathFunctions/*.o)
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/dsp/MatrixFunctions/*.o)
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/nn/ActivationFunctions/*.o)
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/nn/FullyConnectedFunctions/*.o)
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/nn/NNSupportFunctions/*.o)
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/nn/PoolingFunctions/*.o)
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/nn/SoftmaxFunctions/*.o)
|
||||
ifeq ($(CUBEAI),)
|
||||
# Conflicts with NetworkRuntime library.
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/nn/ConvolutionFunctions/*.o)
|
||||
endif
|
||||
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(HAL_DIR)/src/*.o)
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(LEPTON_DIR)/src/*.o)
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(MLX_DIR)/src/*.o)
|
||||
ifeq ($(MICROPY_PY_IMU), 1)
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(LSM6DS3_DIR)/src/*.o)
|
||||
endif
|
||||
ifeq ($(MICROPY_PY_WINC1500), 1)
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(WINC1500_DIR)/src/*.o)
|
||||
endif
|
||||
|
||||
#------------- OpenMV Objects ----------------#
|
||||
FIRM_OBJ += $(addprefix $(BUILD)/$(CMSIS_DIR)/src/, \
|
||||
$(STARTUP).o \
|
||||
$(SYSTEM).o \
|
||||
)
|
||||
|
||||
FIRM_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/alloc/, \
|
||||
xalloc.o \
|
||||
fb_alloc.o \
|
||||
umm_malloc.o \
|
||||
)
|
||||
|
||||
FIRM_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/common/, \
|
||||
array.o \
|
||||
ff_wrapper.o \
|
||||
ini.o \
|
||||
ringbuf.o \
|
||||
trace.o \
|
||||
mutex.o \
|
||||
)
|
||||
|
||||
FIRM_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/sensors/, \
|
||||
ov2640.o \
|
||||
ov5640.o \
|
||||
ov7690.o \
|
||||
ov7725.o \
|
||||
ov9650.o \
|
||||
mt9v034.o \
|
||||
lepton.o \
|
||||
hm01b0.o \
|
||||
)
|
||||
|
||||
FIRM_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/modules/, \
|
||||
py_clock.o \
|
||||
py_gif.o \
|
||||
py_helper.o \
|
||||
py_image.o \
|
||||
py_mjpeg.o \
|
||||
py_omv.o \
|
||||
py_sensor.o \
|
||||
py_tf.o \
|
||||
)
|
||||
|
||||
FIRM_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/imlib/, \
|
||||
agast.o \
|
||||
apriltag.o \
|
||||
binary.o \
|
||||
blob.o \
|
||||
bmp.o \
|
||||
clahe.o \
|
||||
collections.o \
|
||||
dmtx.o \
|
||||
draw.o \
|
||||
edge.o \
|
||||
eye.o \
|
||||
fast.o \
|
||||
fft.o \
|
||||
filter.o \
|
||||
fmath.o \
|
||||
font.o \
|
||||
framebuffer.o \
|
||||
fsort.o \
|
||||
gif.o \
|
||||
haar.o \
|
||||
hog.o \
|
||||
hough.o \
|
||||
imlib.o \
|
||||
integral.o \
|
||||
integral_mw.o \
|
||||
jpeg.o \
|
||||
kmeans.o \
|
||||
lab_tab.o \
|
||||
lbp.o \
|
||||
line.o \
|
||||
lsd.o \
|
||||
mathop.o \
|
||||
mjpeg.o \
|
||||
orb.o \
|
||||
phasecorrelation.o \
|
||||
point.o \
|
||||
pool.o \
|
||||
ppm.o \
|
||||
qrcode.o \
|
||||
qsort.o \
|
||||
rainbow_tab.o \
|
||||
rectangle.o \
|
||||
selective_search.o \
|
||||
sincos_tab.o \
|
||||
stats.o \
|
||||
template.o \
|
||||
xyz_tab.o \
|
||||
yuv_tab.o \
|
||||
zbar.o \
|
||||
)
|
||||
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(OMV_DIR)/ports/$(PORT)/*.o)
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(OMV_DIR)/ports/$(PORT)/modules/*.o)
|
||||
|
||||
#------------- MicroPy Objects -------------------#
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(MICROPY_DIR)/py/*.o)
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(MICROPY_DIR)/boards/$(TARGET)/*.o)
|
||||
|
||||
FIRM_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/,\
|
||||
stm32_it.o \
|
||||
usbd_conf.o \
|
||||
usbd_desc.o \
|
||||
usbd_cdc_interface.o \
|
||||
usbd_hid_interface.o \
|
||||
usbd_msc_interface.o \
|
||||
pendsv.o \
|
||||
bufhelper.o \
|
||||
usb.o \
|
||||
eth.o \
|
||||
gccollect.o \
|
||||
help.o \
|
||||
flash.o \
|
||||
flashbdev.o \
|
||||
spibdev.o \
|
||||
storage.o \
|
||||
rtc.o \
|
||||
irq.o \
|
||||
adc.o \
|
||||
dac.o \
|
||||
dma.o \
|
||||
uart.o \
|
||||
systick.o \
|
||||
powerctrl.o \
|
||||
i2c.o \
|
||||
pyb_i2c.o \
|
||||
spi.o \
|
||||
qspi.o \
|
||||
pyb_spi.o \
|
||||
can.o \
|
||||
fdcan.o \
|
||||
pyb_can.o \
|
||||
pin.o \
|
||||
pin_defs_stm32.o \
|
||||
pin_named_pins.o \
|
||||
pins_$(TARGET).o \
|
||||
timer.o \
|
||||
servo.o \
|
||||
rng.o \
|
||||
led.o \
|
||||
wdt.o \
|
||||
mphalport.o \
|
||||
sdcard.o \
|
||||
sdram.o \
|
||||
fatfs_port.o \
|
||||
extint.o \
|
||||
modpyb.o \
|
||||
modstm.o \
|
||||
moduos.o \
|
||||
modutime.o \
|
||||
modusocket.o \
|
||||
network_lan.o \
|
||||
modnetwork.o \
|
||||
modmachine.o \
|
||||
machine_i2c.o \
|
||||
machine_spi.o \
|
||||
machine_uart.o \
|
||||
machine_adc.o \
|
||||
machine_timer.o \
|
||||
pybthread.o \
|
||||
mpthreadport.o \
|
||||
posix_helpers.o \
|
||||
softtimer.o \
|
||||
mbedtls/mbedtls_port.o \
|
||||
frozen_content.o \
|
||||
)
|
||||
|
||||
#------------- MicroPy Objects ----------------#
|
||||
FIRM_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/lib/,\
|
||||
utils/mpirq.o \
|
||||
utils/pyexec.o \
|
||||
utils/printf.o \
|
||||
utils/interrupt_char.o \
|
||||
utils/sys_stdio_mphal.o \
|
||||
utils/gchelper_m3.o \
|
||||
utils/gchelper_native.o \
|
||||
libc/string0.o \
|
||||
netutils/*.o \
|
||||
timeutils/timeutils.o \
|
||||
berkeley-db-1.xx/btree/*.o \
|
||||
berkeley-db-1.xx/mpool/*.o \
|
||||
embed/abort_.o \
|
||||
mp-readline/readline.o \
|
||||
)
|
||||
|
||||
FIRM_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/lib/libm/,\
|
||||
math.o \
|
||||
roundf.o \
|
||||
asinfacosf.o \
|
||||
atanf.o \
|
||||
atan2f.o \
|
||||
fmodf.o \
|
||||
log1pf.o \
|
||||
acoshf.o \
|
||||
asinhf.o \
|
||||
atanhf.o \
|
||||
kf_rem_pio2.o \
|
||||
kf_sin.o \
|
||||
kf_cos.o \
|
||||
kf_tan.o \
|
||||
ef_rem_pio2.o \
|
||||
erf_lgamma.o \
|
||||
sf_sin.o \
|
||||
sf_cos.o \
|
||||
sf_tan.o \
|
||||
sf_frexp.o \
|
||||
sf_modf.o \
|
||||
sf_ldexp.o \
|
||||
sf_erf.o \
|
||||
wf_lgamma.o \
|
||||
wf_tgamma.o \
|
||||
nearbyintf.o \
|
||||
thumb_vfp_sqrtf.o \
|
||||
)
|
||||
|
||||
#------------- mbedtls -------------------#
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(MICROPY_DIR)/lib/mbedtls/library/*.o)
|
||||
FIRM_OBJ += $(wildcard $(BUILD)/$(MICROPY_DIR)/lib/mbedtls_errors/*.o)
|
||||
|
||||
FIRM_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/usbdev/, \
|
||||
core/src/usbd_core.o \
|
||||
core/src/usbd_ctlreq.o \
|
||||
core/src/usbd_ioreq.o \
|
||||
class/src/usbd_cdc_msc_hid.o \
|
||||
class/src/usbd_msc_bot.o \
|
||||
class/src/usbd_msc_scsi.o \
|
||||
)
|
||||
|
||||
FIRM_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/extmod/,\
|
||||
modujson.o \
|
||||
modure.o \
|
||||
moduzlib.o \
|
||||
moduhashlib.o \
|
||||
modubinascii.o \
|
||||
modurandom.o \
|
||||
moduselect.o \
|
||||
modutimeq.o \
|
||||
moduheapq.o \
|
||||
moductypes.o \
|
||||
vfs.o \
|
||||
vfs_fat.o \
|
||||
vfs_fat_file.o \
|
||||
vfs_reader.o \
|
||||
vfs_fat_diskio.o \
|
||||
vfs_blockdev.o \
|
||||
virtpin.o \
|
||||
machine_mem.o \
|
||||
machine_i2c.o \
|
||||
machine_spi.o \
|
||||
machine_pulse.o \
|
||||
machine_signal.o \
|
||||
machine_pinbase.o \
|
||||
utime_mphal.o \
|
||||
modonewire.o \
|
||||
uos_dupterm.o \
|
||||
modframebuf.o \
|
||||
modbtree.o \
|
||||
moducryptolib.o \
|
||||
modussl_mbedtls.o \
|
||||
moduasyncio.o \
|
||||
)
|
||||
|
||||
FIRM_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/lib/oofatfs/,\
|
||||
ff.o \
|
||||
ffunicode.o \
|
||||
)
|
||||
|
||||
FIRM_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/drivers/,\
|
||||
bus/softspi.o \
|
||||
dht/dht.o \
|
||||
memory/spiflash.o \
|
||||
)
|
||||
|
||||
ifeq ($(MICROPY_PY_ULAB), 1)
|
||||
FIRM_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/extmod/ulab/,\
|
||||
code/fft.o \
|
||||
code/linalg.o \
|
||||
code/ndarray.o \
|
||||
code/numerical.o \
|
||||
code/poly.o \
|
||||
code/ulab.o \
|
||||
code/vectorise.o \
|
||||
code/create.o \
|
||||
code/approx.o \
|
||||
code/filter.o \
|
||||
code/compare.o \
|
||||
code/extras.o \
|
||||
)
|
||||
endif
|
||||
|
||||
ifeq ($(MICROPY_PY_LWIP), 1)
|
||||
FIRM_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/,\
|
||||
sdio.o \
|
||||
lib/lwip/src/core/*.o \
|
||||
lib/lwip/src/core/*/*.o \
|
||||
lib/lwip/src/netif/*.o \
|
||||
lib/lwip/src/apps/*/*.o \
|
||||
extmod/modlwip.o \
|
||||
extmod/moduwebsocket.o \
|
||||
extmod/modwebrepl.o \
|
||||
)
|
||||
endif
|
||||
|
||||
ifeq ($(MICROPY_PY_NETWORK_CYW43), 1)
|
||||
FIRM_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/,\
|
||||
drivers/cyw43/*.o \
|
||||
extmod/network_cyw43.o \
|
||||
)
|
||||
LIBS += $(MICROPY_DIR)/drivers/cyw43/libcyw43.a
|
||||
endif
|
||||
|
||||
#------------- CubeAI Objects -------------------#
|
||||
ifeq ($(CUBEAI), 1)
|
||||
include $(TOP_DIR)/stm32cubeai/cube.mk
|
||||
endif
|
||||
|
||||
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/,\
|
||||
$(STARTUP).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/,\
|
||||
$(STARTUP).o \
|
||||
$(SYSTEM).o \
|
||||
)
|
||||
|
||||
UVC_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/alloc/, \
|
||||
fb_alloc.o \
|
||||
)
|
||||
|
||||
UVC_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/common/, \
|
||||
array.o \
|
||||
trace.o \
|
||||
mutex.o \
|
||||
)
|
||||
|
||||
UVC_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/sensors/, \
|
||||
ov2640.o \
|
||||
ov5640.o \
|
||||
ov7690.o \
|
||||
ov7725.o \
|
||||
ov9650.o \
|
||||
mt9v034.o \
|
||||
lepton.o \
|
||||
hm01b0.o \
|
||||
)
|
||||
|
||||
UVC_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/imlib/,\
|
||||
lab_tab.o \
|
||||
xyz_tab.o \
|
||||
yuv_tab.o \
|
||||
rainbow_tab.o \
|
||||
jpeg.o \
|
||||
fmath.o \
|
||||
imlib.o \
|
||||
framebuffer.o \
|
||||
)
|
||||
|
||||
UVC_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/ports/stm32/,\
|
||||
sensor.o \
|
||||
stm32fxxx_hal_msp.o \
|
||||
soft_i2c.o \
|
||||
cambus.o \
|
||||
)
|
||||
|
||||
UVC_OBJ += $(wildcard $(BUILD)/$(LEPTON_DIR)/src/*.o)
|
||||
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
|
||||
export Q
|
||||
export CC
|
||||
export AS
|
||||
export LD
|
||||
export AR
|
||||
export SIZE
|
||||
export OBJCOPY
|
||||
export OBJDUMP
|
||||
export MKDIR
|
||||
export ECHO
|
||||
export CFLAGS
|
||||
export LDFLAGS
|
||||
export TOP_DIR
|
||||
export BUILD
|
||||
export TARGET
|
||||
export STARTUP
|
||||
export SYSTEM
|
||||
export FROZEN_MANIFEST
|
||||
export PORT
|
||||
###################################################
|
||||
all: $(OPENMV)
|
||||
|
||||
$(BUILD):
|
||||
$(MKDIR) -p $@
|
||||
|
||||
$(FW_DIR):
|
||||
$(MKDIR) -p $@
|
||||
|
||||
FIRMWARE_OBJS: | $(BUILD) $(FW_DIR)
|
||||
$(MAKE) -C $(CMSIS_DIR) BUILD=$(BUILD)/$(CMSIS_DIR) CFLAGS="$(CFLAGS) -fno-strict-aliasing -MMD"
|
||||
$(MAKE) -C $(MICROPY_DIR)/ports/$(PORT) BUILD=$(BUILD)/$(MICROPY_DIR) $(MICROPY_ARGS)
|
||||
$(MAKE) -C $(HAL_DIR) BUILD=$(BUILD)/$(HAL_DIR) CFLAGS="$(CFLAGS) -MMD"
|
||||
$(MAKE) -C $(LEPTON_DIR) BUILD=$(BUILD)/$(LEPTON_DIR) CFLAGS="$(CFLAGS) -MMD"
|
||||
$(MAKE) -C $(MLX_DIR) BUILD=$(BUILD)/$(MLX_DIR) CFLAGS="$(CFLAGS) -MMD"
|
||||
ifeq ($(MICROPY_PY_IMU), 1)
|
||||
$(MAKE) -C $(LSM6DS3_DIR) BUILD=$(BUILD)/$(LSM6DS3_DIR) CFLAGS="$(CFLAGS) -MMD"
|
||||
endif
|
||||
ifeq ($(MICROPY_PY_WINC1500), 1)
|
||||
$(MAKE) -C $(WINC1500_DIR) BUILD=$(BUILD)/$(WINC1500_DIR) CFLAGS="$(CFLAGS) -MMD"
|
||||
endif
|
||||
$(MAKE) -C $(OMV_DIR) BUILD=$(BUILD)/$(OMV_DIR) CFLAGS="$(CFLAGS) -MMD"
|
||||
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="$(BL_CFLAGS) -MMD"
|
||||
endif
|
||||
|
||||
# This target generates the main/app firmware image located at 0x08010000
|
||||
$(FIRMWARE): FIRMWARE_OBJS
|
||||
$(CPP) -P -E -I$(OMV_BOARD_CONFIG_DIR) $(OMV_DIR)/ports/$(PORT)/$(LDSCRIPT).ld.S > $(BUILD)/$(LDSCRIPT).lds
|
||||
$(CC) $(LDFLAGS) $(FIRM_OBJ) -o $(FW_DIR)/$(FIRMWARE).elf $(LIBS) -lgcc
|
||||
$(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
|
||||
|
||||
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) $(BL_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
|
||||
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 the uvc, bootloader and firmware images.
|
||||
$(OPENMV): $(BOOTLOADER) $(UVC) $(FIRMWARE)
|
||||
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
|
||||
|
||||
# Flash the bootloader
|
||||
flash_boot::
|
||||
$(PYDFU) -u $(FW_DIR)/$(BOOTLOADER).dfu
|
||||
|
||||
# Flash the main firmware image
|
||||
flash_image::
|
||||
$(PYDFU) -u $(FW_DIR)/$(FIRMWARE).dfu
|
||||
|
||||
# Flash the bootloader using dfu_util
|
||||
flash_boot_dfu_util::
|
||||
dfu-util -a 0 -d $(DFU_DEVICE) -D $(FW_DIR)/$(BOOTLOADER).dfu
|
||||
|
||||
# Flash the main firmware image using dfu_util
|
||||
flash_image_dfu_util::
|
||||
dfu-util -a 0 -d $(DFU_DEVICE) -D $(FW_DIR)/$(FIRMWARE).dfu
|
||||
@ -1,191 +0,0 @@
|
||||
# Set startup and system files based on MCU.
|
||||
SYSTEM ?= st/system_stm32fxxx
|
||||
STARTUP ?= st/startup_$(shell echo $(MCU) | tr '[:upper:]' '[:lower:]')
|
||||
LDSCRIPT ?= stm32fxxx
|
||||
|
||||
OMV_PORT_CFLAGS += -DSTM32_HAL_H=$(HAL_INC)
|
||||
OMV_PORT_HAL_CFLAGS += -I$(TOP_DIR)/$(CMSIS_DIR)/include/st
|
||||
OMV_PORT_HAL_CFLAGS += -I$(TOP_DIR)/$(HAL_DIR)/include/Legacy/
|
||||
|
||||
OMV_PORT_MPY_CFLAGS += -I$(TOP_DIR)/$(MICROPY_DIR)/lib/oofatfs
|
||||
OMV_PORT_MPY_CFLAGS += -I$(TOP_DIR)/$(MICROPY_DIR)/lib/lwip/src/include/
|
||||
OMV_PORT_MPY_CFLAGS += -I$(TOP_DIR)/$(MICROPY_DIR)/ports/stm32/
|
||||
OMV_PORT_MPY_CFLAGS += -I$(TOP_DIR)/$(MICROPY_DIR)/ports/stm32/usbdev/core/inc/
|
||||
OMV_PORT_MPY_CFLAGS += -I$(TOP_DIR)/$(MICROPY_DIR)/ports/stm32/usbdev/class/inc/
|
||||
OMV_PORT_MPY_CFLAGS += -I$(TOP_DIR)/$(MICROPY_DIR)/ports/stm32/lwip_inc/
|
||||
|
||||
#------------- MicroPy Objects ----------------#
|
||||
OMV_PORT_MPY_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/,\
|
||||
stm32_it.o \
|
||||
usbd_conf.o \
|
||||
usbd_desc.o \
|
||||
usbd_cdc_interface.o \
|
||||
usbd_hid_interface.o \
|
||||
usbd_msc_interface.o \
|
||||
pendsv.o \
|
||||
bufhelper.o \
|
||||
usb.o \
|
||||
eth.o \
|
||||
gccollect.o \
|
||||
help.o \
|
||||
flash.o \
|
||||
flashbdev.o \
|
||||
spibdev.o \
|
||||
storage.o \
|
||||
rtc.o \
|
||||
irq.o \
|
||||
adc.o \
|
||||
dac.o \
|
||||
dma.o \
|
||||
uart.o \
|
||||
systick.o \
|
||||
powerctrl.o \
|
||||
i2c.o \
|
||||
pyb_i2c.o \
|
||||
spi.o \
|
||||
qspi.o \
|
||||
pyb_spi.o \
|
||||
can.o \
|
||||
fdcan.o \
|
||||
pyb_can.o \
|
||||
pin.o \
|
||||
pin_defs_stm32.o \
|
||||
pin_named_pins.o \
|
||||
pins_$(TARGET).o \
|
||||
timer.o \
|
||||
servo.o \
|
||||
rng.o \
|
||||
led.o \
|
||||
wdt.o \
|
||||
mphalport.o \
|
||||
sdcard.o \
|
||||
sdram.o \
|
||||
fatfs_port.o \
|
||||
extint.o \
|
||||
modpyb.o \
|
||||
modstm.o \
|
||||
moduos.o \
|
||||
modutime.o \
|
||||
modusocket.o \
|
||||
network_lan.o \
|
||||
modnetwork.o \
|
||||
modmachine.o \
|
||||
machine_i2c.o \
|
||||
machine_spi.o \
|
||||
machine_uart.o \
|
||||
machine_adc.o \
|
||||
machine_timer.o \
|
||||
pybthread.o \
|
||||
mpthreadport.o \
|
||||
posix_helpers.o \
|
||||
softtimer.o \
|
||||
mbedtls/mbedtls_port.o \
|
||||
frozen_content.o \
|
||||
)
|
||||
|
||||
#------------- MicroPy Objects ----------------#
|
||||
OMV_PORT_MPY_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/lib/,\
|
||||
utils/mpirq.o \
|
||||
utils/pyexec.o \
|
||||
utils/printf.o \
|
||||
utils/interrupt_char.o \
|
||||
utils/sys_stdio_mphal.o \
|
||||
utils/gchelper_m3.o \
|
||||
utils/gchelper_native.o \
|
||||
libc/string0.o \
|
||||
netutils/*.o \
|
||||
timeutils/timeutils.o \
|
||||
berkeley-db-1.xx/btree/*.o \
|
||||
berkeley-db-1.xx/mpool/*.o \
|
||||
embed/abort_.o \
|
||||
mp-readline/readline.o \
|
||||
)
|
||||
|
||||
OMV_PORT_MPY_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/lib/libm/,\
|
||||
math.o \
|
||||
roundf.o \
|
||||
asinfacosf.o \
|
||||
atanf.o \
|
||||
atan2f.o \
|
||||
fmodf.o \
|
||||
log1pf.o \
|
||||
acoshf.o \
|
||||
asinhf.o \
|
||||
atanhf.o \
|
||||
kf_rem_pio2.o \
|
||||
kf_sin.o \
|
||||
kf_cos.o \
|
||||
kf_tan.o \
|
||||
ef_rem_pio2.o \
|
||||
erf_lgamma.o \
|
||||
sf_sin.o \
|
||||
sf_cos.o \
|
||||
sf_tan.o \
|
||||
sf_frexp.o \
|
||||
sf_modf.o \
|
||||
sf_ldexp.o \
|
||||
sf_erf.o \
|
||||
wf_lgamma.o \
|
||||
wf_tgamma.o \
|
||||
nearbyintf.o \
|
||||
thumb_vfp_sqrtf.o \
|
||||
)
|
||||
|
||||
#------------- mbedtls -------------------#
|
||||
OMV_PORT_MPY_OBJ += $(wildcard $(BUILD)/$(MICROPY_DIR)/lib/mbedtls/library/*.o)
|
||||
OMV_PORT_MPY_OBJ += $(wildcard $(BUILD)/$(MICROPY_DIR)/lib/mbedtls_errors/*.o)
|
||||
|
||||
OMV_PORT_MPY_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/usbdev/, \
|
||||
core/src/usbd_core.o \
|
||||
core/src/usbd_ctlreq.o \
|
||||
core/src/usbd_ioreq.o \
|
||||
class/src/usbd_cdc_msc_hid.o \
|
||||
class/src/usbd_msc_bot.o \
|
||||
class/src/usbd_msc_scsi.o \
|
||||
)
|
||||
|
||||
OMV_PORT_MPY_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/extmod/,\
|
||||
modujson.o \
|
||||
modure.o \
|
||||
moduzlib.o \
|
||||
moduhashlib.o \
|
||||
modubinascii.o \
|
||||
modurandom.o \
|
||||
moduselect.o \
|
||||
modutimeq.o \
|
||||
moduheapq.o \
|
||||
moductypes.o \
|
||||
vfs.o \
|
||||
vfs_fat.o \
|
||||
vfs_fat_file.o \
|
||||
vfs_reader.o \
|
||||
vfs_fat_diskio.o \
|
||||
vfs_blockdev.o \
|
||||
virtpin.o \
|
||||
machine_mem.o \
|
||||
machine_i2c.o \
|
||||
machine_spi.o \
|
||||
machine_pulse.o \
|
||||
machine_signal.o \
|
||||
machine_pinbase.o \
|
||||
utime_mphal.o \
|
||||
modonewire.o \
|
||||
uos_dupterm.o \
|
||||
modframebuf.o \
|
||||
modbtree.o \
|
||||
moducryptolib.o \
|
||||
modussl_mbedtls.o \
|
||||
moduasyncio.o \
|
||||
)
|
||||
|
||||
OMV_PORT_MPY_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/lib/oofatfs/,\
|
||||
ff.o \
|
||||
ffunicode.o \
|
||||
)
|
||||
|
||||
OMV_PORT_MPY_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/drivers/,\
|
||||
bus/softspi.o \
|
||||
dht/dht.o \
|
||||
memory/spiflash.o \
|
||||
)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user