diff --git a/src/Makefile b/src/Makefile index 3ce08f120..ecdc6abdd 100755 --- a/src/Makefile +++ b/src/Makefile @@ -103,7 +103,7 @@ OMV_SRC_QSTR := $(wildcard $(TOP_DIR)/$(OMV_DIR)/modules/*.c) OMV_SRC_QSTR += $(wildcard $(TOP_DIR)/$(OMV_DIR)/ports/$(PORT)/modules/*.c) # The following command line args are passed to MicroPython's top Makefile. -MICROPY_ARGS = PORT=$(PORT) BOARD=$(TARGET) DEBUG=$(DEBUG) OMV_SRC_QSTR="$(OMV_SRC_QSTR)" MPY_LIB_DIR=$(MPY_LIB_DIR) MICROPY_ROM_TEXT_COMPRESSION=$(ROM_TEXT_COMPRESSION) +MICROPY_ARGS = PORT=$(PORT) BOARD=$(TARGET) DEBUG=$(DEBUG) MPY_LIB_DIR=$(MPY_LIB_DIR) MICROPY_ROM_TEXT_COMPRESSION=$(ROM_TEXT_COMPRESSION) USER_C_MODULES=$(TOP_DIR)/$(OMV_DIR) #OMV_SRC_QSTR="$(OMV_SRC_QSTR)" # Configure additional built-in modules. Note must define both the CFLAGS and the Make command line args. ifeq ($(MICROPY_PY_SENSOR), 1) @@ -173,6 +173,11 @@ MPY_CFLAGS += -DMICROPY_PY_BUZZER=1 MICROPY_ARGS += MICROPY_PY_BUZZER=1 endif +ifeq ($(CUBEAI), 1) +MPY_CFLAGS += -DMICROPY_PY_CUBEAI=1 +MICROPY_ARGS += MICROPY_PY_CUBEAI=1 +endif + # Include the port Makefile. include $(OMV_DIR)/ports/$(PORT)/omv_portconfig.mk diff --git a/src/micropython b/src/micropython index 97e320cdb..f012171f3 160000 --- a/src/micropython +++ b/src/micropython @@ -1 +1 @@ -Subproject commit 97e320cdb9d7a209821a039491a9df5ad060e121 +Subproject commit f012171f306999509668e8b40cad7cfb50de5652 diff --git a/src/omv/Makefile b/src/omv/Makefile index 2d43e9450..542bc9a48 100644 --- a/src/omv/Makefile +++ b/src/omv/Makefile @@ -41,19 +41,6 @@ SRCS += $(addprefix sensors/, \ paj6100.c \ ) -SRCS += $(addprefix modules/, \ - py_clock.c \ - py_gif.c \ - py_helper.c \ - py_image.c \ - py_imageio.c \ - py_mjpeg.c \ - py_omv.c \ - py_sensor.c \ - py_tf.c \ - py_fir.c \ - ) - SRCS += $(addprefix imlib/, \ agast.c \ apriltag.c \ @@ -108,7 +95,6 @@ SRCS += $(addprefix imlib/, \ ) SRCS += $(wildcard ports/$(PORT)/*.c) -SRCS += $(wildcard ports/$(PORT)/modules/*.c) OBJS = $(addprefix $(BUILD)/, $(SRCS:.c=.o)) OBJ_DIRS = $(sort $(dir $(OBJS))) diff --git a/src/omv/modules/micropython.mk b/src/omv/modules/micropython.mk new file mode 100644 index 000000000..2c7c8df1a --- /dev/null +++ b/src/omv/modules/micropython.mk @@ -0,0 +1,23 @@ +OMV_MOD_DIR := $(USERMOD_DIR) +OMV_PORT_MOD_DIR := $(OMV_MOD_DIR)/../ports/$(PORT)/modules + +# Add OpenMV common modules. +SRC_USERMOD += $(wildcard $(OMV_MOD_DIR)/*.c) + +# Add OpenMV port-specific modules. +SRC_USERMOD += $(wildcard $(OMV_PORT_MOD_DIR)/*.c) + +# Extra module flags. +CFLAGS_USERMOD += -I$(OMV_MOD_DIR) -I$(OMV_PORT_MOD_DIR) -Wno-float-conversion + +# Add CubeAI module if enabled. +ifeq ($(MICROPY_PY_CUBEAI), 1) +SRC_USERMOD += $(OMV_MOD_DIR)/../../stm32cubeai/py_st_nn.c +endif + +ifeq ($(MICROPY_PY_ULAB), 1) +# NOTE: overrides USERMOD_DIR +# Workaround to build and link ulab. +USERMOD_DIR := $(USERMOD_DIR)/ulab/code +include $(USERMOD_DIR)/micropython.mk +endif diff --git a/src/omv/ports/nrf/omv_portconfig.mk b/src/omv/ports/nrf/omv_portconfig.mk index 545593c16..1846e9ea5 100644 --- a/src/omv/ports/nrf/omv_portconfig.mk +++ b/src/omv/ports/nrf/omv_portconfig.mk @@ -122,19 +122,6 @@ FIRM_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/sensors/, \ hm01b0.o \ ) -FIRM_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/modules/, \ - py_clock.o \ - py_gif.o \ - py_helper.o \ - py_image.o \ - py_imageio.o \ - py_mjpeg.o \ - py_omv.o \ - py_sensor.o \ - py_tf.o \ - py_fir.o \ - ) - FIRM_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/imlib/, \ agast.o \ apriltag.o \ @@ -189,7 +176,8 @@ FIRM_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/imlib/, \ ) FIRM_OBJ += $(wildcard $(BUILD)/$(OMV_DIR)/ports/$(PORT)/*.o) -FIRM_OBJ += $(wildcard $(BUILD)/$(OMV_DIR)/ports/$(PORT)/modules/*.o) +FIRM_OBJ += $(wildcard $(BUILD)/$(MICROPY_DIR)/modules/*.o) +FIRM_OBJ += $(wildcard $(BUILD)/$(MICROPY_DIR)/ports/$(PORT)/modules/*.o) #------------- MicroPy Objects -------------------# FIRM_OBJ += $(wildcard $(BUILD)/$(MICROPY_DIR)/py/*.o) @@ -300,7 +288,7 @@ FIRM_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/modules/,\ ) ifeq ($(MICROPY_PY_ULAB), 1) -FIRM_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/extmod/ulab/,\ +FIRM_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/modules/ulab/,\ code/scipy/optimize/optimize.o \ code/scipy/signal/signal.o \ code/scipy/special/special.o \ diff --git a/src/omv/ports/rp2/omv_portconfig.cmake b/src/omv/ports/rp2/omv_portconfig.cmake index b0b03ad33..97bb642b2 100644 --- a/src/omv/ports/rp2/omv_portconfig.cmake +++ b/src/omv/ports/rp2/omv_portconfig.cmake @@ -85,6 +85,8 @@ target_include_directories(${MICROPY_TARGET} PRIVATE ${OMV_BOARD_CONFIG_DIR} ) +file(GLOB OMV_USER_MODULES ${TOP_DIR}/${OMV_DIR}/modules/*.c) + target_sources(${MICROPY_TARGET} PRIVATE ${TOP_DIR}/${OMV_DIR}/alloc/xalloc.c ${TOP_DIR}/${OMV_DIR}/alloc/fb_alloc.c @@ -113,17 +115,6 @@ target_sources(${MICROPY_TARGET} PRIVATE ${TOP_DIR}/${OMV_DIR}/sensors/hm01b0.c ${TOP_DIR}/${OMV_DIR}/sensors/gc2145.c - ${TOP_DIR}/${OMV_DIR}/modules/py_clock.c - ${TOP_DIR}/${OMV_DIR}/modules/py_gif.c - ${TOP_DIR}/${OMV_DIR}/modules/py_helper.c - ${TOP_DIR}/${OMV_DIR}/modules/py_image.c - ${TOP_DIR}/${OMV_DIR}/modules/py_imageio.c - ${TOP_DIR}/${OMV_DIR}/modules/py_mjpeg.c - ${TOP_DIR}/${OMV_DIR}/modules/py_omv.c - ${TOP_DIR}/${OMV_DIR}/modules/py_sensor.c - ${TOP_DIR}/${OMV_DIR}/modules/py_tf.c - ${TOP_DIR}/${OMV_DIR}/modules/py_fir.c - ${TOP_DIR}/${OMV_DIR}/imlib/agast.c ${TOP_DIR}/${OMV_DIR}/imlib/apriltag.c ${TOP_DIR}/${OMV_DIR}/imlib/bayer.c @@ -178,6 +169,8 @@ target_sources(${MICROPY_TARGET} PRIVATE ${TOP_DIR}/${OMV_DIR}/ports/${PORT}/main.c ${TOP_DIR}/${OMV_DIR}/ports/${PORT}/cambus.c ${TOP_DIR}/${OMV_DIR}/ports/${PORT}/sensor.c + + ${OMV_USER_MODULES} ) if(MICROPY_PY_SENSOR) @@ -214,7 +207,7 @@ if(MICROPY_PY_AUDIO) endif() if(MICROPY_PY_ULAB) - set(MICROPY_ULAB_DIR "${MICROPY_DIR}/extmod/ulab") + set(MICROPY_ULAB_DIR "${TOP_DIR}/${OMV_DIR}/modules/ulab") target_include_directories(${MICROPY_TARGET} PRIVATE ${MICROPY_ULAB_DIR}/code/ @@ -249,6 +242,7 @@ if(MICROPY_PY_ULAB) target_compile_definitions(${MICROPY_TARGET} PRIVATE MICROPY_PY_ULAB=1 + MODULE_ULAB_ENABLED=1 ULAB_CONFIG_FILE="${OMV_BOARD_CONFIG_DIR}/ulab_config.h" ) endif() diff --git a/src/omv/ports/rp2/omv_portconfig.mk b/src/omv/ports/rp2/omv_portconfig.mk index a8603e4bc..ba298ae74 100644 --- a/src/omv/ports/rp2/omv_portconfig.mk +++ b/src/omv/ports/rp2/omv_portconfig.mk @@ -14,7 +14,8 @@ export TOP_DIR export CC= export CXX= -MICROPY_ARGS += BOARD=$(TARGET) BUILD=$(BUILD)/rp2 OMV_CMAKE=$(TOP_DIR)/$(OMV_DIR)/ports/$(PORT)/omv_portconfig.cmake +# Note this overrides USER_C_MODULES. +MICROPY_ARGS += BOARD=$(TARGET) BUILD=$(BUILD)/rp2 OMV_CMAKE=$(TOP_DIR)/$(OMV_DIR)/ports/$(PORT)/omv_portconfig.cmake USER_C_MODULES="" ################################################### all: $(OPENMV) diff --git a/src/omv/ports/stm32/omv_portconfig.mk b/src/omv/ports/stm32/omv_portconfig.mk index 11263e0ba..ea3d7dbeb 100644 --- a/src/omv/ports/stm32/omv_portconfig.mk +++ b/src/omv/ports/stm32/omv_portconfig.mk @@ -156,19 +156,6 @@ FIRM_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/sensors/, \ paj6100.o \ ) -FIRM_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/modules/, \ - py_clock.o \ - py_gif.o \ - py_helper.o \ - py_image.o \ - py_imageio.o \ - py_mjpeg.o \ - py_omv.o \ - py_sensor.o \ - py_tf.o \ - py_fir.o \ - ) - FIRM_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/imlib/, \ agast.o \ apriltag.o \ @@ -223,7 +210,8 @@ FIRM_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/imlib/, \ ) FIRM_OBJ += $(wildcard $(BUILD)/$(OMV_DIR)/ports/$(PORT)/*.o) -FIRM_OBJ += $(wildcard $(BUILD)/$(OMV_DIR)/ports/$(PORT)/modules/*.o) +FIRM_OBJ += $(wildcard $(BUILD)/$(MICROPY_DIR)/modules/*.o) +FIRM_OBJ += $(wildcard $(BUILD)/$(MICROPY_DIR)/ports/$(PORT)/modules/*.o) #------------- MicroPy Objects -------------------# FIRM_OBJ += $(wildcard $(BUILD)/$(MICROPY_DIR)/py/*.o) @@ -404,7 +392,7 @@ FIRM_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/drivers/,\ ) ifeq ($(MICROPY_PY_ULAB), 1) -FIRM_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/extmod/ulab/,\ +FIRM_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/modules/ulab/,\ code/scipy/optimize/optimize.o \ code/scipy/signal/signal.o \ code/scipy/special/special.o \ diff --git a/src/stm32cubeai/cube.mk b/src/stm32cubeai/cube.mk index a4202d018..3b59a8495 100755 --- a/src/stm32cubeai/cube.mk +++ b/src/stm32cubeai/cube.mk @@ -10,10 +10,6 @@ CFLAGS += -I$(TOP_DIR)/stm32cubeai/ CFLAGS += -I$(TOP_DIR)/stm32cubeai/data/ CFLAGS += -I$(TOP_DIR)/stm32cubeai/AI/Inc/ -# Append to OMV_QSTR_DEFS -OMV_SRC_QSTR += $(TOP_DIR)/stm32cubeai/py_st_nn.c - - FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/dsp/BasicMathFunctions/*.o) FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/dsp/SupportFunctions/*.o) FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/dsp/MatrixFunctions/*.o)