Use USER_C_MODULES to add OpenMV modules.

This commit is contained in:
iabdalkader 2021-08-11 21:48:16 +02:00
parent 368c668421
commit 06e8ba3969
9 changed files with 44 additions and 63 deletions

View File

@ -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) OMV_SRC_QSTR += $(wildcard $(TOP_DIR)/$(OMV_DIR)/ports/$(PORT)/modules/*.c)
# The following command line args are passed to MicroPython's top Makefile. # 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. # Configure additional built-in modules. Note must define both the CFLAGS and the Make command line args.
ifeq ($(MICROPY_PY_SENSOR), 1) ifeq ($(MICROPY_PY_SENSOR), 1)
@ -173,6 +173,11 @@ MPY_CFLAGS += -DMICROPY_PY_BUZZER=1
MICROPY_ARGS += MICROPY_PY_BUZZER=1 MICROPY_ARGS += MICROPY_PY_BUZZER=1
endif endif
ifeq ($(CUBEAI), 1)
MPY_CFLAGS += -DMICROPY_PY_CUBEAI=1
MICROPY_ARGS += MICROPY_PY_CUBEAI=1
endif
# Include the port Makefile. # Include the port Makefile.
include $(OMV_DIR)/ports/$(PORT)/omv_portconfig.mk include $(OMV_DIR)/ports/$(PORT)/omv_portconfig.mk

@ -1 +1 @@
Subproject commit 97e320cdb9d7a209821a039491a9df5ad060e121 Subproject commit f012171f306999509668e8b40cad7cfb50de5652

View File

@ -41,19 +41,6 @@ SRCS += $(addprefix sensors/, \
paj6100.c \ 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/, \ SRCS += $(addprefix imlib/, \
agast.c \ agast.c \
apriltag.c \ apriltag.c \
@ -108,7 +95,6 @@ SRCS += $(addprefix imlib/, \
) )
SRCS += $(wildcard ports/$(PORT)/*.c) SRCS += $(wildcard ports/$(PORT)/*.c)
SRCS += $(wildcard ports/$(PORT)/modules/*.c)
OBJS = $(addprefix $(BUILD)/, $(SRCS:.c=.o)) OBJS = $(addprefix $(BUILD)/, $(SRCS:.c=.o))
OBJ_DIRS = $(sort $(dir $(OBJS))) OBJ_DIRS = $(sort $(dir $(OBJS)))

View File

@ -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

View File

@ -122,19 +122,6 @@ FIRM_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/sensors/, \
hm01b0.o \ 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/, \ FIRM_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/imlib/, \
agast.o \ agast.o \
apriltag.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)/*.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 -------------------# #------------- MicroPy Objects -------------------#
FIRM_OBJ += $(wildcard $(BUILD)/$(MICROPY_DIR)/py/*.o) FIRM_OBJ += $(wildcard $(BUILD)/$(MICROPY_DIR)/py/*.o)
@ -300,7 +288,7 @@ FIRM_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/modules/,\
) )
ifeq ($(MICROPY_PY_ULAB), 1) 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/optimize/optimize.o \
code/scipy/signal/signal.o \ code/scipy/signal/signal.o \
code/scipy/special/special.o \ code/scipy/special/special.o \

View File

@ -85,6 +85,8 @@ target_include_directories(${MICROPY_TARGET} PRIVATE
${OMV_BOARD_CONFIG_DIR} ${OMV_BOARD_CONFIG_DIR}
) )
file(GLOB OMV_USER_MODULES ${TOP_DIR}/${OMV_DIR}/modules/*.c)
target_sources(${MICROPY_TARGET} PRIVATE target_sources(${MICROPY_TARGET} PRIVATE
${TOP_DIR}/${OMV_DIR}/alloc/xalloc.c ${TOP_DIR}/${OMV_DIR}/alloc/xalloc.c
${TOP_DIR}/${OMV_DIR}/alloc/fb_alloc.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/hm01b0.c
${TOP_DIR}/${OMV_DIR}/sensors/gc2145.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/agast.c
${TOP_DIR}/${OMV_DIR}/imlib/apriltag.c ${TOP_DIR}/${OMV_DIR}/imlib/apriltag.c
${TOP_DIR}/${OMV_DIR}/imlib/bayer.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}/main.c
${TOP_DIR}/${OMV_DIR}/ports/${PORT}/cambus.c ${TOP_DIR}/${OMV_DIR}/ports/${PORT}/cambus.c
${TOP_DIR}/${OMV_DIR}/ports/${PORT}/sensor.c ${TOP_DIR}/${OMV_DIR}/ports/${PORT}/sensor.c
${OMV_USER_MODULES}
) )
if(MICROPY_PY_SENSOR) if(MICROPY_PY_SENSOR)
@ -214,7 +207,7 @@ if(MICROPY_PY_AUDIO)
endif() endif()
if(MICROPY_PY_ULAB) 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 target_include_directories(${MICROPY_TARGET} PRIVATE
${MICROPY_ULAB_DIR}/code/ ${MICROPY_ULAB_DIR}/code/
@ -249,6 +242,7 @@ if(MICROPY_PY_ULAB)
target_compile_definitions(${MICROPY_TARGET} PRIVATE target_compile_definitions(${MICROPY_TARGET} PRIVATE
MICROPY_PY_ULAB=1 MICROPY_PY_ULAB=1
MODULE_ULAB_ENABLED=1
ULAB_CONFIG_FILE="${OMV_BOARD_CONFIG_DIR}/ulab_config.h" ULAB_CONFIG_FILE="${OMV_BOARD_CONFIG_DIR}/ulab_config.h"
) )
endif() endif()

View File

@ -14,7 +14,8 @@ export TOP_DIR
export CC= export CC=
export CXX= 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) all: $(OPENMV)

View File

@ -156,19 +156,6 @@ FIRM_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/sensors/, \
paj6100.o \ 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/, \ FIRM_OBJ += $(addprefix $(BUILD)/$(OMV_DIR)/imlib/, \
agast.o \ agast.o \
apriltag.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)/*.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 -------------------# #------------- MicroPy Objects -------------------#
FIRM_OBJ += $(wildcard $(BUILD)/$(MICROPY_DIR)/py/*.o) FIRM_OBJ += $(wildcard $(BUILD)/$(MICROPY_DIR)/py/*.o)
@ -404,7 +392,7 @@ FIRM_OBJ += $(addprefix $(BUILD)/$(MICROPY_DIR)/drivers/,\
) )
ifeq ($(MICROPY_PY_ULAB), 1) 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/optimize/optimize.o \
code/scipy/signal/signal.o \ code/scipy/signal/signal.o \
code/scipy/special/special.o \ code/scipy/special/special.o \

View File

@ -10,10 +10,6 @@ CFLAGS += -I$(TOP_DIR)/stm32cubeai/
CFLAGS += -I$(TOP_DIR)/stm32cubeai/data/ CFLAGS += -I$(TOP_DIR)/stm32cubeai/data/
CFLAGS += -I$(TOP_DIR)/stm32cubeai/AI/Inc/ 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/BasicMathFunctions/*.o)
FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/dsp/SupportFunctions/*.o) FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/dsp/SupportFunctions/*.o)
FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/dsp/MatrixFunctions/*.o) FIRM_OBJ += $(wildcard $(BUILD)/$(CMSIS_DIR)/src/dsp/MatrixFunctions/*.o)