From 71f282e8dc7284431cd6d0305370cc8e450d4463 Mon Sep 17 00:00:00 2001 From: Richard Burton Date: Thu, 1 Dec 2022 12:31:23 +0000 Subject: MLECO-3620 MLECO-3619: Update to 22.11 dependencies * CMSIS-NN is now a seperate dependency * Added inclusive language commitment * TensorFlow Lite Micro dependency is moved ahead of 22.11 to fix compilation issue Change-Id: I60e3311ff7da2ce064cbcdca054a86bdd1f620d8 --- .gitmodules | 3 +++ CMakeLists.txt | 2 +- Readme.md | 4 ++++ dependencies/cmsis | 2 +- dependencies/cmsis-dsp | 2 +- dependencies/cmsis-nn | 1 + dependencies/core-driver | 2 +- dependencies/core-platform | 2 +- dependencies/tensorflow | 2 +- docs/quick_start.md | 2 +- docs/sections/building.md | 2 +- download_dependencies.py | 13 ++++++++----- release_notes.txt | 20 +++++++++++--------- scripts/cmake/common_user_options.cmake | 6 +++++- scripts/cmake/tensorflow.cmake | 3 ++- set_up_default_resources.py | 14 +++++++------- source/application/api/common/include/Model.hpp | 1 - .../api/common/include/TensorFlowLiteMicro.hpp | 6 ++---- source/application/api/common/source/Model.cc | 18 +++++++----------- .../use_case/object_detection/src/UseCaseHandler.cc | 4 ++-- source/use_case/vww/src/UseCaseHandler.cc | 2 +- 21 files changed, 61 insertions(+), 50 deletions(-) create mode 160000 dependencies/cmsis-nn diff --git a/.gitmodules b/.gitmodules index fb89583..8601853 100644 --- a/.gitmodules +++ b/.gitmodules @@ -13,3 +13,6 @@ [submodule "dependencies/cmsis-dsp"] path = dependencies/cmsis-dsp url = https://github.com/ARM-software/CMSIS-DSP.git +[submodule "dependencies/cmsis-nn"] + path = dependencies/cmsis-nn + url = https://github.com/ARM-software/CMSIS-NN.git diff --git a/CMakeLists.txt b/CMakeLists.txt index c7ce6dd..91568f8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ #---------------------------------------------------------------------------- -# SPDX-FileCopyrightText: Copyright 2021 - 2022 Arm Limited and/or its affiliates +# SPDX-FileCopyrightText: Copyright 2021-2022 Arm Limited and/or its affiliates # SPDX-License-Identifier: Apache-2.0 # # Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/Readme.md b/Readme.md index aedada6..c907065 100644 --- a/Readme.md +++ b/Readme.md @@ -23,6 +23,10 @@ To run evaluations using this software, we suggest using: > **NOTE**: While Arm® Corstone™-300 is available as an [Ecosystem FVP](https://developer.arm.com/tools-and-software/open-source-software/arm-platforms-software/arm-ecosystem-fvps) > and AVH, Arm® Corstone™-310 is available (for both Arm® Ethos™-U55 and Ethos™-U65 NPUs) only as AVH implementations. +## Inclusive language commitment +This product conforms to Arm's inclusive language policy and, to the best of our knowledge, +does not contain any non-inclusive language. If you find something that concerns you, email terms@arm.com. + ## Overview of the evaluation kit The purpose of this evaluation kit is to allow users to develop software and test the performance of the Arm® Ethos-U NPU and diff --git a/dependencies/cmsis b/dependencies/cmsis index ed78d6b..81564cf 160000 --- a/dependencies/cmsis +++ b/dependencies/cmsis @@ -1 +1 @@ -Subproject commit ed78d6b78766d71cfe0431149f2f261d1c7277a1 +Subproject commit 81564cfb339ebf9def167a50693733f8a1e1471e diff --git a/dependencies/cmsis-dsp b/dependencies/cmsis-dsp index 305b12c..43aa2a9 160000 --- a/dependencies/cmsis-dsp +++ b/dependencies/cmsis-dsp @@ -1 +1 @@ -Subproject commit 305b12c4a7b6519fdb979d1ca6850582c7dfcad8 +Subproject commit 43aa2a9e7fc080e0d7541e9f5e083258403ac9ee diff --git a/dependencies/cmsis-nn b/dependencies/cmsis-nn new file mode 160000 index 0000000..ca5dc34 --- /dev/null +++ b/dependencies/cmsis-nn @@ -0,0 +1 @@ +Subproject commit ca5dc34313be2ee5c46652917c30baac96c52621 diff --git a/dependencies/core-driver b/dependencies/core-driver index 90ada2e..68b5c91 160000 --- a/dependencies/core-driver +++ b/dependencies/core-driver @@ -1 +1 @@ -Subproject commit 90ada2ea5681b2a2722a10d2898eac34c2510791 +Subproject commit 68b5c91c22d11f3410f520cfb69ce6c5848f2f4a diff --git a/dependencies/core-platform b/dependencies/core-platform index fc42c71..a847621 160000 --- a/dependencies/core-platform +++ b/dependencies/core-platform @@ -1 +1 @@ -Subproject commit fc42c71353d15c564558249bd4f13350119ab6a9 +Subproject commit a847621e6c12eb0e36daeece578320a0bfc1e366 diff --git a/dependencies/tensorflow b/dependencies/tensorflow index 67e9d8f..28770e4 160000 --- a/dependencies/tensorflow +++ b/dependencies/tensorflow @@ -1 +1 @@ -Subproject commit 67e9d8f60d3e37ab02f94a93f016179ef5e96cb6 +Subproject commit 28770e4cac1e5dae85b55a0d47d5315d35755d04 diff --git a/docs/quick_start.md b/docs/quick_start.md index d7afae7..37002ad 100644 --- a/docs/quick_start.md +++ b/docs/quick_start.md @@ -71,7 +71,7 @@ mkdir resources_downloaded && cd resources_downloaded python3 -m venv env env/bin/python3 -m pip install --upgrade pip env/bin/python3 -m pip install --upgrade setuptools -env/bin/python3 -m pip install ethos-u-vela==3.5.0 +env/bin/python3 -m pip install ethos-u-vela==3.6.0 cd .. curl -L https://github.com/ARM-software/ML-zoo/raw/7c32b097f7d94aae2cd0b98a8ed5a3ba81e66b18/models/anomaly_detection/micronet_medium/tflite_int8/ad_medium_int8.tflite \ diff --git a/docs/sections/building.md b/docs/sections/building.md index cac66c3..42b0daa 100644 --- a/docs/sections/building.md +++ b/docs/sections/building.md @@ -700,7 +700,7 @@ After compiling, your custom model has now replaced the default one in the appli > . > The source code is hosted on . -> **Note:** Using the 22.08 versions of software dependencies will require Vela to be at least version 3.5.0 +> **Note:** Using the 22.11 versions of software dependencies will require Vela to be at least version 3.6.0 > or you may encounter issues when trying to run applications on different variants of Ethos-U NPUs. The Vela compiler is a tool that can optimize a neural network model into a version that can run on an embedded system diff --git a/download_dependencies.py b/download_dependencies.py index 23afe8d..280292f 100755 --- a/download_dependencies.py +++ b/download_dependencies.py @@ -24,11 +24,12 @@ from urllib.request import urlopen from zipfile import ZipFile from pathlib import Path -TF = "https://github.com/tensorflow/tflite-micro/archive/67e9d8f60d3e37ab02f94a93f016179ef5e96cb6.zip" -CMSIS = "https://github.com/ARM-software/CMSIS_5/archive/ed78d6b78766d71cfe0431149f2f261d1c7277a1.zip" -CMSIS_DSP = "https://github.com/ARM-software/CMSIS-DSP/archive/refs/tags/v1.11.0.zip" -ETHOS_U_CORE_DRIVER = "https://git.mlplatform.org/ml/ethos-u/ethos-u-core-driver.git/snapshot/ethos-u-core-driver-22.08.tar.gz" -ETHOS_U_CORE_PLATFORM = "https://git.mlplatform.org/ml/ethos-u/ethos-u-core-platform.git/snapshot/ethos-u-core-platform-22.08.tar.gz" +TF = "https://github.com/tensorflow/tflite-micro/archive/28770e4cac1e5dae85b55a0d47d5315d35755d04.zip" +CMSIS = "https://github.com/ARM-software/CMSIS_5/archive/81564cfb339ebf9def167a50693733f8a1e1471e.zip" +CMSIS_DSP = "https://github.com/ARM-software/CMSIS-DSP/archive/refs/tags/v1.14.2.zip" +CMSIS_NN = "https://github.com/ARM-software/CMSIS-NN/archive/refs/tags/v4.0.0.zip" +ETHOS_U_CORE_DRIVER = "https://git.mlplatform.org/ml/ethos-u/ethos-u-core-driver.git/snapshot/ethos-u-core-driver-22.11.tar.gz" +ETHOS_U_CORE_PLATFORM = "https://git.mlplatform.org/ml/ethos-u/ethos-u-core-platform.git/snapshot/ethos-u-core-platform-22.11.tar.gz" def download(url_file: str, post_process=None): @@ -70,6 +71,8 @@ def main(dependencies_path: Path): lambda file: unzip(file.name, to_path=dependencies_path / "cmsis")) download(CMSIS_DSP, lambda file: unzip(file.name, to_path=dependencies_path / "cmsis-dsp")) + download(CMSIS_NN, + lambda file: unzip(file.name, to_path=dependencies_path / "cmsis-nn")) download(ETHOS_U_CORE_DRIVER, lambda file: untar(file.name, to_path=dependencies_path / "core-driver")) download(ETHOS_U_CORE_PLATFORM, diff --git a/release_notes.txt b/release_notes.txt index 9a8bbc0..9b9ea93 100644 --- a/release_notes.txt +++ b/release_notes.txt @@ -1,4 +1,6 @@ Changes in 22.11 + * Support for 22.11 NPU components and dependencies (core-driver, core-platform, Vela 3.6.0, CMSIS, TensorFlow Lite Micro) + * CMSIS-NN is added as a new dependency due to it moving out of the core CMSIS repository. * Updates for Arm® Corstone™-310 platform. * Formal support for CMake presets. * Support for the new Arm Compiler 6.19 @@ -6,7 +8,7 @@ Changes in 22.11 * Bug fix for building with NPU disabled. Changes in 22.08 - * Support for 22.08 Ethos-U component and dependencies (core-driver, core-platform, Vela 3.5.0, CMSIS, TensorFlow Lite Micro). + * Support for 22.08 NPU component and dependencies (core-driver, core-platform, Vela 3.5.0, CMSIS, TensorFlow Lite Micro). * Formal support for Arm® Corstone-310 Arm Virtual Hardware and FPGA implementations. * Added CMake presets. * Bug fix for Arm® Ethos-U65 NPU's default AXI burst length. @@ -14,7 +16,7 @@ Changes in 22.08 * Documentation updates. Changes in 22.05 - * Support for 22.05 Ethos-U component and dependencies (core-driver, core-platform, Vela 3.4.0, CMSIS, TensorFlow Lite Micro). + * Support for 22.05 NPU component and dependencies (core-driver, core-platform, Vela 3.4.0, CMSIS, TensorFlow Lite Micro). * Restructuring of repository sources to allow generation of CMSIS packs. * Added support for Arm Cortex-M85, Armclang 6.18 is required * Reduce minimum requirements of Python to 3.7 to align with Vela 3.4.0. @@ -23,7 +25,7 @@ Changes in 22.05 * Various bug fixes. Changes in 22.02 - * Support for 22.02 Ethos-U component and dependencies (core-driver, core-platform, Vela 3.3.0, CMSIS, TensorFlow Lite Micro). + * Support for 22.02 NPU component and dependencies (core-driver, core-platform, Vela 3.3.0, CMSIS, TensorFlow Lite Micro). * Added Object Detection use case. * Replace DSCNN with MicroNet for KWS and KWS_ASR use cases. * Increase minimum requirements of CMake to 3.15.6, Armclang to 6.16 and Python to 3.8 @@ -32,7 +34,7 @@ Changes in 22.02 * Various minor bug fixes. Changes in 21.11 - * Support for 21.11 Ethos-U component and dependencies (core-software, core-driver, Vela 3.2.0, CMSIS, TensorFlow Lite). + * Support for 21.11 NPU component and dependencies (core-software, core-driver, Vela 3.2.0, CMSIS, TensorFlow Lite Micro). * Added dynamic load support for FVP for inference runner use-case. * Added support for different memory modes: Shared_Sram, Dedicated_Sram and Sram_Only. * Added Noise Reduction use case. @@ -41,10 +43,10 @@ Changes in 21.11 * Changes to support AN552 design - the new Arm® Corstone™-300 implementation. Changes in 21.08 - * Support for 21.05 Ethos-U component (core-software, core-driver, Vela 3.0.0). + * Support for 21.05 NPU component (core-software, core-driver, Vela 3.0.0). * TensorFlow submodule changed to https://github.com/tensorflow/tflite-micro (tested with TensorFlow Lite Micro commit hash: f510d38d0eaa3195ce3af66e3f32648740f08afb). * Image classification model changed (from uint8 to int8 datatype). - * Documentation updates, added support to Corstone-300 + Ethos-U65. + * Documentation updates, added support to Corstone-300 + Arm® Ethos-U65. * Various scripts improvements. * Added Visual Wake Word use case. @@ -65,7 +67,7 @@ Changes in 21.03 Changes in 20.11 * SSE-200 and SSE-300 system support was added. - * Support for simple fixed virtual platform for Ethos-U55 and Cortex-M55 removed. + * Support for simple fixed virtual platform for Arm® Ethos-U55 and Arm® Cortex-M55 removed. * Build cmake parameters changed: TARGET_SUBSYSTEM was added, TARGET_PLATFORM accepted values were changed. * Models with multiple output tensors support was added. * Generic inference runner use-case added. @@ -74,7 +76,7 @@ Changes in 20.11 Changes in 20.09 release: * Support for TensorFlow Lite Micro version > 2.3.0 (tested with TensorFlow Lite Micro 2.4.0 commit hash: 5bbb8a2bd1def6865b1510175a3da5fd12387e10) * Added speech recognition use case example. - * Updated Ethos-U55 Fastmodel version to r0p2-00eac0-rc4 + * Updated NPU Fastmodel version to r0p2-00eac0-rc4 Changes in 20.08 release: * Added keyword spotting use case example. @@ -88,7 +90,7 @@ Changes in 20.05 release: * Configurable timing-adaptor. * Added Active and Idle cycle counts for NPU and CPU profiling report. * Source code structure and build scripts refactored to support multiple ML use-cases. - * Used EAC Ethos-U55 software model and drivers. + * Used EAC NPU software model and drivers. * Windows support for build scripts. Known issues: * telnet connection to FastModel environment may hang after some period of inactivity. diff --git a/scripts/cmake/common_user_options.cmake b/scripts/cmake/common_user_options.cmake index 3e1206d..97e9b40 100644 --- a/scripts/cmake/common_user_options.cmake +++ b/scripts/cmake/common_user_options.cmake @@ -88,9 +88,13 @@ if (NOT TARGET_PLATFORM STREQUAL native) "${DEPENDENCY_ROOT_DIR}/cmsis" PATH) USER_OPTION(CMSIS_DSP_SRC_PATH - "Path to CMSIS-5 DSP sources" + "Path to CMSIS-5 DSP sources" "${DEPENDENCY_ROOT_DIR}/cmsis-dsp" PATH) + USER_OPTION(CMSIS_NN_SRC_PATH + "Path to CMSIS-5 NN sources" + "${DEPENDENCY_ROOT_DIR}/cmsis-nn" + PATH) # If we need NPU libraries: if (ETHOS_U_NPU_ENABLED) diff --git a/scripts/cmake/tensorflow.cmake b/scripts/cmake/tensorflow.cmake index 4b50ed0..d807416 100644 --- a/scripts/cmake/tensorflow.cmake +++ b/scripts/cmake/tensorflow.cmake @@ -1,5 +1,5 @@ #---------------------------------------------------------------------------- -# SPDX-FileCopyrightText: Copyright 2021 - 2022 Arm Limited and/or its affiliates +# SPDX-FileCopyrightText: Copyright 2021-2022 Arm Limited and/or its affiliates # SPDX-License-Identifier: Apache-2.0 # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -101,6 +101,7 @@ add_custom_target(tensorflow_build ALL TARGET_ARCH=${TENSORFLOW_LITE_MICRO_TARGET_ARCH} BUILD_TYPE=${TENSORFLOW_LITE_MICRO_BUILD_TYPE} CMSIS_PATH=${CMSIS_SRC_PATH} + CMSIS_NN_PATH=${CMSIS_NN_SRC_PATH} # Conditional arguments $<$:ETHOSU_ARCH=${ETHOS_U_NPU_ID}> $<$:ETHOSU_DRIVER_PATH=${ETHOS_U_NPU_DRIVER_SRC_PATH}> diff --git a/set_up_default_resources.py b/set_up_default_resources.py index 475f6da..e3ece8b 100755 --- a/set_up_default_resources.py +++ b/set_up_default_resources.py @@ -381,7 +381,7 @@ def set_up_resources( metadata_file_path = download_dir / "resources_downloaded_metadata.json" metadata_dict = dict() - vela_version = "3.5.0" + vela_version = "3.6.0" py3_major_version_minimum = 3 # Python >= 3.7 is required py3_minor_version_minimum = 7 @@ -443,7 +443,12 @@ def set_up_resources( call_command(command) os.chdir(current_file_dir) - # 1.3 Make sure to have all the requirements + # 1.3 Install additional requirements first, if a valid file has been provided + if additional_requirements_file and os.path.isfile(additional_requirements_file): + command = f"{env_python} -m pip install -r {additional_requirements_file}" + call_command(command) + + # 1.4 Make sure to have all the main requirements requirements = [f"ethos-u-vela=={vela_version}"] command = f"{env_python} -m pip freeze" packages = call_command(command) @@ -452,11 +457,6 @@ def set_up_resources( command = f"{env_python} -m pip install {req}" call_command(command) - # 1.4 Install additional requirements, if a valid file has been provided - if additional_requirements_file and os.path.isfile(additional_requirements_file): - command = f"{env_python} -m pip install -r {additional_requirements_file}" - call_command(command) - # 2. Download models logging.info("Downloading resources.") for uc in json_uc_res: diff --git a/source/application/api/common/include/Model.hpp b/source/application/api/common/include/Model.hpp index 8b64f10..ed2b4c1 100644 --- a/source/application/api/common/include/Model.hpp +++ b/source/application/api/common/include/Model.hpp @@ -133,7 +133,6 @@ namespace app { size_t GetActivationBufferSize(); private: - tflite::ErrorReporter* m_pErrorReporter{nullptr}; /* Pointer to the error reporter. */ const tflite::Model* m_pModel{nullptr}; /* Tflite model pointer. */ tflite::MicroInterpreter* m_pInterpreter{nullptr}; /* Tflite interpreter. */ tflite::MicroAllocator* m_pAllocator{nullptr}; /* Tflite micro allocator. */ diff --git a/source/application/api/common/include/TensorFlowLiteMicro.hpp b/source/application/api/common/include/TensorFlowLiteMicro.hpp index 9826dfa..944ed4a 100644 --- a/source/application/api/common/include/TensorFlowLiteMicro.hpp +++ b/source/application/api/common/include/TensorFlowLiteMicro.hpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright 2021 Arm Limited and/or its affiliates + * SPDX-FileCopyrightText: Copyright 2021-2022 Arm Limited and/or its affiliates * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -30,7 +30,6 @@ #pragma clang diagnostic ignored "-Wunused-parameter" #include "tensorflow/lite/micro/micro_mutable_op_resolver.h" #include "tensorflow/lite/micro/micro_interpreter.h" - #include "tensorflow/lite/micro/micro_error_reporter.h" #include "tensorflow/lite/micro/all_ops_resolver.h" #pragma clang diagnostic pop #elif defined(__GNUC__) @@ -38,18 +37,17 @@ #pragma GCC diagnostic ignored "-Wunused-parameter" #include "tensorflow/lite/micro/micro_mutable_op_resolver.h" #include "tensorflow/lite/micro/micro_interpreter.h" - #include "tensorflow/lite/micro/micro_error_reporter.h" #include "tensorflow/lite/micro/all_ops_resolver.h" #pragma GCC diagnostic pop #else #include "tensorflow/lite/micro/micro_mutable_op_resolver.h" #include "tensorflow/lite/micro/micro_interpreter.h" - #include "tensorflow/lite/micro/micro_error_reporter.h" #include "tensorflow/lite/micro/all_ops_resolver.h" #endif #include "tensorflow/lite/c/common.h" #include "tensorflow/lite/micro/kernels/micro_ops.h" +#include "tensorflow/lite/micro/tflite_bridge/op_resolver_bridge.h" #include "tensorflow/lite/schema/schema_generated.h" #include "tensorflow/lite/schema/schema_utils.h" diff --git a/source/application/api/common/source/Model.cc b/source/application/api/common/source/Model.cc index 1dbef1d..8467d71 100644 --- a/source/application/api/common/source/Model.cc +++ b/source/application/api/common/source/Model.cc @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: Copyright 2021 Arm Limited and/or its affiliates + * SPDX-FileCopyrightText: Copyright 2021-2022 Arm Limited and/or its affiliates * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -31,9 +31,7 @@ arm::app::Model::~Model() arm::app::Model::Model() : m_inited (false), m_type(kTfLiteNoType) -{ - this->m_pErrorReporter = tflite::GetMicroErrorReporter(); -} +{} bool arm::app::Model::Init(uint8_t* tensorArenaAddr, uint32_t tensorArenaSize, @@ -50,8 +48,8 @@ bool arm::app::Model::Init(uint8_t* tensorArenaAddr, this->m_pModel = ::tflite::GetModel(nnModelAddr); if (this->m_pModel->version() != TFLITE_SCHEMA_VERSION) { - this->m_pErrorReporter->Report( - "[ERROR] model's schema version %d is not equal " + printf_err( + "Model's schema version %d is not equal " "to supported version %d.", this->m_pModel->version(), TFLITE_SCHEMA_VERSION); return false; @@ -79,8 +77,7 @@ bool arm::app::Model::Init(uint8_t* tensorArenaAddr, this->m_pAllocator = tflite::MicroAllocator::Create( tensorArenaAddr, - tensorArenaSize, - this->m_pErrorReporter); + tensorArenaSize); if (!this->m_pAllocator) { printf_err("Failed to create allocator\n"); @@ -93,7 +90,7 @@ bool arm::app::Model::Init(uint8_t* tensorArenaAddr, this->m_pInterpreter = new ::tflite::MicroInterpreter( this->m_pModel, this->GetOpResolver(), - this->m_pAllocator, this->m_pErrorReporter); + this->m_pAllocator); if (!this->m_pInterpreter) { printf_err("Failed to allocate interpreter\n"); @@ -211,8 +208,7 @@ void arm::app::Model::LogInterpreterInfo() const tflite::OperatorCode* opcode = opcodes->Get(op->opcode_index()); const TfLiteRegistration* reg = nullptr; - tflite::GetRegistrationFromOpCode(opcode, this->GetOpResolver(), - this->m_pErrorReporter, ®); + tflite::GetRegistrationFromOpCode(opcode, this->GetOpResolver(), ®); std::string opName; if (reg) { diff --git a/source/use_case/object_detection/src/UseCaseHandler.cc b/source/use_case/object_detection/src/UseCaseHandler.cc index 5f012b6..084059e 100644 --- a/source/use_case/object_detection/src/UseCaseHandler.cc +++ b/source/use_case/object_detection/src/UseCaseHandler.cc @@ -58,8 +58,8 @@ namespace app { constexpr uint32_t dataPsnImgStartX = 10; constexpr uint32_t dataPsnImgStartY = 35; - constexpr uint32_t dataPsnTxtInfStartX = 150; - constexpr uint32_t dataPsnTxtInfStartY = 40; + constexpr uint32_t dataPsnTxtInfStartX = 20; + constexpr uint32_t dataPsnTxtInfStartY = 28; hal_lcd_clear(COLOR_BLACK); diff --git a/source/use_case/vww/src/UseCaseHandler.cc b/source/use_case/vww/src/UseCaseHandler.cc index 411b868..e2e48d1 100644 --- a/source/use_case/vww/src/UseCaseHandler.cc +++ b/source/use_case/vww/src/UseCaseHandler.cc @@ -45,7 +45,7 @@ namespace app { constexpr uint32_t dataPsnImgStartY = 35; constexpr uint32_t dataPsnTxtInfStartX = 150; - constexpr uint32_t dataPsnTxtInfStartY = 70; + constexpr uint32_t dataPsnTxtInfStartY = 40; if (!model.IsInited()) { printf_err("Model is not initialised! Terminating processing.\n"); -- cgit v1.2.1