boards: fvp_base_revc_2xaemv8a: permit running Zephyr at EL1NS
It may be needed to run Zephyr at EL1NS level with `CONFIG_ARMV8_A_NS` In order to run at EL1NS, you'll need a proper Firmware loaded in the FVP model to run Zephyr at non-secure EL3. The ARM TF-A for FVP can used to run Zephyr as preloaded BL33. This adds the necessary cmake scripts to load the TF-A binaries and load Zephyr as preloaded BL33 payload. Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
This commit is contained in:
parent
dc96f016a4
commit
538968a773
2 changed files with 49 additions and 1 deletions
|
@ -71,6 +71,29 @@ To run with FVP, ARMFVP_BIN_PATH must be set before running:
|
||||||
|
|
||||||
e.g. export ARMFVP_BIN_PATH=<path/to/fvp/dir>
|
e.g. export ARMFVP_BIN_PATH=<path/to/fvp/dir>
|
||||||
|
|
||||||
|
Running Zephyr at EL1NS
|
||||||
|
***********************
|
||||||
|
|
||||||
|
In order to run Zephyr as EL1NS with ``CONFIG_ARMV8_A_NS``, you'll need a proper
|
||||||
|
Trusted Firmware loaded in the FVP model.
|
||||||
|
|
||||||
|
The ARM TF-A for FVP can be used to run Zephyr as preloaded BL33 payload.
|
||||||
|
|
||||||
|
Checkout and Build the TF-A:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
git clone https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git --depth 1
|
||||||
|
cd trusted-firmware-a/
|
||||||
|
make PLAT=fvp PRELOADED_BL33_BASE="0x88000000" all fip
|
||||||
|
|
||||||
|
then export the ``ARMFVP_BL1_FILE` and ``ARMFVP_FIP_FILE`` environment variables:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
export ARMFVP_BL1_FILE=<path/to/tfa-a/build/fvp/release/bl1.bin>
|
||||||
|
export ARMFVP_FIP_FILE=<path/to/tfa-a/build/fvp/release/fip.bin>
|
||||||
|
|
||||||
Debugging
|
Debugging
|
||||||
=========
|
=========
|
||||||
|
|
||||||
|
|
|
@ -10,11 +10,36 @@ find_program(
|
||||||
NAMES ${ARMFVP_BIN_NAME}
|
NAMES ${ARMFVP_BIN_NAME}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if(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()
|
||||||
|
|
||||||
add_custom_target(run
|
add_custom_target(run
|
||||||
COMMAND
|
COMMAND
|
||||||
${ARMFVP}
|
${ARMFVP}
|
||||||
${ARMFVP_FLAGS}
|
${ARMFVP_FLAGS}
|
||||||
-a ${APPLICATION_BINARY_DIR}/zephyr/${KERNEL_ELF_NAME}
|
|
||||||
DEPENDS ${ARMFVP} ${logical_target_for_zephyr_elf}
|
DEPENDS ${ARMFVP} ${logical_target_for_zephyr_elf}
|
||||||
WORKING_DIRECTORY ${APPLICATION_BINARY_DIR}
|
WORKING_DIRECTORY ${APPLICATION_BINARY_DIR}
|
||||||
COMMENT "FVP: ${ARMFVP}"
|
COMMENT "FVP: ${ARMFVP}"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue