# Copyright (c) 2021-2022 Arm Limited (or its affiliates). All rights reserved. # SPDX-License-Identifier: Apache-2.0 find_program( ARMFVP PATHS ENV ARMFVP_BIN_PATH NO_DEFAULT_PATH NAMES ${ARMFVP_BIN_NAME} ) if(ARMFVP AND (DEFINED ARMFVP_MIN_VERSION)) execute_process( COMMAND ${ARMFVP} --version OUTPUT_VARIABLE out OUTPUT_STRIP_TRAILING_WHITESPACE ) string(REPLACE "\n" "" out ${out}) string(REGEX MATCH "[0-9]+\.[0-9]+\.[0-9]+" armfvp_version ${out}) if(${armfvp_version} VERSION_LESS ${ARMFVP_MIN_VERSION}) set(armfvp_warning_message "Found FVP version is \"${armfvp_version}\", " "the minimum required by the current board is \"${ARMFVP_MIN_VERSION}\".") message(WARNING "${armfvp_warning_message}") set(ARMFVP COMMAND ${CMAKE_COMMAND} -E echo ${armfvp_warning_message} COMMAND ${ARMFVP} ) endif() endif() if(CONFIG_BUILD_WITH_TFA) set(ARMFVP_FLAGS ${ARMFVP_FLAGS} -C bp.secureflashloader.fname=${APPLICATION_BINARY_DIR}/tfa${FVP_SECURE_FLASH_FILE} -C bp.flashloader0.fname=${APPLICATION_BINARY_DIR}/tfa${FVP_FLASH_FILE} ) elseif(CONFIG_ARMV8_A_NS) foreach(filetype BL1 FIP) if ((NOT DEFINED ARMFVP_${filetype}_FILE) AND (EXISTS "$ENV{ARMFVP_${filetype}_FILE}")) set(ARMFVP_${filetype}_FILE "$ENV{ARMFVP_${filetype}_FILE}" CACHE FILEPATH "ARM FVP ${filetype} File specified in environment" ) endif() if(NOT EXISTS "${ARMFVP_${filetype}_FILE}") string(TOLOWER ${filetype} filename) message(FATAL_ERROR "Please specify ARMFVP_${filetype}_FILE in environment " "or with -DARMFVP_${filetype}_FILE=") endif() endforeach() set(ARMFVP_FLAGS ${ARMFVP_FLAGS} -C bp.secureflashloader.fname=${ARMFVP_BL1_FILE} -C bp.flashloader0.fname=${ARMFVP_FIP_FILE} --data cluster0.cpu0="${APPLICATION_BINARY_DIR}/zephyr/${KERNEL_BIN_NAME}"@0x88000000 ) else() set(ARMFVP_FLAGS ${ARMFVP_FLAGS} -a ${APPLICATION_BINARY_DIR}/zephyr/${KERNEL_ELF_NAME} ) endif() if(CONFIG_ETH_SMSC91X) set(ARMFVP_FLAGS ${ARMFVP_FLAGS} -C bp.smsc_91c111.enabled=1 -C bp.hostbridge.userNetworking=1 ) endif() # Use flags passed in from the environment set(env_fvp $ENV{ARMFVP_EXTRA_FLAGS}) separate_arguments(env_fvp) list(APPEND ARMFVP_EXTRA_FLAGS ${env_fvp}) add_custom_target(run_armfvp COMMAND ${ARMFVP} ${ARMFVP_FLAGS} ${ARMFVP_EXTRA_FLAGS} DEPENDS ${logical_target_for_zephyr_elf} WORKING_DIRECTORY ${APPLICATION_BINARY_DIR} COMMENT "${ARMFVP_BIN_NAME}: ${armfvp_version}" USES_TERMINAL )