diff --git a/meta-digi-arm/conf/machine/ccimx93-dvk.conf b/meta-digi-arm/conf/machine/ccimx93-dvk.conf index a659defa9..7f2036031 100644 --- a/meta-digi-arm/conf/machine/ccimx93-dvk.conf +++ b/meta-digi-arm/conf/machine/ccimx93-dvk.conf @@ -31,6 +31,7 @@ KERNEL_DEVICETREE ?= " \ digi/_ov_som_bt-dtm_ccimx9.dtbo \ digi/_ov_som_emulate-ccimx91_ccimx93.dtbo \ digi/_ov_som_npu_ccimx93.dtbo \ + digi/_ov_som_single-core-512M_ccimx93.dtbo \ digi/_ov_som_wifi_ccimx9.dtbo \ ${@bb.utils.contains('DISTRO_FEATURES', 'tsn', 'digi/_ov_board_eqos-tsn_ccimx9-dvk.dtbo', '', d)} \ " diff --git a/meta-digi-arm/conf/machine/ccmp25-dvk.conf b/meta-digi-arm/conf/machine/ccmp25-dvk.conf index 88b604f94..0044a8b9f 100644 --- a/meta-digi-arm/conf/machine/ccmp25-dvk.conf +++ b/meta-digi-arm/conf/machine/ccmp25-dvk.conf @@ -45,6 +45,7 @@ STM32MP_KERNEL_DEVICETREE:ccmp25-dvk += " \ ccmp25-dvk.dtb \ _ov_board_e55rb-i-mw346-c-mipi-dsi_ccmp25-dvk.dtbo \ _ov_board_g101evn010-lvds_ccmp25-dvk.dtbo \ + _ov_board_imx335-mipi-csi_ccmp25-dvk.dtbo \ _ov_board_mikroe-accel2-click_ccmp25-dvk.dtbo \ _ov_board_mikroe-gyro-click_ccmp25-dvk.dtbo \ _ov_board_mikroe-i2c-to-spi-click_ccmp25-dvk.dtbo \ diff --git a/meta-digi-arm/conf/machine/include/ccimx9.inc b/meta-digi-arm/conf/machine/include/ccimx9.inc index 3079142a9..c1809338e 100644 --- a/meta-digi-arm/conf/machine/include/ccimx9.inc +++ b/meta-digi-arm/conf/machine/include/ccimx9.inc @@ -67,6 +67,7 @@ BT_TTY ?= "ttyLP0" # Per-machine DISTRO_FEATURES customization MACHINE_DISTRO_FEATURES_REMOVE = "vulkan" +MACHINE_DISTRO_FEATURES_REMOVE:ccimx91 = "gstreamer opengl vulkan wayland x11" # SWUpdate sw-description configuration BOOTFS_EXT ?= ".boot.vfat" diff --git a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-security/optee/optee-os-stm32mp2-common.inc b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-security/optee/optee-os-stm32mp2-common.inc index 2ccdcf72d..533a9ffe0 100644 --- a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-security/optee/optee-os-stm32mp2-common.inc +++ b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-security/optee/optee-os-stm32mp2-common.inc @@ -50,7 +50,7 @@ EXTRA_OEMAKE += "LDFLAGS=" # Set external-dt support EXTRA_OEMAKE += "${@bb.utils.contains('EXTERNAL_DT_ENABLED', '1', 'CFG_EXT_DTS=${STAGING_EXTDT_DIR}/optee', '', d)}" # Set scp-firmware support -EXTRA_OEMAKE += "CFG_SCP_FIRMWARE=${STAGING_SCPFW_DIR}" +EXTRA_OEMAKE += "CFG_SCP_FIRMWARE=${STAGING_SCPFW_DIR} CFG_SCPFW_LOG_LEVEL=5 CFG_WERROR=n" # debug and trace EXTRA_OEMAKE += "${@bb.utils.contains('ST_OPTEE_DEBUG_TRACE', '1', 'CFG_TEE_CORE_LOG_LEVEL=${ST_OPTEE_DEBUG_LOG_LEVEL} CFG_TEE_CORE_DEBUG=${ST_OPTEE_CORE_DEBUG}', '', d)}" diff --git a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-security/optee/optee-os-stm32mp_3.19.0.bb b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-security/optee/optee-os-stm32mp_3.19.0.bb index 2fe62ea76..c33b5a721 100644 --- a/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-security/optee/optee-os-stm32mp_3.19.0.bb +++ b/meta-digi-arm/dynamic-layers/stm-st-stm32mp/recipes-security/optee/optee-os-stm32mp_3.19.0.bb @@ -38,6 +38,11 @@ OPTEEOUTPUTMACHINE ?= "stm32mp1" OPTEEOUTPUTMACHINE:stm32mp1common = "stm32mp1" OPTEEOUTPUTMACHINE:stm32mp2common = "stm32mp2" +# Enable OPTEE_DEBUG_TRACE; If set to 0, LOG_LEVEL defaults to 3 on optee code +ST_OPTEE_DEBUG_TRACE = "1" +# Log level +ST_OPTEE_DEBUG_LOG_LEVEL = "0" + # The package is empty but must be generated to avoid apt-get installation issue ALLOW_EMPTY:${PN} = "1" diff --git a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx9/boot.txt b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx9/boot.txt index eb54b8080..6f75c7d45 100644 --- a/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx9/boot.txt +++ b/meta-digi-arm/recipes-bsp/u-boot/u-boot-dey/ccimx9/boot.txt @@ -85,6 +85,8 @@ if test "${soc_type}" = "imx93"; then module_has_npu="0" setenv extra_bootargs ${extra_bootargs} mem=512M setenv overlays _ov_som_emulate-ccimx91_ccimx93.dtbo,${overlays} + elif test "${module_variant}" = "0x03" || test "${module_variant}" = "0x04"; then + setenv overlays _ov_som_single-core-512M_ccimx93.dtbo,${overlays} fi fi diff --git a/meta-digi-arm/recipes-kernel/linux/linux-dey/docker_conf.cfg b/meta-digi-arm/recipes-kernel/linux/linux-dey/docker_conf.cfg index 60ab5875a..cb07061fd 100644 --- a/meta-digi-arm/recipes-kernel/linux/linux-dey/docker_conf.cfg +++ b/meta-digi-arm/recipes-kernel/linux/linux-dey/docker_conf.cfg @@ -40,8 +40,7 @@ CONFIG_CGROUP_FREEZER=y CONFIG_CGROUP_SCHED=y CONFIG_CGROUP_BPF=y CONFIG_CGROUP_NS=y -CONFIG_CGROUP_FREEZER=y -CONFIG_CGROUP_DEVICE=y +CONFIG_IP_NF_FILTER=m CONFIG_BLK_CGROUP=y CONFIG_NETFILTER=y CONFIG_BRIDGE_NETFILTER=m diff --git a/meta-digi-dey/conf/distro/dey.conf b/meta-digi-dey/conf/distro/dey.conf index 5639e4b7d..d29933447 100644 --- a/meta-digi-dey/conf/distro/dey.conf +++ b/meta-digi-dey/conf/distro/dey.conf @@ -5,7 +5,7 @@ require include/time64.inc YOCTO_MAJOR = "4" YOCTO_MINOR = "0" DEY_RELEASE = "7" -DEY_BUILD = "1" +DEY_BUILD = "2" # Firmware version of the system. DEY_FIRMWARE_VERSION ?= "${YOCTO_MAJOR}.${YOCTO_MINOR}.${DEY_RELEASE}.${DEY_BUILD}" diff --git a/meta-digi-dey/dynamic-layers/meta-ml/recipes-libraries/eiq-examples/eiq-examples_git.bbappend b/meta-digi-dey/dynamic-layers/meta-ml/recipes-libraries/eiq-examples/eiq-examples_git.bbappend index b9ca14bee..9052371f7 100644 --- a/meta-digi-dey/dynamic-layers/meta-ml/recipes-libraries/eiq-examples/eiq-examples_git.bbappend +++ b/meta-digi-dey/dynamic-layers/meta-ml/recipes-libraries/eiq-examples/eiq-examples_git.bbappend @@ -6,28 +6,28 @@ MODELS_DIR = "models" # Directory for transformation tasks. VELA_MODELS_DIR = "vela_models" -# The Vela native tool is required to transform the models. -DEPENDS += "ethos-u-vela-native" - SRC_URI += " \ file://patches/0001-Customize-EiQ-demos.patch \ file://patches/0002-dms-update-the-demo-to-use-the-landmark-full-model.patch \ file://patches/0003-download_models-update-the-download-location-of-some.patch \ + file://patches/0004-improvements-capture-x-windows-and-increase-resoluti.patch \ file://scripts/launch_eiq_demo.sh \ file://service/eiqdemo.service \ " +inherit python3native systemd + # Custom task to download and transform the models using Vela. do_download_transform_models() { - cd "${S}" - python3 "${S}/download_models.py" + ${PYTHON} download_models.py } +do_download_transform_models[depends] += " \ + ethos-u-vela-native:do_populate_sysroot \ + python3-requests-native:do_populate_sysroot \ +" +do_download_transform_models[dirs] = "${S}" do_download_transform_models[network] = "1" - -# Add the custom task to download and transform the models. -addtask do_download_transform_models after do_patch before do_install - -inherit systemd +addtask download_transform_models after do_patch before do_install do_install () { # Install scripts to /usr/bin. diff --git a/meta-digi-dey/dynamic-layers/meta-ml/recipes-libraries/eiq-examples/files/patches/0004-improvements-capture-x-windows-and-increase-resoluti.patch b/meta-digi-dey/dynamic-layers/meta-ml/recipes-libraries/eiq-examples/files/patches/0004-improvements-capture-x-windows-and-increase-resoluti.patch new file mode 100644 index 000000000..87ad567d0 --- /dev/null +++ b/meta-digi-dey/dynamic-layers/meta-ml/recipes-libraries/eiq-examples/files/patches/0004-improvements-capture-x-windows-and-increase-resoluti.patch @@ -0,0 +1,138 @@ +From: Isaac Hermida +Date: Wed, 2 Oct 2024 11:58:15 +0200 +Subject: [PATCH] improvements: capture "x" windows and increase resolution + +When running in window mode (no fullscreen), stop the application. +Increase the camera resolution to 1280x720. + +Signed-off-by: Isaac Hermida +--- + dms/main.py | 13 +++++++++---- + face_recognition/main.py | 12 ++++++++---- + gesture_detection/main.py | 13 +++++++++---- + object_detection/main.py | 13 +++++++++---- + 4 files changed, 35 insertions(+), 16 deletions(-) + +diff --git a/dms/main.py b/dms/main.py +index e74b6be1b938..99b501ca2194 100644 +--- a/dms/main.py ++++ b/dms/main.py +@@ -14,10 +14,10 @@ from eye_landmark import EyeMesher + from face_landmark import FaceMesher + from utils import * + +-WIDTH=640 +-HEIGH=480 +-FLIP=None # None, skip, 0: Flip vertically, 1: Flip horizontally (around the y-axis), -1: Flip both vertically and horizontally +-FORMAT=0 # None, skip (YUYV, default), 0 MJPG (for usb camera) ++WIDTH=1280 ++HEIGH=720 ++FLIP=None # None, skip, 0: Flip vertically, 1: Flip horizontally (around the y-axis), -1: Flip both vertically and horizontally ++FORMAT=None # None, skip (YUYV, default), 0 MJPG (for usb camera) + + # Always enforce the Ethos NPU, use the converted vela models + MODEL_PATH = pathlib.Path("../vela_models/") +@@ -197,6 +197,11 @@ while ret: + if FLIP is not None: + image = cv2.flip(image, FLIP) + if cv2.waitKey(1) & 0xFF == ord('q'): ++ # "q" key pressed ++ break ++ ++ if cv2.getWindowProperty(window_name, cv2.WND_PROP_AUTOSIZE): ++ # Window closed by click 'X' + break + except Exception as err: + # Ignore exceptions +diff --git a/face_recognition/main.py b/face_recognition/main.py +index 33ffa7161fac..40ca9f8afb91 100644 +--- a/face_recognition/main.py ++++ b/face_recognition/main.py +@@ -13,10 +13,10 @@ from face_detection import YoloFace + from face_recognition import Facenet + from face_database import FaceDatabase + +-WIDTH=640 +-HEIGH=480 +-FLIP=None # None, skip, 0: Flip vertically, 1: Flip horizontally (around the y-axis), -1: Flip both vertically and horizontally +-FORMAT=0 # None, skip (YUYV, default), 0 MJPG (for usb camera) ++WIDTH=1280 ++HEIGH=720 ++FLIP=None # None, skip, 0: Flip vertically, 1: Flip horizontally (around the y-axis), -1: Flip both vertically and horizontally ++FORMAT=None # None, skip (YUYV, default), 0 MJPG (for usb camera) + + parser = argparse.ArgumentParser() + parser.add_argument( +@@ -144,6 +144,10 @@ while True: + while cv2.waitKey(100) & 0xFF == 0xFF: + pass + ++ if cv2.getWindowProperty(window_name, cv2.WND_PROP_AUTOSIZE): ++ # Window closed by click 'X' ++ break ++ + time.sleep(2) + vid.release() + cv2.destroyAllWindows() +diff --git a/gesture_detection/main.py b/gesture_detection/main.py +index 15b85976fd72..8ad2c9bd409b 100644 +--- a/gesture_detection/main.py ++++ b/gesture_detection/main.py +@@ -63,10 +63,10 @@ if args.input.isdigit(): + else: + cap_input = args.input + +-WIDTH=640 +-HEIGH=480 +-FLIP=None # None, skip, 0: Flip vertically, 1: Flip horizontally (around the y-axis), -1: Flip both vertically and horizontally +-FORMAT=0 # None, skip (YUYV, default), 0 MJPG (for usb camera) ++WIDTH=1280 ++HEIGH=720 ++FLIP=None # None, skip, 0: Flip vertically, 1: Flip horizontally (around the y-axis), -1: Flip both vertically and horizontally ++FORMAT=None # None, skip (YUYV, default), 0 MJPG (for usb camera) + + # This pipeline for the OV5640 camera in case the other command fails + # capture = cv2.VideoCapture("v4l2src device=%s ! imxvideoconvert_pxp ! video/x-raw,format=RGB16,width=%d,height=%d " \ +@@ -100,6 +100,11 @@ while ret: + + ret, frame = capture.read() + if cv2.waitKey(1) & 0xFF == ord('q'): ++ # "q" key pressed ++ break ++ ++ if cv2.getWindowProperty(window_name, cv2.WND_PROP_AUTOSIZE): ++ # Window closed by click 'X' + break + + cv2.waitKey(2000) +diff --git a/object_detection/main.py b/object_detection/main.py +index efa614ebd44b..34ba17eddffb 100644 +--- a/object_detection/main.py ++++ b/object_detection/main.py +@@ -13,10 +13,10 @@ import argparse + + from labels import label2string + +-WIDTH=640 +-HEIGH=480 +-FLIP=None # None, skip, 0: Flip vertically, 1: Flip horizontally (around the y-axis), -1: Flip both vertically and horizontally +-FORMAT=0 # None, skip (YUYV, default), 0 MJPG (for usb camera) ++WIDTH=1280 ++HEIGH=720 ++FLIP=None # None, skip, 0: Flip vertically, 1: Flip horizontally (around the y-axis), -1: Flip both vertically and horizontally ++FORMAT=None # None, skip (YUYV, default), 0 MJPG (for usb camera) + + # Always enforce the Ethos NPU, use the converted vela models + MODEL_PATH = "../vela_models/ssd_mobilenet_v1_quant_vela.tflite" +@@ -122,6 +122,11 @@ while ret: + if FLIP is not None: + frame = cv2.flip(frame, FLIP) + if cv2.waitKey(1) & 0xFF == ord('q'): ++ # "q" key pressed ++ break ++ ++ if cv2.getWindowProperty(window_name, cv2.WND_PROP_AUTOSIZE): ++ # Window closed by click 'X' + break + + cv2.waitKey(2000) diff --git a/meta-digi-dey/dynamic-layers/meta-ml/recipes-libraries/eiq-examples/files/scripts/launch_eiq_demo.sh b/meta-digi-dey/dynamic-layers/meta-ml/recipes-libraries/eiq-examples/files/scripts/launch_eiq_demo.sh index d719c2988..374dd6d79 100644 --- a/meta-digi-dey/dynamic-layers/meta-ml/recipes-libraries/eiq-examples/files/scripts/launch_eiq_demo.sh +++ b/meta-digi-dey/dynamic-layers/meta-ml/recipes-libraries/eiq-examples/files/scripts/launch_eiq_demo.sh @@ -36,4 +36,4 @@ DEMO_DIR="/usr/bin/eiq-examples-git/${DEMO}" cd "${DEMO_DIR}" || exit # Execute the demo pre-configuring the display settings. -WAYLAND_DISPLAY=/run/wayland-0 DISPLAY=:0.0 XDG_RUNTIME_DIR=/run/user/0 python3 main.py -i /dev/video0 -f -d /usr/lib/libethosu_delegate.so & +WAYLAND_DISPLAY=/run/wayland-0 DISPLAY=:0.0 XDG_RUNTIME_DIR=/run/user/0 python3 main.py -i /dev/video0 -f -d /usr/lib/libethosu_delegate.so diff --git a/meta-digi-dey/dynamic-layers/meta-ml/recipes-libraries/eiq-examples/files/service/eiqdemo.service b/meta-digi-dey/dynamic-layers/meta-ml/recipes-libraries/eiq-examples/files/service/eiqdemo.service index 2189e5d4a..7313c5b8f 100644 --- a/meta-digi-dey/dynamic-layers/meta-ml/recipes-libraries/eiq-examples/files/service/eiqdemo.service +++ b/meta-digi-dey/dynamic-layers/meta-ml/recipes-libraries/eiq-examples/files/service/eiqdemo.service @@ -1,10 +1,12 @@ [Unit] Description=Initialization of EiQ DMS demo -After=multi-user.target +After=graphical.target +ConditionPathExists=/dev/video0 [Service] -Type=forking +Type=exec +RemainAfterExit=yes ExecStart=/etc/demos/scripts/launch_eiq_demo.sh [Install] -WantedBy=multi-user.target +WantedBy=graphical.target diff --git a/meta-digi-dey/dynamic-layers/stm32mpu-ai/recipes-frameworks/tensorflow-lite/tensorflow-lite_git.bbappend b/meta-digi-dey/dynamic-layers/stm32mpu-ai/recipes-frameworks/tensorflow-lite/tensorflow-lite_git.bbappend index 6eb361db0..35e8e1eab 100644 --- a/meta-digi-dey/dynamic-layers/stm32mpu-ai/recipes-frameworks/tensorflow-lite/tensorflow-lite_git.bbappend +++ b/meta-digi-dey/dynamic-layers/stm32mpu-ai/recipes-frameworks/tensorflow-lite/tensorflow-lite_git.bbappend @@ -45,3 +45,6 @@ do_compile() { setuptools3_do_compile } + +# Require the external NPU delegate. +RDEPENDS:${PN}:append:stm32mp25common = " tflite-vx-delegate " diff --git a/meta-digi-dey/dynamic-layers/stm32mpu-ai/recipes-frameworks/tflite-vx-delegate/tflite-vx-delegate/0001-tflite-vx-delegate-fix-to-support-tflite-2-11.patch b/meta-digi-dey/dynamic-layers/stm32mpu-ai/recipes-frameworks/tflite-vx-delegate/tflite-vx-delegate/0001-tflite-vx-delegate-fix-to-support-tflite-2-11.patch new file mode 100644 index 000000000..af997e91d --- /dev/null +++ b/meta-digi-dey/dynamic-layers/stm32mpu-ai/recipes-frameworks/tflite-vx-delegate/tflite-vx-delegate/0001-tflite-vx-delegate-fix-to-support-tflite-2-11.patch @@ -0,0 +1,111 @@ +commit 7ac938965051de91c493b75a8825b007e1f52599 +Author: Feiyue Chen +Date: Thu Jul 6 10:41:35 2023 +0000 + + Fixed bugs for kernel test building + +diff --git a/tensorflow/lite/CMakeLists.txt b/tensorflow/lite/CMakeLists.txt +index 073b29c4860..67486fa183b 100644 +--- a/tensorflow/lite/CMakeLists.txt ++++ b/tensorflow/lite/CMakeLists.txt +@@ -209,6 +209,8 @@ list(FILTER TFLITE_SRCS EXCLUDE REGEX ".*tflite_with_xnnpack\\.cc$") + # Exclude Flex related files. + list(FILTER TFLITE_SRCS EXCLUDE REGEX ".*with_selected_ops\\.cc$") + ++list(FILTER TFLITE_SRCS EXCLUDE REGEX "tensorflow_profiler_logger\\.cc$") ++ + if(_TFLITE_ENABLE_MMAP) + list(FILTER TFLITE_SRCS EXCLUDE REGEX ".*mmap_allocation_disabled\\.cc$") + else() +diff --git a/tensorflow/lite/kernels/CMakeLists.txt b/tensorflow/lite/kernels/CMakeLists.txt +index f5e22ee97da..d0da2680e7b 100644 +--- a/tensorflow/lite/kernels/CMakeLists.txt ++++ b/tensorflow/lite/kernels/CMakeLists.txt +@@ -63,16 +63,16 @@ build_flatbuffers( + set(DELEGATE_PROVIDERS_SUPP + ${TFLITE_SOURCE_DIR}/nnapi/sl/SupportLibrary.cc + ${TFLITE_SOURCE_DIR}/tools/delegates/delegate_provider.cc +- ${TFLITE_SOURCE_DIR}/tools/evaluation/utils.cc ++ # ${TFLITE_SOURCE_DIR}/tools/evaluation/utils.cc + ) + + set(DELEGATE_PROVIDERS + ${DELEGATE_PROVIDERS_SUPP} + ${TFLITE_SOURCE_DIR}/tools/delegates/default_execution_provider.cc + # List of delegates referenced as options in the tensorflow/lite/CMakeLists.txt +- ${TFLITE_SOURCE_DIR}/tools/delegates/gpu_delegate_provider.cc ++ # ${TFLITE_SOURCE_DIR}/tools/delegates/gpu_delegate_provider.cc + ${TFLITE_SOURCE_DIR}/tools/delegates/nnapi_delegate_provider.cc +- ${TFLITE_SOURCE_DIR}/tools/delegates/xnnpack_delegate_provider.cc ++ # ${TFLITE_SOURCE_DIR}/tools/delegates/xnnpack_delegate_provider.cc + ) + + if(TFLITE_ENABLE_EXTERNAL_DELEGATE) +@@ -92,9 +92,9 @@ set(TEST_FRAMEWORK_SRC + ${TFLITE_SOURCE_DIR}/tools/tool_params.cc + ${TFLITE_SOURCE_DIR}/tools/versioning/op_version.cc + ${TFLITE_SOURCE_DIR}/tools/versioning/op_signature.cc +- ${TF_SOURCE_DIR}/core/platform/default/env_time.cc +- ${TF_SOURCE_DIR}/core/platform/default/logging.cc +- ${TF_SOURCE_DIR}/core/platform/default/mutex.cc ++ ${TF_SOURCE_DIR}/tsl/platform/default/env_time.cc ++ ${TF_SOURCE_DIR}/tsl/platform/default/logging.cc ++ ${TF_SOURCE_DIR}/tsl/platform/default/mutex.cc + internal/test_util.cc + acceleration_test_util.cc + acceleration_test_util_internal.cc +@@ -154,7 +154,8 @@ macro(add_kernel_test TEST_SRC TEST_LIB) + set(DELEGATE_TEST "${TEST_NAME}_delegate") + add_test( + NAME ${DELEGATE_TEST} +- COMMAND cmake -DTEST_EXECUTABLE=$ -P run-tests.cmake ++ # COMMAND cmake -DTEST_EXECUTABLE=$ -P run-tests.cmake ++ COMMAND cmake -DTEST_EXECUTABLE=$ -P ${TFLITE_SOURCE_DIR}/tools/cmake/test_utils/run-tests.cmake + ) + set_tests_properties(${DELEGATE_TEST} PROPERTIES LABELS "delegate") + endif() +diff --git a/tensorflow/lite/kernels/test_main.cc b/tensorflow/lite/kernels/test_main.cc +index 1887533399b..6e3958b77dc 100644 +--- a/tensorflow/lite/kernels/test_main.cc ++++ b/tensorflow/lite/kernels/test_main.cc +@@ -16,7 +16,6 @@ limitations under the License. + #include + + #include +-#include "benchmark/benchmark.h" // from @com_google_benchmark + #include "tensorflow/lite/kernels/test_delegate_providers.h" + #include "tensorflow/lite/kernels/test_util.h" + #include "tensorflow/lite/testing/util.h" +@@ -51,7 +50,6 @@ int main(int argc, char** argv) { + ::tflite::LogToStderr(); + if (InitKernelTest(&argc, argv)) { + ::testing::InitGoogleTest(&argc, argv); +- benchmark::RunSpecifiedBenchmarks(); + return RUN_ALL_TESTS(); + } else { + return EXIT_FAILURE; +diff --git a/tensorflow/lite/kernels/unidirectional_sequence_lstm_test.cc b/tensorflow/lite/kernels/unidirectional_sequence_lstm_test.cc +index cf3fd3a031a..e96f4e3f357 100644 +--- a/tensorflow/lite/kernels/unidirectional_sequence_lstm_test.cc ++++ b/tensorflow/lite/kernels/unidirectional_sequence_lstm_test.cc +@@ -18,7 +18,6 @@ limitations under the License. + + #include + #include +-#include "benchmark/benchmark.h" // from @com_google_benchmark + #include "flatbuffers/flatbuffers.h" // from @flatbuffers + #include "tensorflow/lite/kernels/test_util.h" + #include "tensorflow/lite/kernels/unidirectional_sequence_lstm_test_util.h" +diff --git a/tensorflow/lite/tools/cmake/modules/flatbuffers.cmake b/tensorflow/lite/tools/cmake/modules/flatbuffers.cmake +index 54b413f69ac..d7a2f8ce0f2 100644 +--- a/tensorflow/lite/tools/cmake/modules/flatbuffers.cmake ++++ b/tensorflow/lite/tools/cmake/modules/flatbuffers.cmake +@@ -23,7 +23,7 @@ OverridableFetchContent_Declare( + flatbuffers + GIT_REPOSITORY https://github.com/google/flatbuffers + # Sync with tensorflow/third_party/flatbuffers/workspace.bzl +- GIT_TAG v2.0.6 ++ GIT_TAG v2.0.8 + GIT_SHALLOW TRUE + GIT_PROGRESS TRUE + SOURCE_DIR "${CMAKE_BINARY_DIR}/flatbuffers" diff --git a/meta-digi-dey/dynamic-layers/stm32mpu-ai/recipes-frameworks/tflite-vx-delegate/tflite-vx-delegate_git.bb b/meta-digi-dey/dynamic-layers/stm32mpu-ai/recipes-frameworks/tflite-vx-delegate/tflite-vx-delegate_git.bb new file mode 100644 index 000000000..82c8fc38e --- /dev/null +++ b/meta-digi-dey/dynamic-layers/stm32mpu-ai/recipes-frameworks/tflite-vx-delegate/tflite-vx-delegate_git.bb @@ -0,0 +1,71 @@ +# Copyright 2020-2021 STMicroelectronics +DESCRIPTION = "Verisilicon TFLite VX Delegate for STM32 Devices" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=7d6260e4f3f6f85de05af9c8f87e6fb5" + +SRCBRANCH_vx = "main" +SRCREV_vx = "a975b7ed7a5797812d3c5bdb7310ee92164d0a35" + +SRCBRANCH_tf = "r2.11" +SRCREV_tf = "5d37bd0350f0144632629c1aa2ebaef6ca76300b" + +SRC_URI = "git://github.com/VeriSilicon/tflite-vx-delegate.git;branch=${SRCBRANCH_vx};name=vx;destsuffix=git_vx/;protocol=https \ + git://github.com/tensorflow/tensorflow;branch=${SRCBRANCH_tf};name=tf;destsuffix=git_tf/;protocol=https " +SRC_URI += "file://0001-tflite-vx-delegate-fix-to-support-tflite-2-11.patch;patchdir=${WORKDIR}/git_tf" + +PV = "2.11.0+git${SRCREV_vx}" +S = "${WORKDIR}/git_vx" +COMPATIBLE_MACHINE = "stm32mp25common" + +inherit cmake +DEPENDS += "tim-vx patchelf-native" + +python () { + #Get major of the PV variable + version = d.getVar('PV') + version = version.split("+") + version_base = version[0] + version = version_base.split(".") + major = version[0] + d.setVar('MAJOR', major) + d.setVar('PVB', version_base) +} + +do_configure[network] = "1" + +do_configure:prepend() { + if [ -n "${http_proxy}" ]; then + export HTTP_PROXY=${http_proxy} + export http_proxy=${http_proxy} + fi + if [ -n "${https_proxy}" ]; then + export HTTPS_PROXY=${https_proxy} + export https_proxy=${https_proxy} + fi + unset FC +} + +EXTRA_OECMAKE += " -DFETCHCONTENT_SOURCE_DIR_TENSORFLOW=${WORKDIR}/git_tf \ + -DTIM_VX_INSTALL=${STAGING_DIR_TARGET}/usr \ + -DTFLITE_ENABLE_XNNPACK=OFF \ + -DTFLITE_ENABLE_EXTERNAL_DELEGATE=ON \ + -DFETCHCONTENT_FULLY_DISCONNECTED=OFF \ +" + +do_install() { + # Install libvx_delegate.so into libdir + install -d ${D}${libdir} + install -d ${D}${includedir}/VX + install -m 0755 ${WORKDIR}/build/libvx_delegate.so ${D}${libdir}/libvx_delegate.so.${PVB} + patchelf --set-soname libvx_delegate.so ${D}${libdir}/libvx_delegate.so.${PVB} + ln -sf libvx_delegate.so.${PVB} ${D}${libdir}/libvx_delegate.so.${MAJOR} + ln -sf libvx_delegate.so.${PVB} ${D}${libdir}/libvx_delegate.so + + # Install cusom static lib + install -m 0755 libvx_custom_op.a ${D}${libdir}/libvx_custom_op.a + install -m 0644 ${S}/vsi_npu_custom_op.h ${D}${includedir}/VX/vsi_npu_custom_op.h +} + +FILES:${PN} += " ${libdir}/libvx_delegate.so.${MAJOR} \ + ${libdir}/libvx_delegate.so.${PVB} \ +" diff --git a/meta-digi-dey/dynamic-layers/stm32mpu-ai/recipes-frameworks/tim-vx/tim-vx/0001-tim-vx-tests-disable-AVG_ANDROID-tests.patch b/meta-digi-dey/dynamic-layers/stm32mpu-ai/recipes-frameworks/tim-vx/tim-vx/0001-tim-vx-tests-disable-AVG_ANDROID-tests.patch new file mode 100644 index 000000000..63c4e61d9 --- /dev/null +++ b/meta-digi-dey/dynamic-layers/stm32mpu-ai/recipes-frameworks/tim-vx/tim-vx/0001-tim-vx-tests-disable-AVG_ANDROID-tests.patch @@ -0,0 +1,59 @@ +From 23cdc22779175fea6d73848a98e85702d99051c9 Mon Sep 17 00:00:00 2001 +From: Maxence GUILHIN +Date: Mon, 4 Dec 2023 11:19:21 +0100 +Subject: [PATCH 1/1] tim-vx-tests : disable AVG_ANDROID tests which fails with + tensor HDL OFF + +Signed-off-by: Maxence GUILHIN +--- + src/tim/transform/average_pool_layout_infer_test.cc | 2 +- + src/tim/vx/ops/avg_pool_test.cc | 6 +++--- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/src/tim/transform/average_pool_layout_infer_test.cc b/src/tim/transform/average_pool_layout_infer_test.cc +index 0ff8115..07048f3 100644 +--- a/src/tim/transform/average_pool_layout_infer_test.cc ++++ b/src/tim/transform/average_pool_layout_infer_test.cc +@@ -4,7 +4,7 @@ + #include "tim/transform/layout_inference.h" + + #include "gtest/gtest.h" +-TEST(AVG_ANDROID, layout_infer_) { ++TEST(AVG_ANDROID, DISABLED_layout_infer_) { + auto ctx = tim::vx::Context::Create(); + auto graph = ctx->CreateGraph(); + +diff --git a/src/tim/vx/ops/avg_pool_test.cc b/src/tim/vx/ops/avg_pool_test.cc +index 3a9aed8..3f3f17d 100644 +--- a/src/tim/vx/ops/avg_pool_test.cc ++++ b/src/tim/vx/ops/avg_pool_test.cc +@@ -463,7 +463,7 @@ TEST(AVG, shape_60_52_3_5_fp32_kernel_35_stride_5) { + ArraysMatch(golden, output,1e-4f); + } + +-TEST(AVG_ANDROID, shape_60_52_3_5_fp32_kernel_35_stride_5) { ++TEST(AVG_ANDROID, DISABLED_shape_60_52_3_5_fp32_kernel_35_stride_5) { + auto ctx = tim::vx::Context::Create(); + auto graph = ctx->CreateGraph(); + +@@ -529,7 +529,7 @@ TEST(AVG_ANDROID, shape_60_52_3_5_fp32_kernel_35_stride_5) { + ArraysMatch(golden, output, 1e-5f); + } + +-TEST(AVG_ANDROID, shape_60_52_3_5_fp32_kernel_50_stride_5) { ++TEST(AVG_ANDROID, DISABLED_shape_60_52_3_5_fp32_kernel_50_stride_5) { + auto ctx = tim::vx::Context::Create(); + auto graph = ctx->CreateGraph(); + +@@ -578,7 +578,7 @@ TEST(AVG_ANDROID, shape_60_52_3_5_fp32_kernel_50_stride_5) { + ArraysMatch(golden, output, 1e-5f); + } + +-TEST(AVG_ANDROID, shape_60_52_3_5_uint8_kernel_35_stride_5) { ++TEST(AVG_ANDROID, DISABLED_shape_60_52_3_5_uint8_kernel_35_stride_5) { + auto ctx = tim::vx::Context::Create(); + auto graph = ctx->CreateGraph(); + +-- +2.25.1 + diff --git a/meta-digi-dey/dynamic-layers/stm32mpu-ai/recipes-frameworks/tim-vx/tim-vx_git.bb b/meta-digi-dey/dynamic-layers/stm32mpu-ai/recipes-frameworks/tim-vx/tim-vx_git.bb new file mode 100644 index 000000000..ed472b1cc --- /dev/null +++ b/meta-digi-dey/dynamic-layers/stm32mpu-ai/recipes-frameworks/tim-vx/tim-vx_git.bb @@ -0,0 +1,105 @@ +DESCRIPTION = "TIM-VX is a software integration module provided by VeriSilicon to facilitate \ +deployment of Neural-Networks on OpenVX enabled ML accelerators. It serves as the backend \ +binding for runtime frameworks such as Android NN, Tensorflow-Lite, MLIR, TVM and more." +SUMMARY = "Tensor Interface Module for OpenVX" +HOMEPAGE = "https://github.com/VeriSilicon/TIM-VX" +LICENSE = "MIT" + +LIC_FILES_CHKSUM = "file://LICENSE;md5=d72cd187d764d96d91db827cb65b48a7" + +SRCBRANCH_tim_vx = "main" +SRCREV_tim_vx = "33f3a4f176ff9c407479eaf6be78c52bb3c7a939" +SRC_URI ="git://github.com/VeriSilicon/TIM-VX.git;branch=${SRCBRANCH_tim_vx};name=tim_vx;destsuffix=tim_vx_git/;protocol=https" +SRC_URI += " file://0001-tim-vx-tests-disable-AVG_ANDROID-tests.patch" + + +SRCBRANCH_googletest = "main" +SRCREV_googletest = "eab0e7e289db13eabfc246809b0284dac02a369d" +SRC_URI +="git://github.com/google/googletest;branch=${SRCBRANCH_googletest};name=googletest;destsuffix=googletest/;protocol=https " + + +PV = "1.1.57+git${SRCREV_tim_vx}" +PV_googletest = "1.14.0" + +S = "${WORKDIR}/tim_vx_git" + +# Only compatible with stm32mp25 +COMPATIBLE_MACHINE = "stm32mp25common" + +python () { + #Get major of the PV variable + version = d.getVar('PV') + version = version.split("+") + version_base = version[0] + version = version_base.split(".") + major = version[0] + d.setVar('MAJOR', major) + d.setVar('PVB', version_base) +} + +inherit cmake +DEPENDS += " patchelf-native \ + gcnano-driver-stm32mp \ + gcnano-userland \ + gtest \ + googletest \ + " + +EXTRA_OECMAKE = " \ + -DCONFIG=YOCTO \ + -DCMAKE_SYSROOT=${RECIPE_SYSROOT} \ + -DTIM_VX_ENABLE_TEST=ON \ + -DCMAKE_SKIP_RPATH=TRUE \ + -DFETCHCONTENT_FULLY_DISCONNECTED=OFF \ + -DTIM_VX_USE_EXTERNAL_OVXLIB=ON \ + -DTIM_VX_DBG_ENABLE_TENSOR_HNDL=OFF \ + -DOVXLIB_INC=${S}/src/tim/vx/internal/include/ \ + -DOVXLIB_LIB=${STAGING_LIBDIR}/libovxlib.so \ + -DFETCHCONTENT_SOURCE_DIR_GOOGLETEST=${WORKDIR}/googletest \ +" +do_configure[network] = "1" + +do_install() { + # Install libtim-vx.so into libdir + install -d ${D}${libdir} + install -d ${D}/usr/local/bin/${PN}-${PVB} + install -d ${D}/home/weston + + install -m 0755 ${WORKDIR}/build/src/tim/libtim-vx.so ${D}${libdir}/libtim-vx.so.${PVB} + patchelf --set-soname libtim-vx.so ${D}${libdir}/libtim-vx.so.${PVB} + + ln -sf libtim-vx.so.${PVB} ${D}${libdir}/libtim-vx.so.${MAJOR} + ln -sf libtim-vx.so.${PVB} ${D}${libdir}/libtim-vx.so + + # Install other libraries for benchmark + install -m 0755 ${WORKDIR}/build/lib/libgtest_main.so ${D}${libdir}/libgtest_main.so.${PV_googletest} + install -m 0755 ${WORKDIR}/build/lib/libgtest.so ${D}${libdir}/libgtest.so.${PV_googletest} + install -m 0755 ${WORKDIR}/build/lib/libgmock_main.so ${D}${libdir}/libgmock_main.so + install -m 0755 ${WORKDIR}/build/lib/libgmock.so ${D}${libdir}/libgmock.so + install -m 0755 ${WORKDIR}/build/src/tim/unit_test ${D}/usr/local/bin/${PN}-${PVB}/TIM-VX_test + + # Include + install -d ${D}${includedir} + cp -r ${S}/include/tim ${D}${includedir} + cp -r ${STAGING_INCDIR}/CL/cl_viv_vx_ext.h ${D}/usr/local/bin/${PN}-${PVB}/cl_viv_vx_ext.h + cp -r ${STAGING_INCDIR}/CL/cl_viv_vx_ext.h ${D}/home/weston/cl_viv_vx_ext.h +} + +PACKAGES =+ "${PN}-tools" +FILES_SOLIBSDEV = "" + +FILES:${PN}-tools = " /usr/local/bin/${PN}-${PVB}/TIM-VX_test \ + /usr/local/bin/${PN}-${PVB}/cl_viv_vx_ext.h \ + /home/weston/cl_viv_vx_ext.h \ + ${libdir}/libgtest_main.so.${PV_googletest} \ + ${libdir}/libgtest.so.${PV_googletest} \ + ${libdir}/libgmock_main.so \ + ${libdir}/libgmock.so \ +" + +FILES:${PN} += " ${libdir}/libtim-vx.so.${MAJOR} \ + ${libdir}/libtim-vx.so.${PVB} \ + ${libdir}/libtim-vx.so \ +" + +INSANE_SKIP:${PN} += " dev-so " \ No newline at end of file diff --git a/meta-digi-dey/dynamic-layers/stm32mpu-ai/recipes-st/packagegroups/packagegroup-x-linux-ai.bbappend b/meta-digi-dey/dynamic-layers/stm32mpu-ai/recipes-st/packagegroups/packagegroup-x-linux-ai.bbappend index b331021b3..b63694670 100644 --- a/meta-digi-dey/dynamic-layers/stm32mpu-ai/recipes-st/packagegroups/packagegroup-x-linux-ai.bbappend +++ b/meta-digi-dey/dynamic-layers/stm32mpu-ai/recipes-st/packagegroups/packagegroup-x-linux-ai.bbappend @@ -32,4 +32,5 @@ RDEPENDS:packagegroup-x-linux-ai-tflite:append:ccmp25 = " \ tflite-object-detection-python \ tflite-pose-estimation-python \ tflite-semantic-segmentation-python \ + tim-vx \ " diff --git a/meta-digi-dey/recipes-connectivity/bluez/bluez5-init/ccimx9/bluetooth-init b/meta-digi-dey/recipes-connectivity/bluez/bluez5-init/ccimx9/bluetooth-init index 7d4b630d9..687b8cff2 100644 --- a/meta-digi-dey/recipes-connectivity/bluez/bluez5-init/ccimx9/bluetooth-init +++ b/meta-digi-dey/recipes-connectivity/bluez/bluez5-init/ccimx9/bluetooth-init @@ -66,8 +66,12 @@ bluetooth_start() { } bluetooth_stop() { - # Remove the kernel module - rmmod "${MODULE_NAME}" + # + # The btnxpuart driver hits a null pointer dereference on module + # unloading when the interface is down. So as a workaround, make + # sure the interface is UP before unloading the module. + # + hciconfig "${HCI_IFACE}" up && rmmod "${MODULE_NAME}" power 0 } diff --git a/meta-digi-dey/recipes-connectivity/bluez/bluez5-init/ccimx9/bluetooth-init.service b/meta-digi-dey/recipes-connectivity/bluez/bluez5-init/ccimx9/bluetooth-init.service index cc1b54a0f..adc369562 100644 --- a/meta-digi-dey/recipes-connectivity/bluez/bluez5-init/ccimx9/bluetooth-init.service +++ b/meta-digi-dey/recipes-connectivity/bluez/bluez5-init/ccimx9/bluetooth-init.service @@ -1,7 +1,8 @@ [Unit] Description=Initialization of the IW612 bluetooth chip ConditionPathIsDirectory=/proc/device-tree/bluetooth -After=systemd-udev-settle.service bluetooth.service +After=systemd-udev-settle.service +Before=bluetooth.service [Service] Type=oneshot diff --git a/meta-digi-dey/recipes-digi/cccs/cccs_git.bb b/meta-digi-dey/recipes-digi/cccs/cccs_git.bb index a929409b3..90ff757f7 100644 --- a/meta-digi-dey/recipes-digi/cccs/cccs_git.bb +++ b/meta-digi-dey/recipes-digi/cccs/cccs_git.bb @@ -88,7 +88,7 @@ do_install:append:ccimx6ul() { fi } -pkg_postinst_ontarget:${PN}() { +pkg_postinst_ontarget:${PN}-daemon() { # If dualboot is enabled, change the CCCSD download path and set on the fly to yes on the first boot if [ "$(fw_printenv -n dualboot 2>/dev/null)" = "yes" ]; then sed -i "/firmware_download_path = \/mnt\/update/c\firmware_download_path = \/home\/root" /etc/cccs.conf @@ -96,6 +96,7 @@ pkg_postinst_ontarget:${PN}() { fi } +REMOVE_POSTINST_RPN = "${PN}-daemon" inherit ${@bb.utils.contains("IMAGE_FEATURES", "read-only-rootfs", "remove-pkg-postinst-ontarget", \ oe.utils.ifelse(d.getVar("CCCS_CONF_PATH"), "remove-pkg-postinst-ontarget", ""), d)} @@ -152,15 +153,21 @@ CONFFILES:${PN}-daemon += "${sysconfdir}/cccs.conf" CONFFILES:${PN}-legacy += "${sysconfdir}/cc.conf" -RDEPENDS:${PN}-daemon = "${PN} ${PN}-cert" +# 'cccsd-init' script uses '/etc/init.d/functions' +RDEPENDS:${PN}-daemon = " \ + ${PN} \ + ${PN}-cert \ + initscripts-functions \ + libubootenv \ +" -RDEPENDS:${PN}-gs-demo = "${PN}-daemon" +# 'cccsd-gs-demo-init' script uses '/etc/init.d/functions' +RDEPENDS:${PN}-gs-demo = " \ + ${PN}-daemon \ + initscripts-functions \ +" RDEPENDS:${PN}-legacy = "${PN} ${PN}-cert" -# 'cccsd-init' and 'cccs-gs-demo-init' scripts use '/etc/init.d/functions' -RDEPENDS:${PN}-daemon += "initscripts-functions" -RDEPENDS:${PN}-gs-demo += "initscripts-functions" - # Disable extra compilation checks from SECURITY_CFLAGS to avoid build errors lcl_maybe_fortify:pn-cccs = "" diff --git a/meta-digi-dey/recipes-digi/swu-images/files/update_files.sh b/meta-digi-dey/recipes-digi/swu-images/files/update_files.sh index 9d28629ec..83de89ba2 100755 --- a/meta-digi-dey/recipes-digi/swu-images/files/update_files.sh +++ b/meta-digi-dey/recipes-digi/swu-images/files/update_files.sh @@ -22,9 +22,9 @@ fi # Variables. FS_TYPE="ext4" -LINUX_DEV_BLOCK="/dev/mmcblk0p1" +LINUX_DEV_BLOCK="/dev/mmcblk0p$(fdisk -l /dev/mmcblk0 | sed -ne "s,^[^0-9]*\([0-9]\+\).*\.*,\1,g;T;p")" LINUX_MOUNT_POINT="/mnt/linux" -ROOTFS_DEV_BLOCK="/dev/mmcblk0p3" +ROOTFS_DEV_BLOCK="/dev/mmcblk0p$(fdisk -l /dev/mmcblk0 | sed -ne "s,^[^0-9]*\([0-9]\+\).*\.*,\1,g;T;p")" ROOTFS_MOUNT_POINT="/system" # Determines whether the file system type is UBI or not. diff --git a/meta-digi-dey/recipes-digi/swu-images/files/update_rdiff.sh b/meta-digi-dey/recipes-digi/swu-images/files/update_rdiff.sh index aca86d7f5..c65f630c4 100755 --- a/meta-digi-dey/recipes-digi/swu-images/files/update_rdiff.sh +++ b/meta-digi-dey/recipes-digi/swu-images/files/update_rdiff.sh @@ -31,11 +31,9 @@ fi # Variables. BLOCK_SIZE=4096 -ROOTFS_NAME="rootfs" ROOTFS_SOURCE_ENDPOINT="/dev/rdiff_source_rootfs" -ROOTFS_DEV_BLOCK="mmcblk0p3" -ROOTFS_DEV_BLOCK_A="mmcblk0p3" -ROOTFS_DEV_BLOCK_B="mmcblk0p4" +ROOTFS_DEV_BLOCK_A="mmcblk0p$(fdisk -l /dev/mmcblk0 | sed -ne "s,^[^0-9]*\([0-9]\+\).*\.*,\1,g;T;p")" +ROOTFS_DEV_BLOCK_B="mmcblk0p$(fdisk -l /dev/mmcblk0 | sed -ne "s,^[^0-9]*\([0-9]\+\).*\.*,\1,g;T;p")" # Determines whether the file system type is UBIFS or not. is_ubifs() { @@ -141,22 +139,15 @@ get_ubi_volume() { # For this reason, hook the source update to a well known endpoint and just create the # required link from the running system once all the information is available. create_source_endpoint() { - # Initialize vars. Assume system is MMC based. - local rootfs_source_partiton="${ROOTFS_NAME}" - local rootfs_source_dev="${ROOTFS_DEV_BLOCK}" - # Remove previous link. [ -L "${ROOTFS_SOURCE_ENDPOINT}" ] && unlink "${ROOTFS_SOURCE_ENDPOINT}" - # Update variables for dualboot systems. - if is_dualboot; then - local active_part="$(get_active_system)" - rootfs_source_partiton="${rootfs_source_partiton}_${active_part}" - if [ "${active_part}" = "a" ]; then - rootfs_source_dev=${ROOTFS_DEV_BLOCK_A} - else - rootfs_source_dev=${ROOTFS_DEV_BLOCK_B} - fi + local active_part="$(get_active_system)" + rootfs_source_partiton="rootfs_${active_part}" + if [ "${active_part}" = "a" ]; then + rootfs_source_dev=${ROOTFS_DEV_BLOCK_A} + else + rootfs_source_dev=${ROOTFS_DEV_BLOCK_B} fi # Update variables for MTD systems. diff --git a/meta-digi-dey/recipes-digi/swu-images/swu.inc b/meta-digi-dey/recipes-digi/swu-images/swu.inc index fd79434a4..5fea641f9 100644 --- a/meta-digi-dey/recipes-digi/swu-images/swu.inc +++ b/meta-digi-dey/recipes-digi/swu-images/swu.inc @@ -80,7 +80,7 @@ python do_swuimage:prepend() { } # Upgrade available. -UPGRADE_AVAILABLE = "" +UPGRADE_AVAILABLE = "0" UPGRADE_AVAILABLE:ccimx6 = "1" # Create and fill 'sw-description' file.