@@ -14,10 +14,12 @@ function build_micropython_red_vision {
14
14
pip install freezefs
15
15
16
16
# Set Pico SDK path to $GITHUB_WORKSPACE/micropython/lib/pico-sdk if $GITHUB_WORKSPACE is set, otherwise use the current directory
17
+ # https://stackoverflow.com/a/246128/4783963
18
+ SCRIPT_DIR=$( cd -- " $( dirname -- " ${BASH_SOURCE[0]} " ) " & > /dev/null && pwd )
17
19
if [ -n " $GITHUB_WORKSPACE " ]; then
18
20
export PICO_SDK_PATH=" $GITHUB_WORKSPACE /micropython/lib/pico-sdk"
19
21
else
20
- export PICO_SDK_PATH=$( dirname " $0 " ) / lib/pico-sdk
22
+ export PICO_SDK_PATH=" $SCRIPT_DIR /../ lib/pico-sdk"
21
23
fi
22
24
23
25
# Clone the Red Vision submodule
@@ -27,16 +29,31 @@ function build_micropython_red_vision {
27
29
make -C mpy-cross ${MAKEOPTS}
28
30
29
31
# Update necessary MicroPython submodules
30
- make -C ports/rp2 BOARD=SPARKFUN_XRP_CONTROLLER submodules
32
+ make -C ports/rp2 \
33
+ BOARD=SPARKFUN_XRP_CONTROLLER \
34
+ BOARD_VARIANT=RED_VISION \
35
+ submodules
31
36
32
37
# Build OpenCV
33
38
make -C lib/red_vision/micropython-opencv PLATFORM=rp2350 --no-print-directory ${MAKEOPTS}
34
39
35
40
# Archive the examples directory
36
41
python3 -m freezefs lib/red_vision/red_vision_examples lib/red_vision/extract_red_vision_examples.py --on-import=extract --compress --overwrite always
37
42
43
+ # Set CMake arguments for Pico SDK to use MicroPython-OpenCV malloc wrappers
44
+ # and enable C++ exceptions
45
+ export CMAKE_ARGS=" -DSKIP_PICO_MALLOC=1 -DPICO_CXX_ENABLE_EXCEPTIONS=1"
46
+
38
47
# Build firmware
39
- make -C lib/red_vision PORT_DIR=~ /micropython/ports/rp2 BOARD=SPARKFUN_XRP_CONTROLLER --no-print-directory ${MAKEOPTS}
48
+ make -C ports/rp2 \
49
+ BOARD=SPARKFUN_XRP_CONTROLLER \
50
+ BOARD_VARIANT=RED_VISION \
51
+ USER_C_MODULES=" $SCRIPT_DIR /../lib/red_vision/micropython-opencv/micropython_opencv.cmake" \
52
+ FROZEN_MANIFEST=" $SCRIPT_DIR /../lib/red_vision/manifest.py" \
53
+ --no-print-directory ${MAKEOPTS}
54
+
55
+ # Unset CMake arguments to avoid affecting other builds
56
+ unset CMAKE_ARGS
40
57
41
58
# Rename firmware file to identify it as the Red Vision build and which board it's for
42
59
mv ports/rp2/build-SPARKFUN_XRP_CONTROLLER-RED_VISION/firmware.uf2 ports/rp2/build-SPARKFUN_XRP_CONTROLLER-RED_VISION/RED_VISION_MICROPYTHON_SPARKFUN_XRP_CONTROLLER.uf2
0 commit comments