diff --git a/src/Makefile b/src/Makefile index d4df178f8..3f051f859 100755 --- a/src/Makefile +++ b/src/Makefile @@ -53,6 +53,7 @@ MLX_DIR=mlx WINC1500_DIR=winc1500 BOOTLDR_DIR=bootloader UVC_DIR=uvc +CUBEAI_DIR=stm32cubeai OMV_BOARD_CONFIG_DIR=$(TOP_DIR)/$(OMV_DIR)/boards/$(TARGET)/ MP_BOARD_CONFIG_DIR=$(TOP_DIR)/$(MICROPY_DIR)/ports/stm32/boards/$(TARGET)/ @@ -143,22 +144,20 @@ UVC_LDFLAGS = -mcpu=$(CPU) -mabi=aapcs-linux -mthumb -mfpu=$(FPU) -mfloat-abi=ha -nostdlib -Wl,--gc-sections -Wl,-T$(BUILD)/$(UVC_DIR)/stm32fxxx.lds #------------- Libraries ----------------# +LIBS = -lgcc 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/ConvolutionFunctions/*.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)/$(CMSIS_DIR)/src/dsp/ComplexMathFunctions/*.o) -#FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/dsp/ControllerFunctions/*.o) -#FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/dsp/FilteringFunctions/*.o) -#FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/dsp/StatisticsFunctions/*.o) -#FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/dsp/SupportFunctions/*.o) -#FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/dsp/TransformFunctions/*.o) FIRM_OBJ += $(wildcard $(BUILD)/$(STHAL_DIR)/src/*.o) FIRM_OBJ += $(wildcard $(BUILD)/$(LEPTON_DIR)/src/*.o) FIRM_OBJ += $(wildcard $(BUILD)/$(MLX_DIR)/src/*.o) @@ -440,6 +439,10 @@ FIRM_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/drivers/,\ memory/spiflash.o \ ) +ifeq ($(CUBEAI), 1) +include $(TOP_DIR)/stm32cubeai/cube.mk +endif + # Bootloader object files BOOT_OBJ += $(wildcard $(BUILD)/$(BOOTLDR_DIR)/src/*.o) BOOT_OBJ += $(wildcard $(BUILD)/$(STHAL_DIR)/src/*.o) @@ -489,13 +492,6 @@ UVC_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/img/,\ UVC_OBJ += $(wildcard $(BUILD)/$(LEPTON_DIR)/src/*.o) UVC_OBJ += $(wildcard $(BUILD)/$(MLX_DIR)/src/*.o) -ifeq ($(CUBEAI), 1) -CFLAGS += -DCUBEAI -include $(TOP_DIR)/stm32cubeai/cube.mk -else -FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/nn/ConvolutionFunctions/*.o) -endif - ################################################### #Export Variables export Q @@ -538,13 +534,13 @@ FIRMWARE_OBJS: $(MAKE) -C $(WINC1500_DIR) BUILD=$(BUILD)/$(WINC1500_DIR) CFLAGS="$(CFLAGS) -MMD" $(MAKE) -C $(OMV_DIR) BUILD=$(BUILD)/$(OMV_DIR) CFLAGS="$(CFLAGS) -MMD" ifeq ($(CUBEAI), 1) - $(MAKE) -C $(TOP_DIR)/stm32cubeai BUILD=$(BUILD)/stm32cubeai CFLAGS="$(CFLAGS) -fno-strict-aliasing -MMD" + $(MAKE) -C $(CUBEAI_DIR) BUILD=$(BUILD)/$(CUBEAI_DIR) CFLAGS="$(CFLAGS) -fno-strict-aliasing -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)/stm32fxxx.ld.S > $(BUILD)/stm32fxxx.lds - $(CC) $(LDFLAGS) $(FIRM_OBJ) -o $(FW_DIR)/$(FIRMWARE).elf -lgcc + $(CC) $(LDFLAGS) $(FIRM_OBJ) -o $(FW_DIR)/$(FIRMWARE).elf $(LIBS) $(OBJCOPY) -Obinary $(FW_DIR)/$(FIRMWARE).elf $(FW_DIR)/$(FIRMWARE).bin $(PYTHON) $(MKDFU) -b $(MAIN_APP_ADDR):$(FW_DIR)/$(FIRMWARE).bin $(FW_DIR)/$(FIRMWARE).dfu diff --git a/src/stm32cubeai/cube.mk b/src/stm32cubeai/cube.mk index 15fd418f4..905d521fa 100755 --- a/src/stm32cubeai/cube.mk +++ b/src/stm32cubeai/cube.mk @@ -4,6 +4,9 @@ # # This work is licensed under the MIT license, see the file LICENSE for details. +# Enable CUBE-AI builtin module +CFLAGS += -DCUBEAI + # Append to OMV_QSTR_DEFS OMV_QSTR_DEFS += $(TOP_DIR)/stm32cubeai/qstrdefscubeai.h @@ -21,4 +24,4 @@ FIRM_OBJ += $(addprefix $(BUILD)/stm32cubeai/,\ py_st_nn.o \ ) -FIRM_OBJ += -l:NetworkRuntime410_CM7_GCC.a -Lstm32cubeai/AI/Lib -lc -lm +LIBS += -l:NetworkRuntime410_CM7_GCC.a -Lstm32cubeai/AI/Lib -lc -lm