# # SPDX-FileCopyrightText: Copyright 2022-2024 Arm Limited and/or its affiliates # SPDX-License-Identifier: Apache-2.0 # # Licensed under the Apache License, Version 2.0 (the License); you may # not use this file except in compliance with the License. # You may obtain a copy of the License at # # www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an AS IS BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # if(NOT TARGET freertos_kernel) message("Skipping message handler openamp") return() endif() ############################################################################# # Configuration ############################################################################# set(MESSAGE_HANDLER_MODEL_0 "" CACHE STRING "Path to built in model 0") set(MESSAGE_HANDLER_MODEL_1 "" CACHE STRING "Path to built in model 1") set(MESSAGE_HANDLER_MODEL_2 "" CACHE STRING "Path to built in model 2") set(MESSAGE_HANDLER_MODEL_3 "" CACHE STRING "Path to built in model 3") set(MESSAGE_HANDLER_ARENA_SIZE 0x200000 CACHE STRING "Total size of all message handler tensor arenas in bytes (Must be a power of two)") ############################################################################# # TFLM arena ############################################################################# # Split total tensor arena equally for each NPU if(TARGET ethosu_core_driver AND ETHOSU_TARGET_NPU_COUNT GREATER 0) set(NUM_ARENAS ${ETHOSU_TARGET_NPU_COUNT}) else() set(NUM_ARENAS 1) endif() math(EXPR TENSOR_ARENA_SIZE "${MESSAGE_HANDLER_ARENA_SIZE} / ${NUM_ARENAS}") ############################################################################# # Message handler application ############################################################################# ethosu_add_executable(message_handler_openamp SOURCES main.cpp core_driver_mutex.cpp freertos_allocator.cpp inference_runner.cpp message_handler.cpp remoteproc.cpp LIBRARIES $<$:ethosu_core_driver> ethosu_log ethosu_mailbox ethosu_profiler freertos_kernel inference_process openamp-freertos) target_include_directories(message_handler_openamp PRIVATE ${LINUX_DRIVER_STACK_PATH}/kernel/include) target_compile_definitions(message_handler_openamp PRIVATE $<$:REMOTEPROC_TRACE_BUFFER> TENSOR_ARENA_SIZE=${TENSOR_ARENA_SIZE} $<$:MODEL_0=${MESSAGE_HANDLER_MODEL_0}> $<$:MODEL_1=${MESSAGE_HANDLER_MODEL_1}> $<$:MODEL_2=${MESSAGE_HANDLER_MODEL_2}> $<$:MODEL_3=${MESSAGE_HANDLER_MODEL_3}>)