83 lines
2.5 KiB
CMake
83 lines
2.5 KiB
CMake
# 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=</path/to/${filename}.bin>")
|
|
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
|
|
)
|