From aa8f25b1cfd9f2ab4add2919e15d1458c43d40d6 Mon Sep 17 00:00:00 2001 From: "phillip.choi" Date: Thu, 17 Oct 2024 16:47:23 +0900 Subject: [PATCH] custom: Edit NPU custom files to support ODROID-M1/M1S/M2 Support ODROID-M1/M1S/M2 models using the same custom scripts. The basic structure is almost the same as before, however, minor changes are as follows: - Remove rga udev rule because same rule is already loaded on the startup - Rename S15-add-repository to S25-add-repository to resolve dependency with key-signing at S20-install-packages - Install packages and edit files differently based on the models. Signed-off-by: phillip.choi Change-Id: I15d658534bf2666cc12f1cd75431825210d09e05 --- ...{S15-add-repository => S25-add-repository} | 5 +- custom/npu/fixups/S60-edit-overlay | 10 ++++ custom/npu/fixups/S85-config | 11 +++- custom/npu/fixups/S90-extra-install | 9 ++++ custom/npu/fixups/S90-pythonX | 53 ++++++++++--------- custom/npu/fixups/S90-welcome | 9 ++++ .../etc/udev/rules.d/99-odroid-rga.rules | 2 - custom/npu/packages | 13 ++--- 8 files changed, 71 insertions(+), 41 deletions(-) rename custom/npu/fixups/{S15-add-repository => S25-add-repository} (73%) create mode 100644 custom/npu/fixups/S60-edit-overlay create mode 100644 custom/npu/fixups/S90-extra-install create mode 100644 custom/npu/fixups/S90-welcome delete mode 100644 custom/npu/overlay/etc/udev/rules.d/99-odroid-rga.rules diff --git a/custom/npu/fixups/S15-add-repository b/custom/npu/fixups/S25-add-repository similarity index 73% rename from custom/npu/fixups/S15-add-repository rename to custom/npu/fixups/S25-add-repository index 05179bd..9449398 100644 --- a/custom/npu/fixups/S15-add-repository +++ b/custom/npu/fixups/S25-add-repository @@ -1,6 +1,6 @@ #!/bin/sh -repo=ppa:deadsnakes/ppa +REPO=ppa:deadsnakes/ppa if [ -z $(which add-apt-repository) ]; then apt update -y @@ -8,5 +8,6 @@ apt install @@DEFAULT_APT_OPTIONS@@ \ software-properties-common fi -add-apt-repository ${repo} -y +add-apt-repository ${REPO} -y apt update -y + diff --git a/custom/npu/fixups/S60-edit-overlay b/custom/npu/fixups/S60-edit-overlay new file mode 100644 index 0000000..92a927f --- /dev/null +++ b/custom/npu/fixups/S60-edit-overlay @@ -0,0 +1,10 @@ +#!/bin/sh + +BOARD=@@DEFAULT_BOARD@@ + +case ${BOARD} in + odroidm1s | odroidm2) + sed -i "/video_rkisp/d" /overlay/etc/modules + rm -f /overlay/etc/udev/rules.d/99-odroid-video.rules + ;; +esac diff --git a/custom/npu/fixups/S85-config b/custom/npu/fixups/S85-config index 3ae2fe8..fa6b11a 100644 --- a/custom/npu/fixups/S85-config +++ b/custom/npu/fixups/S85-config @@ -1,5 +1,14 @@ #!/bin/sh +BOARD=@@DEFAULT_BOARD@@ +OVERLAYS="rknpu" + if [ -f /boot/config.ini ]; then - sed -i '/generic/,/overlays/ s/^overlays=.*$/overlays=\"rknpu ov5647\"/' /boot/config.ini + case ${BOARD} in + odroidm1) + OVERLAYS="${OVERLAYS} ov5647" + ;; + esac + + sed -i '/generic/,/overlays/ s/^\(overlays=".*\)"/\1 '"${OVERLAYS}"'"/' /boot/config.ini fi diff --git a/custom/npu/fixups/S90-extra-install b/custom/npu/fixups/S90-extra-install new file mode 100644 index 0000000..c4dd5f7 --- /dev/null +++ b/custom/npu/fixups/S90-extra-install @@ -0,0 +1,9 @@ +#!/bin/sh + +BOARD=@@DEFAULT_BOARD@@ + +case ${BOARD} in + odroidm1) + apt install -y rkaiq + ;; +esac diff --git a/custom/npu/fixups/S90-pythonX b/custom/npu/fixups/S90-pythonX index 35b3ae8..e286714 100644 --- a/custom/npu/fixups/S90-pythonX +++ b/custom/npu/fixups/S90-pythonX @@ -1,34 +1,35 @@ #!/bin/sh -CV2=/usr/lib/python3/dist-packages/cv2.cpython-38-aarch64-linux-gnu.so -HOME=/home/odroid -RKNN=/home/odroid/rknpu2/runtime/Linux/librknn_api/aarch64/librknnrt.so -WHL=${HOME}/rknn-toolkit2/rknn-toolkit-lite2-v1.2.0/packages/rknn_toolkit_lite2-1.2.0-cp39-cp39-linux_aarch64.whl +CUSTOM_USER=@@DEFAULT_USER@@ +USER=${CUSTOM_USER:-odroid} +HOME=/home/${USER} +RKNN=${HOME}/rknn-toolkit2/rknpu2/runtime/Linux/librknn_api/aarch64/librknnrt.so +WHL=${HOME}/rknn-toolkit2/rknn-toolkit-lite2/packages/rknn_toolkit_lite2-2.1.0-cp39-cp39-linux_aarch64.whl +MPP_PATH=${HOME}/rknn-toolkit2/rknpu2/examples/3rdparty/mpp/Linux/aarch64 -virtualenv ${HOME}/.rknn --python=3.9 --system-site-package +echo "I: cloning rknn-toolkit2 repository" +git clone https://github.com/hardkernel/rknn-toolkit2 ${HOME}/rknn-toolkit2 --depth=1 +git clone https://github.com/hardkernel/rknn_model_zoo ${HOME}/rknn_model_zoo --depth=1 -echo "========== symlink cv2 start ==========" -[ -f ${CV2} ] && ln -s ${CV2} ${HOME}/.rknn/lib/python3.9/site-packages/cv2.so -echo "========== symlink cv2 finish ==========" +echo "I: creating python virtual environment (using: Pyhton3.9)" +python3.9 -m venv ${HOME}/.rknn -echo "========== git clone start ==========" -git clone https://github.com/hardkernel/rknpu2 ${HOME}/rknpu2 -git clone https://github.com/hardkernel/rknn-toolkit2 ${HOME}/rknn-toolkit2 -echo "========== git clone finish ==========" +[ -f ${WHL} ] && ${HOME}/.rknn/bin/python3.9 -m pip install ${WHL} +yes | ${HOME}/.rknn/bin/python3.9 -m pip install opencv-python -echo "========== pip install start ==========" -yes | ${HOME}/.rknn/bin/python3.9 -m pip install -I opencv-python -[ -f ${WHL} ] && ${HOME}/.rknn/bin/python3 -m pip install ${WHL} -yes | ${HOME}/.rknn/bin/python3.9 -m pip uninstall opencv-python -echo "========== pip install finish ==========" +echo "I: setting up environment" +[ -f "${MPP_PATH}/librockchip_mpp.so.0" ] \ + && [ -L "${MPP_PATH}/librockchip_mpp.so.1" ] \ + && [ -L "${MPP_PATH}/librockchip_mpp.so" ] \ + && cd ${MPP_PATH} \ + && ln -sf librockchip_mpp.so.0 librockchip_mpp.so.1 \ + && ln -sf librockchip_mpp.so.0 librockchip_mpp.so \ + && cd ${HOME} +chown -R ${USER}:${USER} ${HOME}/rknn-toolkit2/ +chown -R ${USER}:${USER} ${HOME}/rknn_model_zoo/ +chown -R ${USER}:${USER} ${HOME}/.rknn/ +[ -f ${RKNN} ] && cp ${RKNN} /usr/lib/librknnrt.so -echo "========== examples seting start ==========" -chown -R odroid:odroid ${HOME}/rknpu2/ -chown -R odroid:odroid ${HOME}/rknn-toolkit2/ -chown -R odroid:odroid ${HOME}/.rknn/ -[ -f ${RKNN} ] && ln -s ${RKNN} /usr/lib/librknnrt.so -echo "========== examples seting finish ==========" - -echo "# activate venv at first" +# activate venv at start up echo "source ${HOME}/.rknn/bin/activate" >> ${HOME}/.bashrc -echo "export LD_LIBRARY_PATH=${HOME}/rknpu2/examples/rknn*/install/*/lib" >> ${HOME}/.bashrc + diff --git a/custom/npu/fixups/S90-welcome b/custom/npu/fixups/S90-welcome new file mode 100644 index 0000000..c6501ce --- /dev/null +++ b/custom/npu/fixups/S90-welcome @@ -0,0 +1,9 @@ +#!/bin/sh + +BOARD=@@DEFAULT_BOARD@@ + +if [ ! -z "${BOARD}" ]; then + BOARD=$(echo ${BOARD} | tr '[:lower:]' '[:upper:]' | sed -E 's/ODROID/ODROID-/') +fi + +echo "echo \"You are using the ${BOARD} NPU image. Welcome!\"" >> "${HOME}/.bashrc" diff --git a/custom/npu/overlay/etc/udev/rules.d/99-odroid-rga.rules b/custom/npu/overlay/etc/udev/rules.d/99-odroid-rga.rules deleted file mode 100644 index 67e5e9a..0000000 --- a/custom/npu/overlay/etc/udev/rules.d/99-odroid-rga.rules +++ /dev/null @@ -1,2 +0,0 @@ -# /dev/rga -SUBSYSTEM=="misc", ENV{DEVNAME}=="/dev/rga", GROUP="odroid", MODE="0660" diff --git a/custom/npu/packages b/custom/npu/packages index e94764e..e81ef69 100644 --- a/custom/npu/packages +++ b/custom/npu/packages @@ -3,16 +3,9 @@ g++ git libopencv-dev librga-dev -make -python3-opencv +python3-dev python3-pip -python3.6 -python3.6-dev -python3.7 -python3.7-dev -python3.8 -python3.8-dev +python3-venv python3.9 python3.9-dev -rkaiq -virtualenv +python3.9-venv