mirror of
https://git.yoctoproject.org/meta-arm
synced 2026-07-18 04:27:08 +00:00
Compare commits
47 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9bcc166bd5 | |||
| 0e35e4b951 | |||
| bbe2d63100 | |||
| 2b57548b36 | |||
| c6380674f5 | |||
| 6e199b354e | |||
| 7c67197694 | |||
| 85b0e80e7d | |||
| 821fa15a73 | |||
| 18edb7bcff | |||
| 10c355b9c7 | |||
| 1a15a5b052 | |||
| 0bf2afab93 | |||
| c1201c0c3a | |||
| fd7cb4d462 | |||
| 7d4cc90156 | |||
| 1bfb03f9a6 | |||
| bef3c42e38 | |||
| 779594c5d8 | |||
| bd0c162e37 | |||
| 4a946ac8de | |||
| d0b423c63c | |||
| 5024b767e3 | |||
| 00bff355e5 | |||
| 4a7198a135 | |||
| 7bd239d4f3 | |||
| b1a9fd76be | |||
| 58a97781d5 | |||
| e995c42311 | |||
| 5e05b281f4 | |||
| cb811a559b | |||
| 0d7ee992c1 | |||
| 45206b21b9 | |||
| 5c19e4a87a | |||
| 065e86ab5f | |||
| b3c96e3fc3 | |||
| 48abf0167d | |||
| adea344855 | |||
| 809d2b43f9 | |||
| 15d6b7c4e9 | |||
| 2ffe50d4b5 | |||
| b25e1ef90d | |||
| 8db460fa5d | |||
| 36f77ab664 | |||
| 6850977577 | |||
| 91b504e686 | |||
| 50624c6f2f |
+29
-56
@@ -1,16 +1,13 @@
|
||||
image: ${MIRROR_GHCR}/siemens/kas/kas:4.0
|
||||
image: ghcr.io/siemens/kas/kas:3.2.3
|
||||
|
||||
variables:
|
||||
CPU_REQUEST: ""
|
||||
DEFAULT_TAG: ""
|
||||
CACHE_DIR: $CI_BUILDS_DIR/persist
|
||||
MIRROR_GHCR: ghcr.io
|
||||
# These are needed as the k8s executor doesn't respect the container entrypoint
|
||||
# by default
|
||||
FF_KUBERNETES_HONOR_ENTRYPOINT: 1
|
||||
FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY: 0
|
||||
ACS_TEST: 0
|
||||
ACS_TAG: ""
|
||||
|
||||
stages:
|
||||
- prep
|
||||
@@ -61,16 +58,16 @@ stages:
|
||||
# Catch all for everything else
|
||||
- if: '$KERNEL != "linux-yocto-dev"'
|
||||
script:
|
||||
- KASFILES=$(./ci/jobs-to-kas "$CI_JOB_NAME"):lockfile.yml
|
||||
- kas dump --update --force-checkout --resolve-refs --resolve-env $KASFILES
|
||||
- KASFILES=$(./ci/jobs-to-kas "$CI_JOB_NAME")
|
||||
- kas dump --update --force-checkout --resolve-refs --resolve-env $KASFILES
|
||||
- kas build $KASFILES
|
||||
- ./ci/check-warnings $KAS_WORK_DIR/build/warnings.log
|
||||
artifacts:
|
||||
name: "logs"
|
||||
when: always
|
||||
when: on_failure
|
||||
paths:
|
||||
- $CI_PROJECT_DIR/work/build/tmp*/work*/**/temp/log.do_*.*
|
||||
- $CI_PROJECT_DIR/work/build/tmp*/work*/**/testimage/*
|
||||
- $CI_PROJECT_DIR/work/build/tmp/work*/**/temp/log.do_*.*
|
||||
- $CI_PROJECT_DIR/work/build/tmp/work*/**/testimage/*
|
||||
|
||||
#
|
||||
# Prep stage, update repositories once.
|
||||
@@ -79,22 +76,8 @@ stages:
|
||||
update-repos:
|
||||
extends: .setup
|
||||
stage: prep
|
||||
allow_failure:
|
||||
exit_codes: 128
|
||||
script:
|
||||
- |
|
||||
flock --verbose --timeout 60 $KAS_REPO_REF_DIR ./ci/update-repos
|
||||
# Only generate if doesn't already exist, to allow feature branches to drop one in.
|
||||
if test -f lockfile.yml; then
|
||||
echo Using existing lockfile.yml
|
||||
else
|
||||
# Be sure that this is the complete list of layers being fetched
|
||||
kas dump --lock --update ci/qemuarm64.yml:ci/meta-openembedded.yml:ci/clang.yml:ci/meta-virtualization.yml | tee lockfile.yml
|
||||
fi
|
||||
artifacts:
|
||||
name: "lockfile"
|
||||
paths:
|
||||
- lockfile.yml
|
||||
- flock --verbose --timeout 60 $KAS_REPO_REF_DIR ./ci/update-repos
|
||||
|
||||
#
|
||||
# Build stage, the actual build jobs
|
||||
@@ -102,25 +85,31 @@ update-repos:
|
||||
# Available options for building are
|
||||
# DISTRO: [poky, poky-tiny]
|
||||
# KERNEL: [linux-yocto, linux-yocto-dev, linux-yocto-rt]
|
||||
# TOOLCHAINS: [gcc, clang, external-gccarm]
|
||||
# TOOLCHAINS: [gcc, clang, armgcc, external-gccarm]
|
||||
# TCLIBC: [glibc, musl]
|
||||
# FIRMWARE: [u-boot, edk2]
|
||||
# TS: [none, trusted-services]
|
||||
# VIRT: [none, xen]
|
||||
# TESTING: testimage
|
||||
|
||||
corstone500:
|
||||
extends: .build
|
||||
parallel:
|
||||
matrix:
|
||||
- TESTING: testimage
|
||||
tags:
|
||||
- x86_64
|
||||
|
||||
corstone1000-fvp:
|
||||
extends: .build
|
||||
parallel:
|
||||
matrix:
|
||||
- TESTING: [testimage, tftf]
|
||||
tags:
|
||||
- x86_64
|
||||
|
||||
corstone1000-mps3:
|
||||
extends: .build
|
||||
parallel:
|
||||
matrix:
|
||||
- TESTING: [none, tftf]
|
||||
|
||||
|
||||
fvp-base:
|
||||
extends: .build
|
||||
@@ -128,20 +117,14 @@ fvp-base:
|
||||
matrix:
|
||||
- TESTING: testimage
|
||||
- FIRMWARE: edk2
|
||||
- SYSTEMREADY_FIRMWARE: arm-systemready-firmware
|
||||
|
||||
arm-systemready-ir-acs:
|
||||
fvp-baser-aemv8r64:
|
||||
extends: .build
|
||||
timeout: 12h
|
||||
parallel:
|
||||
matrix:
|
||||
# arm-systemready-ir-acs must be specified after fvp-base for ordering
|
||||
# purposes for the jobs-to-kas output. It is not enough to just have it
|
||||
# in the job name because fvp-base.yml overwrites the target.
|
||||
- PLATFORM: fvp-base
|
||||
ARM_SYSTEMREADY_IR_ACS: arm-systemready-ir-acs
|
||||
- TESTING: testimage
|
||||
tags:
|
||||
- ${ACS_TAG}
|
||||
- x86_64
|
||||
|
||||
fvps:
|
||||
extends: .build
|
||||
@@ -166,7 +149,8 @@ n1sdp:
|
||||
extends: .build
|
||||
parallel:
|
||||
matrix:
|
||||
- TESTING: [none, n1sdp-ts, n1sdp-optee, tftf]
|
||||
- TOOLCHAINS: [gcc, armgcc]
|
||||
TS: [none, n1sdp-ts]
|
||||
|
||||
qemu-generic-arm64:
|
||||
extends: .build
|
||||
@@ -204,10 +188,7 @@ qemuarm-secureboot:
|
||||
parallel:
|
||||
matrix:
|
||||
- KERNEL: [linux-yocto, linux-yocto-dev, linux-yocto-rt]
|
||||
TOOLCHAINS: [gcc, clang]
|
||||
TCLIBC: [glibc, musl]
|
||||
TESTING: testimage
|
||||
- TOOLCHAINS: external-gccarm
|
||||
TOOLCHAINS: [gcc, clang, external-gccarm]
|
||||
TESTING: testimage
|
||||
|
||||
qemuarm:
|
||||
@@ -250,14 +231,14 @@ toolchains:
|
||||
selftest:
|
||||
extends: .setup
|
||||
script:
|
||||
- KASFILES=./ci/qemuarm64.yml:./ci/selftest.yml:lockfile.yml
|
||||
- kas shell --update --force-checkout $KASFILES -c 'oe-selftest --num-processes 2 --select-tag meta-arm --run-all-tests'
|
||||
- KASFILES=./ci/qemuarm64.yml:./ci/selftest.yml
|
||||
- kas shell --update --force-checkout $KASFILES -c 'oe-selftest --num-processes 1 --run-tests runfvp'
|
||||
|
||||
# Validate layers are Yocto Project Compatible
|
||||
check-layers:
|
||||
extends: .setup
|
||||
script:
|
||||
- kas shell --update --force-checkout ci/base.yml:ci/meta-openembedded.yml:lockfile.yml --command \
|
||||
- kas shell --update --force-checkout ci/base.yml:ci/meta-openembedded.yml --command \
|
||||
"yocto-check-layer-wrapper $CI_PROJECT_DIR/$LAYER --dependency $CI_PROJECT_DIR/meta-* $KAS_WORK_DIR/meta-openembedded/meta-oe --no-auto-dependency"
|
||||
parallel:
|
||||
matrix:
|
||||
@@ -271,7 +252,7 @@ pending-updates:
|
||||
script:
|
||||
- rm -fr update-report
|
||||
# This configuration has all of the layers we need enabled
|
||||
- kas shell --update --force-checkout ci/qemuarm64.yml:ci/meta-openembedded.yml:ci/meta-secure-core.yml:lockfile.yml --command \
|
||||
- kas shell --update --force-checkout ci/qemuarm64.yml:ci/meta-openembedded.yml --command \
|
||||
"$CI_PROJECT_DIR/scripts/machine-summary.py -t report -o $CI_PROJECT_DIR/update-report $($CI_PROJECT_DIR/ci/listmachines.py meta-arm meta-arm-bsp)"
|
||||
# Do this on x86 whilst the compilers are x86-only
|
||||
tags:
|
||||
@@ -297,16 +278,8 @@ documentation:
|
||||
extends: .setup
|
||||
script:
|
||||
- |
|
||||
# This can be removed when the kas container has python3-venv installed
|
||||
sudo apt-get update && sudo apt-get install --yes python3-venv
|
||||
|
||||
python3 -m venv venv
|
||||
. ./venv/bin/activate
|
||||
|
||||
pip3 install -r meta-arm-bsp/documentation/requirements.txt
|
||||
|
||||
sudo pip3 install -r meta-arm-bsp/documentation/requirements.txt
|
||||
for CONF in meta-*/documentation/*/conf.py ; do
|
||||
echo Building $CONF...
|
||||
SOURCE_DIR=$(dirname $CONF)
|
||||
MACHINE=$(basename $SOURCE_DIR)
|
||||
sphinx-build -vW $SOURCE_DIR build-docs/$MACHINE
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
header:
|
||||
version: 11
|
||||
includes:
|
||||
- kas/arm-systemready-firmware.yml
|
||||
@@ -1,14 +0,0 @@
|
||||
header:
|
||||
version: 11
|
||||
includes:
|
||||
- kas/arm-systemready-ir-acs.yml
|
||||
|
||||
env:
|
||||
ACS_TEST: "0"
|
||||
|
||||
local_conf_header:
|
||||
testimage: |
|
||||
TESTIMAGE_AUTO = "${ACS_TEST}"
|
||||
|
||||
target:
|
||||
- arm-systemready-ir-acs
|
||||
@@ -0,0 +1,6 @@
|
||||
header:
|
||||
version: 11
|
||||
|
||||
local_conf_header:
|
||||
cc: |
|
||||
GCCVERSION = "arm-12.2"
|
||||
+4
-2
@@ -1,11 +1,11 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 11
|
||||
|
||||
distro: poky
|
||||
|
||||
defaults:
|
||||
repos:
|
||||
branch: nanbield
|
||||
refspec: mickledore
|
||||
|
||||
repos:
|
||||
meta-arm:
|
||||
@@ -27,9 +27,11 @@ env:
|
||||
local_conf_header:
|
||||
base: |
|
||||
CONF_VERSION = "2"
|
||||
LICENSE_FLAGS_ACCEPTED += "Arm-FVP-EULA"
|
||||
setup: |
|
||||
PACKAGE_CLASSES = "package_ipk"
|
||||
PACKAGECONFIG:remove:pn-qemu-system-native = "gtk+ sdl"
|
||||
EXTRA_IMAGE_FEATURES:append = " debug-tweaks"
|
||||
PACKAGECONFIG:append:pn-perf = " coresight"
|
||||
INHERIT += "rm_work"
|
||||
DISTRO_FEATURES:remove = "ptest"
|
||||
|
||||
+1
-7
@@ -1,5 +1,5 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 11
|
||||
|
||||
repos:
|
||||
meta-clang:
|
||||
@@ -8,12 +8,6 @@ repos:
|
||||
local_conf_header:
|
||||
toolchain: |
|
||||
TOOLCHAIN = "clang"
|
||||
PREFERRED_PROVIDER_llvm = "clang"
|
||||
PREFERRED_PROVIDER_llvm-native = "clang-native"
|
||||
PREFERRED_PROVIDER_nativesdk-llvm = "nativesdk-clang"
|
||||
PROVIDES:pn-clang = "llvm"
|
||||
PROVIDES:pn-clang-native = "llvm-native"
|
||||
PROVIDES:pn-nativesdk-clang = "nativesdk-llvm"
|
||||
# This is needed to stop bitbake getting confused about what clang/llvm is
|
||||
# being used, see https://github.com/kraj/meta-clang/pull/766
|
||||
BBMASK += "/meta/recipes-devtools/llvm/llvm.*\.bb"
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 11
|
||||
includes:
|
||||
- ci/base.yml
|
||||
- ci/meta-openembedded.yml
|
||||
- ci/poky-tiny.yml
|
||||
- ci/meta-secure-core.yml
|
||||
|
||||
local_conf_header:
|
||||
extrapackages: |
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 11
|
||||
includes:
|
||||
- ci/corstone1000-common.yml
|
||||
- ci/fvp.yml
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 11
|
||||
includes:
|
||||
- ci/corstone1000-common.yml
|
||||
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
header:
|
||||
version: 11
|
||||
includes:
|
||||
- ci/base.yml
|
||||
- ci/fvp.yml
|
||||
- ci/poky-tiny.yml
|
||||
|
||||
local_conf_header:
|
||||
fvp-config: |
|
||||
IMAGE_FEATURES:remove = " ssh-server-dropbear"
|
||||
|
||||
machine: corstone500
|
||||
@@ -1,7 +0,0 @@
|
||||
header:
|
||||
version: 14
|
||||
|
||||
# Add universally helpful features when testing boards
|
||||
local_conf_header:
|
||||
debug: |
|
||||
EXTRA_IMAGE_FEATURES:append = " debug-tweaks"
|
||||
@@ -1,31 +0,0 @@
|
||||
#! /usr/bin/env python3
|
||||
|
||||
"""
|
||||
Download the lockfile.yml produced by a CI pipeline, specified by the GitLab
|
||||
server, full name of the meta-arm project, and the refspec that was executed.
|
||||
|
||||
For example,
|
||||
$ ./download-lockfile.py https://gitlab.com/ rossburton/meta-arm master
|
||||
|
||||
SPDX-FileCopyrightText: Copyright 2023 Arm Limited and Contributors
|
||||
SPDX-License-Identifier: GPL-2.0-only
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import gitlab
|
||||
import io
|
||||
import zipfile
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("server", help="GitLab server name")
|
||||
parser.add_argument("project", help="meta-arm project name")
|
||||
parser.add_argument("refspec", help="Branch/commit")
|
||||
args = parser.parse_args()
|
||||
|
||||
gl = gitlab.Gitlab(args.server)
|
||||
project = gl.projects.get(args.project)
|
||||
artefact = project.artifacts.download(ref_name=args.refspec, job="update-repos")
|
||||
|
||||
z = zipfile.ZipFile(io.BytesIO(artefact))
|
||||
z.extract("lockfile.yml")
|
||||
print("Fetched lockfile.yml")
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 11
|
||||
|
||||
local_conf_header:
|
||||
bootfirmware: |
|
||||
|
||||
@@ -1,11 +1,8 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 11
|
||||
|
||||
local_conf_header:
|
||||
cc: |
|
||||
SKIP_RECIPE[gcc-cross-arm] = "Using external toolchain"
|
||||
TCMODE = "external-arm"
|
||||
EXTERNAL_TOOLCHAIN = "${TOPDIR}/toolchains/${TARGET_ARCH}"
|
||||
# Temporary workaround for a number binaries in the toolchains that are using 32bit timer API
|
||||
# This must be done here instead of the recipe because of all the libraries in the toolchain have the issue
|
||||
INSANE_SKIP:append = " 32bit-time"
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 11
|
||||
includes:
|
||||
- ci/base.yml
|
||||
- ci/fvp.yml
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
header:
|
||||
version: 11
|
||||
includes:
|
||||
- ci/base.yml
|
||||
|
||||
machine: fvp-baser-aemv8r64
|
||||
|
||||
+3
-4
@@ -1,12 +1,11 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 11
|
||||
|
||||
local_conf_header:
|
||||
testimagefvp: |
|
||||
LICENSE_FLAGS_ACCEPTED += "Arm-FVP-EULA"
|
||||
IMAGE_CLASSES += "fvpboot"
|
||||
failing_tests: |
|
||||
INHERIT += "fvpboot"
|
||||
# This fails but we can't add to the ignorelist from meta-arm yet
|
||||
# https://bugzilla.yoctoproject.org/show_bug.cgi?id=14604
|
||||
TEST_SUITES:remove = "parselogs"
|
||||
failing_tests: |
|
||||
TEST_SUITES:remove = "xorg"
|
||||
|
||||
+2
-7
@@ -1,24 +1,19 @@
|
||||
# Simple target to build the FVPs that are publically available
|
||||
|
||||
header:
|
||||
version: 14
|
||||
version: 11
|
||||
includes:
|
||||
- ci/base.yml
|
||||
|
||||
machine: qemuarm64
|
||||
|
||||
local_conf_header:
|
||||
license: |
|
||||
LICENSE_FLAGS_ACCEPTED += "Arm-FVP-EULA"
|
||||
sdk: |
|
||||
SDKMACHINE = "x86_64"
|
||||
|
||||
target:
|
||||
# Target packages to test aarch64
|
||||
- fvp-base-a-aem
|
||||
- fvp-corstone1000
|
||||
# Nativesdk to test x86-64
|
||||
- nativesdk-fvp-base-a-aem
|
||||
- nativesdk-fvp-corstone500
|
||||
- nativesdk-fvp-corstone1000
|
||||
- nativesdk-fvp-n1-edge
|
||||
- nativesdk-fvp-sgi575
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 11
|
||||
|
||||
#NOTE: This is the default for poky. This is only being added for completeness/clarity
|
||||
local_conf_header:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 11
|
||||
includes:
|
||||
- ci/base.yml
|
||||
|
||||
|
||||
@@ -5,10 +5,9 @@ BASENAME=arm-gnu-toolchain
|
||||
VER=${VER:-12.2.rel1}
|
||||
HOST_ARCH=${HOST_ARCH:-$(uname -m)}
|
||||
|
||||
# Use the standard kas container locations if nothing is passed into the script
|
||||
DOWNLOAD_DIR="${1:-/builds/persist/downloads/}"
|
||||
TOOLCHAIN_DIR="${2:-/builds/persist//toolchains/}"
|
||||
TOOLCHAIN_LINK_DIR="${3:-build/toolchains/}"
|
||||
DOWNLOAD_DIR=$1
|
||||
TOOLCHAIN_DIR=$2
|
||||
TOOLCHAIN_LINK_DIR=$3
|
||||
|
||||
# These should be already created by .gitlab-ci.yml, but do here if run outside of that env
|
||||
mkdir -p $DOWNLOAD_DIR $TOOLCHAIN_DIR $TOOLCHAIN_LINK_DIR
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 11
|
||||
|
||||
#NOTE: This is the default for poky. This is only being added for completeness/clarity
|
||||
local_conf_header:
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
# This script is expecting an input of machine name, optionally followed by a
|
||||
# colon and a list of one or more parameters separated by commas between
|
||||
# brackets. For example, the following are acceptable:
|
||||
# corstone1000-mps3
|
||||
# corstone500
|
||||
# fvp-base: [testimage]
|
||||
# qemuarm64-secureboot: [clang, glibc, testimage]
|
||||
#
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 11
|
||||
includes:
|
||||
- ci/base.yml
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 9
|
||||
|
||||
local_conf_header:
|
||||
kernel: |
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 9
|
||||
|
||||
local_conf_header:
|
||||
kernel: |
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 9
|
||||
|
||||
#NOTE: This is the default for poky. This is only being added for completeness/clarity
|
||||
local_conf_header:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 11
|
||||
|
||||
repos:
|
||||
meta-openembedded:
|
||||
@@ -9,4 +9,3 @@ repos:
|
||||
meta-networking:
|
||||
meta-oe:
|
||||
meta-python:
|
||||
meta-perl:
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
header:
|
||||
version: 14
|
||||
|
||||
repos:
|
||||
meta-secure-core:
|
||||
url: https://github.com/Wind-River/meta-secure-core.git
|
||||
layers:
|
||||
meta:
|
||||
meta-signing-key:
|
||||
meta-efi-secure-boot:
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 11
|
||||
includes:
|
||||
- ci/meta-openembedded.yml
|
||||
|
||||
repos:
|
||||
meta-virtualization:
|
||||
url: https://git.yoctoproject.org/meta-virtualization
|
||||
url: git://git.yoctoproject.org/meta-virtualization
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 11
|
||||
includes:
|
||||
- ci/base.yml
|
||||
- ci/meta-openembedded.yml
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 11
|
||||
includes:
|
||||
- ci/base.yml
|
||||
- ci/meta-openembedded.yml
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 11
|
||||
|
||||
local_conf_header:
|
||||
libc: |
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
header:
|
||||
version: 14
|
||||
|
||||
# Config specific for the optee-xtests
|
||||
local_conf_header:
|
||||
optee-test: |
|
||||
# Include ARM FFA
|
||||
MACHINE_FEATURES:append = " arm-ffa"
|
||||
# Include trusted services
|
||||
TEST_SUITES:append = " trusted_services"
|
||||
# Include Optee xtests
|
||||
IMAGE_INSTALL:append = " optee-test"
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 11
|
||||
includes:
|
||||
- ci/meta-openembedded.yml
|
||||
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 11
|
||||
includes:
|
||||
- ci/base.yml
|
||||
|
||||
|
||||
+2
-2
@@ -1,11 +1,11 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 9
|
||||
|
||||
distro: poky-tiny
|
||||
|
||||
local_conf_header:
|
||||
hacking: |
|
||||
TEST_SUITES = "_qemutiny ping"
|
||||
TEST_SUITES = "ping"
|
||||
extrapackages: |
|
||||
# Intentionally blank to prevent perf from being added to the image in base.yml
|
||||
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 9
|
||||
|
||||
distro: poky
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 11
|
||||
includes:
|
||||
- ci/generic-arm64.yml
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 11
|
||||
includes:
|
||||
- ci/base.yml
|
||||
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 11
|
||||
includes:
|
||||
- ci/base.yml
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 11
|
||||
includes:
|
||||
- ci/meta-openembedded.yml
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 11
|
||||
includes:
|
||||
- ci/base.yml
|
||||
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 11
|
||||
includes:
|
||||
- ci/base.yml
|
||||
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 11
|
||||
includes:
|
||||
- ci/base.yml
|
||||
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 11
|
||||
|
||||
local_conf_header:
|
||||
setup: |
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 11
|
||||
includes:
|
||||
- ci/base.yml
|
||||
|
||||
|
||||
+2
-1
@@ -1,5 +1,5 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 11
|
||||
includes:
|
||||
- ci/base.yml
|
||||
- ci/fvp.yml
|
||||
@@ -9,3 +9,4 @@ machine: tc1
|
||||
|
||||
target:
|
||||
- core-image-minimal
|
||||
- trusted-firmware-m
|
||||
|
||||
+3
-3
@@ -1,7 +1,5 @@
|
||||
header:
|
||||
version: 14
|
||||
includes:
|
||||
- ci/debug.yml
|
||||
version: 11
|
||||
|
||||
local_conf_header:
|
||||
testimage: |
|
||||
@@ -11,6 +9,8 @@ local_conf_header:
|
||||
QEMU_USE_KVM = ""
|
||||
slirp: |
|
||||
TEST_RUNQEMUPARAMS = "slirp"
|
||||
TEST_SERVER_IP = "127.0.0.1"
|
||||
QEMU_USE_SLIRP = "1"
|
||||
sshd: |
|
||||
IMAGE_FEATURES:append = " ssh-server-dropbear"
|
||||
sshkeys: |
|
||||
|
||||
+1
-2
@@ -1,8 +1,7 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 9
|
||||
|
||||
local_conf_header:
|
||||
tftf: |
|
||||
TFA_UBOOT = "0"
|
||||
TFA_UEFI = "0"
|
||||
TFTF_TESTS = "1"
|
||||
|
||||
+2
-3
@@ -1,5 +1,5 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 11
|
||||
includes:
|
||||
- ci/base.yml
|
||||
|
||||
@@ -16,5 +16,4 @@ target:
|
||||
- nativesdk-gcc-aarch64-none-elf
|
||||
- gcc-arm-none-eabi
|
||||
- nativesdk-gcc-arm-none-eabi
|
||||
- gcc-arm-none-eabi-11.2
|
||||
- nativesdk-gcc-arm-none-eabi-11.2
|
||||
- nativesdk-androidclang
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 11
|
||||
|
||||
local_conf_header:
|
||||
bootfirmware: |
|
||||
|
||||
+2
-10
@@ -32,7 +32,6 @@ if __name__ == "__main__":
|
||||
sys.exit(1)
|
||||
|
||||
base_repodir = pathlib.Path(os.environ["KAS_REPO_REF_DIR"])
|
||||
failed = False
|
||||
|
||||
for repo in repositories:
|
||||
repodir = base_repodir / repo_shortname(repo)
|
||||
@@ -42,15 +41,8 @@ if __name__ == "__main__":
|
||||
shutil.rmtree(repodir, ignore_errors=True)
|
||||
|
||||
if repodir.exists():
|
||||
try:
|
||||
print("Updating %s..." % repo)
|
||||
subprocess.run(["git", "-C", repodir, "-c", "gc.autoDetach=false", "fetch"], check=True)
|
||||
except subprocess.CalledProcessError as e:
|
||||
print(e)
|
||||
failed = True
|
||||
print("Updating %s..." % repo)
|
||||
subprocess.run(["git", "-C", repodir, "-c", "gc.autoDetach=false", "fetch"], check=True)
|
||||
else:
|
||||
print("Cloning %s..." % repo)
|
||||
subprocess.run(["git", "clone", "--bare", repo, repodir], check=True)
|
||||
|
||||
if failed:
|
||||
sys.exit(128)
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 11
|
||||
includes:
|
||||
- ci/meta-virtualization.yml
|
||||
|
||||
|
||||
+26
-20
@@ -4,36 +4,32 @@ OE-Core's [oeqa][OEQA] framework provides a method of performing runtime tests o
|
||||
|
||||
Tests can be configured to run automatically post-build by setting the variable `TESTIMAGE_AUTO="1"`, e.g. in your Kas file or local.conf.
|
||||
|
||||
meta-arm provides the OEFVPTarget which must be set up in the machine configuration:
|
||||
```
|
||||
TEST_TARGET = "OEFVPTarget"
|
||||
TEST_SERVER_IP = "127.0.0.1"
|
||||
TEST_TARGET_IP = "127.0.0.1:2222"
|
||||
IMAGE_FEATURES:append = " ssh-server-dropbear"
|
||||
FVP_CONFIG[bp.virtio_net.hostbridge.userNetPorts] ?= "2222=22"
|
||||
FVP_CONSOLES[default] = "terminal_0"
|
||||
FVP_CONSOLES[tf-a] = "s_terminal_0"
|
||||
```
|
||||
There are two main methods of testing, using different test "targets". Both test targets generate an additional log file with the prefix 'fvp_log' in the image recipe's `${WORKDIR}/testimage` containing the FVP's stdout.
|
||||
|
||||
The test target also generates a log file with the prefix 'fvp_log' in the image recipe's `${WORKDIR}/testimage` containing the FVP's stdout.
|
||||
## OEFVPTarget
|
||||
|
||||
OEFVPTarget supports two different test interfaces - SSH and pexpect.
|
||||
This runs test cases on a machine using SSH. It therefore requires that an SSH server is installed in the image.
|
||||
|
||||
## SSH
|
||||
|
||||
As in OEQA in OE-core, tests cases can run commands on the machine using SSH. It therefore requires that an SSH server is installed in the image.
|
||||
|
||||
This uses the `run` method on the target, e.g:
|
||||
In test cases, the primary interface with the target is, e.g:
|
||||
```
|
||||
(status, output) = self.target.run('uname -a')
|
||||
```
|
||||
which executes a single command on the target (using `ssh -c`) and returns the status code and the output. It is therefore useful for running tests in a Linux environment.
|
||||
which runs a single command on the target (using `ssh -c`) and returns the status code and the output. It is therefore useful for running tests in a Linux environment.
|
||||
|
||||
For examples of test cases, see meta/lib/oeqa/runtime/cases in OE-Core. The majority of test cases depend on `ssh.SSHTest.test_ssh`, which first validates that the SSH connection is functioning.
|
||||
|
||||
## pexpect
|
||||
Example machine configuration:
|
||||
```
|
||||
TEST_TARGET = "OEFVPTarget"
|
||||
TEST_SERVER_IP = "127.0.0.1"
|
||||
TEST_TARGET_IP = "127.0.0.1:8022"
|
||||
IMAGE_FEATURES:append = " ssh-server-dropbear"
|
||||
FVP_CONFIG[bp.virtio_net.hostbridge.userNetPorts] ?= "8022=22"
|
||||
```
|
||||
|
||||
To support firmware and baremetal testing, OEFVPTarget also allows test cases to make assertions against one or more consoles using the pexpect library.
|
||||
## OEFVPSerialTarget
|
||||
|
||||
This runs tests against one or more serial consoles on the FVP. It is more flexible than OEFVPTarget, but test cases written for this test target do not support the test cases in OE-core. As it does not require an SSH server, it is suitable for machines with performance or memory limitations.
|
||||
|
||||
Internally, this test target launches a [Pexpect][PEXPECT] instance for each entry in FVP_CONSOLES which can be used with the provided alias. The whole Pexpect API is exposed on the target, where the alias is always passed as the first argument, e.g.:
|
||||
```
|
||||
@@ -43,6 +39,16 @@ self.assertNotIn(b'ERROR:', self.target.before('tf-a'))
|
||||
|
||||
For an example of a full test case, see meta-arm/lib/oeqa/runtime/cases/linuxboot.py This test case can be used to minimally verify that a machine boots to a Linux shell. The default timeout is 10 minutes, but this can be configured with the variable TEST_FVP_LINUX_BOOT_TIMEOUT, which expects a value in seconds.
|
||||
|
||||
The SSH interface described above is also available on OEFVPSerialTarget to support writing a set of hybrid test suites that use a combination of serial and SSH access. Note however that this test target does not guarantee that Linux has booted to shell prior to running any tests, so the test cases in OE-core are not supported.
|
||||
|
||||
Example machine configuration:
|
||||
```
|
||||
TEST_TARGET="OEFVPSerialTarget"
|
||||
TEST_SUITES="linuxboot"
|
||||
FVP_CONSOLES[default] = "terminal_0"
|
||||
FVP_CONSOLES[tf-a] = "s_terminal_0"
|
||||
```
|
||||
|
||||
[OEQA]: https://docs.yoctoproject.org/test-manual/intro.html
|
||||
[FVP]: https://developer.arm.com/tools-and-software/simulation-models/fixed-virtual-platforms
|
||||
[RUNFVP]: runfvp.md
|
||||
|
||||
@@ -55,7 +55,7 @@ The name of the FVP binary itself, for example `fvp-base` uses `FVP_Base_RevC-2x
|
||||
|
||||
The name of the recipe that provides the FVP executable set in `FVP_EXE`, for example `fvp-base` uses `fvp-base-a-aem-native`. This *must* be a `-native` recipe as the binary will be executed on the build host.
|
||||
|
||||
There are recipes for common FVPs in meta-arm already, and writing new recipes is trivial. For FVPs which are free to download `fvp-base-a-aem.bb` is a good example. Some FVPs must be downloaded separately as they need an account on Arm's website.
|
||||
There are recipes for common FVPs in meta-arm already, and writing new recipes is trivial. For FVPs which are free to download `fvp-base-a-aem.bb` is a good example. Some FVPs must be downloaded separately as they need an account on Arm's website, `fvp-base-r-aem.bb` is a good example of those.
|
||||
|
||||
If `FVP_PROVIDER` is not set then it is assumed that `FVP_EXE` is installed on the host already.
|
||||
|
||||
@@ -64,7 +64,7 @@ If `FVP_PROVIDER` is not set then it is assumed that `FVP_EXE` is installed on t
|
||||
Parameters passed to the FVP with the `--parameter`/`-C` option. These are expressed as variable flags so individual parameters can be altered easily. For example:
|
||||
|
||||
```
|
||||
FVP_CONFIG[bp.flashloader0.fname] = "fip-fvp.bin"
|
||||
FVP_CONFIG[bp.flashloader0.fname] = "${DEPLOY_DIR_IMAGE}/fip-fvp.bin"
|
||||
```
|
||||
|
||||
### `FVP_DATA`
|
||||
@@ -72,8 +72,8 @@ FVP_CONFIG[bp.flashloader0.fname] = "fip-fvp.bin"
|
||||
Specify raw data to load at the specified address, passed to the FVP with the `--data` option. This is a space-separated list of parameters in the format `[INST=]FILE@[MEMSPACE:]ADDRESS`. For example:
|
||||
|
||||
```
|
||||
FVP_DATA = "cluster0.cpu0=Image@0x80080000 \
|
||||
cluster0.cpu0=fvp-base-revc.dtb@0x83000000"
|
||||
FVP_DATA = "cluster0.cpu0=${DEPLOY_DIR_IMAGE}/Image@0x80080000 \
|
||||
cluster0.cpu0=${DEPLOY_DIR_IMAGE}/fvp-base-revc.dtb@0x83000000"
|
||||
```
|
||||
|
||||
### `FVP_APPLICATIONS`
|
||||
@@ -81,7 +81,7 @@ FVP_DATA = "cluster0.cpu0=Image@0x80080000 \
|
||||
Applications to load on the cores, passed to the FVP with the `--application` option. These are expressed as variable flags with the flag name being the instance and flag value the filename, for example:
|
||||
|
||||
```
|
||||
FVP_APPLICATIONS[cluster0] = "linux-system.axf"
|
||||
FVP_APPLICATIONS[cluster0] = "${DEPLOY_DIR_IMAGE}/linux-system.axf"
|
||||
```
|
||||
|
||||
Note that symbols are not allowed in flag names, so if you need to use a wildcard in the instance then you'll need to use `FVP_EXTRA_ARGS` and `--application` directly.
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
header:
|
||||
version: 13
|
||||
|
||||
repos:
|
||||
meta-arm:
|
||||
layers:
|
||||
meta-arm-systemready:
|
||||
|
||||
distro: nodistro
|
||||
|
||||
target:
|
||||
- arm-systemready-firmware
|
||||
@@ -1,12 +0,0 @@
|
||||
header:
|
||||
version: 13
|
||||
includes:
|
||||
- kas/arm-systemready-firmware.yml
|
||||
|
||||
env:
|
||||
TESTIMAGE_AUTO: "1"
|
||||
# The full testimage run typically takes around 12-24h on fvp-base.
|
||||
TEST_OVERALL_TIMEOUT: "${@ 24*60*60}"
|
||||
|
||||
target:
|
||||
- arm-systemready-ir-acs
|
||||
@@ -1,7 +0,0 @@
|
||||
header:
|
||||
version: 13
|
||||
includes:
|
||||
- kas/arm-systemready-firmware.yml
|
||||
|
||||
target:
|
||||
- arm-systemready-linux-distros-debian
|
||||
@@ -1,7 +0,0 @@
|
||||
header:
|
||||
version: 13
|
||||
includes:
|
||||
- kas/arm-systemready-firmware.yml
|
||||
|
||||
target:
|
||||
- arm-systemready-linux-distros-opensuse
|
||||
@@ -1,14 +1,11 @@
|
||||
header:
|
||||
version: 14
|
||||
|
||||
env:
|
||||
DISPLAY: ""
|
||||
version: 11
|
||||
|
||||
distro: poky-tiny
|
||||
|
||||
defaults:
|
||||
repos:
|
||||
branch: nanbield
|
||||
refspec: mickledore
|
||||
|
||||
repos:
|
||||
meta-arm:
|
||||
@@ -19,31 +16,24 @@ repos:
|
||||
|
||||
poky:
|
||||
url: https://git.yoctoproject.org/git/poky
|
||||
commit: 2e9c2a2381105f1306bcbcb54816cbc5d8110eff
|
||||
refspec: 31dd418207f6c95ef0aad589cd03cd2a4c9a8bf2
|
||||
layers:
|
||||
meta:
|
||||
meta-poky:
|
||||
meta-yocto-bsp:
|
||||
|
||||
meta-openembedded:
|
||||
url: https://git.openembedded.org/meta-openembedded
|
||||
commit: 1750c66ae8e4268c472c0b2b94748a59d6ef866d
|
||||
refspec: 5a01ab461c9bcabcbb2298236602373948f8f073
|
||||
layers:
|
||||
meta-oe:
|
||||
meta-python:
|
||||
meta-perl:
|
||||
|
||||
meta-secure-core:
|
||||
url: https://github.com/wind-river/meta-secure-core.git
|
||||
commit: e29165a1031dcf601edbed1733cedd64826672a5
|
||||
layers:
|
||||
meta:
|
||||
meta-signing-key:
|
||||
meta-efi-secure-boot:
|
||||
|
||||
local_conf_header:
|
||||
base: |
|
||||
CONF_VERSION = "2"
|
||||
PACKAGE_CLASSES = "package_ipk"
|
||||
LICENSE_FLAGS_ACCEPTED += "armcompiler"
|
||||
BB_NUMBER_THREADS ?= "16"
|
||||
PARALLEL_MAKE ?= "-j16"
|
||||
PACKAGECONFIG:append:pn-perf = " coresight"
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 11
|
||||
includes:
|
||||
- kas/corstone1000-base.yml
|
||||
- kas/fvp-eula.yml
|
||||
|
||||
machine: corstone1000-fvp
|
||||
|
||||
@@ -10,7 +9,8 @@ local_conf_header:
|
||||
fvp-config: |
|
||||
# Remove Dropbear SSH as it will not fit into the corstone1000 image.
|
||||
IMAGE_FEATURES:remove = " ssh-server-dropbear"
|
||||
INHERIT += "fvpboot"
|
||||
INHERIT = " ${@bb.utils.contains('BUILD_ARCH', 'x86_64', 'fvpboot', '', d)}"
|
||||
LICENSE_FLAGS_ACCEPTED:append = " Arm-FVP-EULA"
|
||||
|
||||
target:
|
||||
- corstone1000-image
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
header:
|
||||
version: 14
|
||||
version: 11
|
||||
includes:
|
||||
- kas/corstone1000-base.yml
|
||||
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
header:
|
||||
version: 11
|
||||
|
||||
distro: poky-tiny
|
||||
|
||||
defaults:
|
||||
repos:
|
||||
refspec: master
|
||||
|
||||
repos:
|
||||
meta-arm:
|
||||
layers:
|
||||
meta-arm:
|
||||
meta-arm-bsp:
|
||||
meta-arm-toolchain:
|
||||
|
||||
poky:
|
||||
url: https://git.yoctoproject.org/git/poky
|
||||
refspec: master
|
||||
layers:
|
||||
meta:
|
||||
meta-poky:
|
||||
meta-yocto-bsp:
|
||||
|
||||
meta-openembedded:
|
||||
url: https://git.openembedded.org/meta-openembedded
|
||||
refspec: master
|
||||
layers:
|
||||
meta-oe:
|
||||
meta-python:
|
||||
|
||||
local_conf_header:
|
||||
base: |
|
||||
CONF_VERSION = "2"
|
||||
PACKAGE_CLASSES = "package_ipk"
|
||||
LICENSE_FLAGS_ACCEPTED += "armcompiler"
|
||||
BB_NUMBER_THREADS ?= "16"
|
||||
PARALLEL_MAKE ?= "-j16"
|
||||
PACKAGECONFIG:append:pn-perf = " coresight"
|
||||
fvp-config: |
|
||||
IMAGE_CLASSES:append = " ${@bb.utils.contains('BUILD_ARCH', 'x86_64', 'fvpboot', '', d)}"
|
||||
LICENSE_FLAGS_ACCEPTED:append = " Arm-FVP-EULA"
|
||||
|
||||
machine: corstone500
|
||||
|
||||
target:
|
||||
- core-image-minimal
|
||||
@@ -1,16 +1,8 @@
|
||||
header:
|
||||
version: 13
|
||||
includes:
|
||||
- kas/fvp-eula.yml
|
||||
|
||||
env:
|
||||
DISPLAY:
|
||||
WAYLAND_DISPLAY:
|
||||
XAUTHORITY:
|
||||
|
||||
version: 9
|
||||
|
||||
distro: poky
|
||||
machine: fvp-base
|
||||
machine: fvp-baser-aemv8r64
|
||||
|
||||
defaults:
|
||||
repos:
|
||||
@@ -18,6 +10,8 @@ defaults:
|
||||
|
||||
repos:
|
||||
meta-arm:
|
||||
url: https://git.yoctoproject.org/git/meta-arm
|
||||
path: layers/meta-arm
|
||||
layers:
|
||||
meta-arm:
|
||||
meta-arm-bsp:
|
||||
@@ -30,6 +24,9 @@ repos:
|
||||
meta:
|
||||
meta-poky:
|
||||
|
||||
env:
|
||||
FVP_BASE_R_ARM_EULA_ACCEPT: "False"
|
||||
|
||||
local_conf_header:
|
||||
base: |
|
||||
CONF_VERSION = "2"
|
||||
@@ -37,7 +34,8 @@ local_conf_header:
|
||||
PACKAGECONFIG:remove:pn-qemu-system-native = "gtk+ sdl"
|
||||
EXTRA_IMAGE_FEATURES:append = " debug-tweaks ssh-server-openssh"
|
||||
CORE_IMAGE_EXTRA_INSTALL:append = " ssh-pregen-hostkeys"
|
||||
IMAGE_CLASSES:append = " testimage fvpboot"
|
||||
LICENSE_FLAGS_ACCEPTED:append = " ${@oe.utils.vartrue('FVP_BASE_R_ARM_EULA_ACCEPT', 'Arm-FVP-EULA', '', d)}"
|
||||
IMAGE_CLASSES:append = " testimage"
|
||||
|
||||
target:
|
||||
- core-image-minimal
|
||||
@@ -0,0 +1,8 @@
|
||||
header:
|
||||
version: 9
|
||||
includes:
|
||||
- kas/fvp-baser-aemv8r64-bsp.yml
|
||||
|
||||
local_conf_header:
|
||||
base-rt: |
|
||||
PREFERRED_PROVIDER_virtual/kernel = "linux-yocto-rt"
|
||||
@@ -1,5 +0,0 @@
|
||||
header:
|
||||
version: 13
|
||||
|
||||
env:
|
||||
ARM_FVP_EULA_ACCEPT:
|
||||
@@ -9,18 +9,13 @@ BBFILE_COLLECTIONS += "meta-arm-bsp"
|
||||
BBFILE_PATTERN_meta-arm-bsp = "^${LAYERDIR}/"
|
||||
BBFILE_PRIORITY_meta-arm-bsp = "5"
|
||||
|
||||
LAYERSERIES_COMPAT_meta-arm-bsp = "nanbield"
|
||||
LAYERSERIES_COMPAT_meta-arm-bsp = "mickledore"
|
||||
|
||||
LAYERDEPENDS_meta-arm-bsp = "core meta-arm"
|
||||
# This won't be used by layerindex-fetch, but works everywhere else
|
||||
LAYERDEPENDS_meta-arm-bsp:append:corstone1000 = " meta-python openembedded-layer efi-secure-boot"
|
||||
LAYERDEPENDS_meta-arm-bsp:append:corstone1000 = " meta-python openembedded-layer"
|
||||
LAYERDEPENDS_meta-arm-bsp:append:musca-b1 = " meta-python"
|
||||
LAYERDEPENDS_meta-arm-bsp:append:musca-s1 = " meta-python"
|
||||
|
||||
# Additional license directories.
|
||||
LICENSE_PATH += "${LAYERDIR}/custom-licenses"
|
||||
|
||||
BBFILES_DYNAMIC += " \
|
||||
meta-arm-systemready:${LAYERDIR}/dynamic-layers/meta-arm-systemready/*/*/*.bb \
|
||||
meta-arm-systemready:${LAYERDIR}/dynamic-layers/meta-arm-systemready/*/*/*.bbappend \
|
||||
"
|
||||
|
||||
@@ -8,26 +8,23 @@ TFA_TARGET_PLATFORM = "fvp"
|
||||
TFM_PLATFORM_IS_FVP = "TRUE"
|
||||
|
||||
# testimage config
|
||||
TEST_TARGET = "OEFVPTarget"
|
||||
TEST_SUITES = "fvp_boot"
|
||||
TEST_TARGET = "OEFVPSerialTarget"
|
||||
TEST_SUITES = "linuxboot"
|
||||
|
||||
# FVP Config
|
||||
FVP_PROVIDER ?= "fvp-corstone1000-native"
|
||||
FVP_EXE ?= "FVP_Corstone-1000"
|
||||
FVP_CONSOLE ?= "host_terminal_0"
|
||||
|
||||
#Disable Time Annotation
|
||||
FASTSIM_DISABLE_TA = "0"
|
||||
|
||||
# FVP Parameters
|
||||
FVP_CONFIG[se.trustedBootROMloader.fname] ?= "bl1.bin"
|
||||
FVP_CONFIG[se.trustedBootROMloader.fname] ?= "${DEPLOY_DIR_IMAGE}/bl1.bin"
|
||||
FVP_CONFIG[board.xnvm_size] ?= "64"
|
||||
FVP_CONFIG[se.trustedSRAM_config] ?= "6"
|
||||
FVP_CONFIG[se.BootROM_config] ?= "3"
|
||||
FVP_CONFIG[board.hostbridge.interfaceName] ?= "tap0"
|
||||
FVP_CONFIG[board.smsc_91c111.enabled] ?= "1"
|
||||
FVP_CONFIG[board.hostbridge.userNetworking] ?= "true"
|
||||
FVP_CONFIG[board.hostbridge.userNetPorts] ?= "5555=5555,8080=80,2222=22"
|
||||
FVP_CONFIG[board.hostbridge.userNetPorts] ?= "5555=5555,8080=80,8022=22"
|
||||
FVP_CONFIG[board.se_flash_size] ?= "8192"
|
||||
FVP_CONFIG[diagnostics] ?= "4"
|
||||
FVP_CONFIG[disable_visualisation] ?= "true"
|
||||
@@ -35,10 +32,10 @@ FVP_CONFIG[se.nvm.update_raw_image] ?= "0"
|
||||
FVP_CONFIG[se.cryptocell.USER_OTP_FILTERING_DISABLE] ?= "1"
|
||||
|
||||
# Boot image
|
||||
FVP_DATA ?= "board.flash0=${IMAGE_NAME}.wic@0x68000000"
|
||||
FVP_DATA ?= "board.flash0=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.wic@0x68000000"
|
||||
|
||||
# External system (cortex-M3)
|
||||
FVP_CONFIG[extsys_harness0.extsys_flashloader.fname] ?= "es_flashfw.bin"
|
||||
FVP_CONFIG[extsys_harness0.extsys_flashloader.fname] ?= "${DEPLOY_DIR_IMAGE}/es_flashfw.bin"
|
||||
|
||||
# FVP Terminals
|
||||
FVP_TERMINALS[host.host_terminal_0] ?= "Normal World Console"
|
||||
@@ -52,19 +49,3 @@ FVP_CONFIG[board.msd_mmc.p_fast_access] ?= "0"
|
||||
FVP_CONFIG[board.msd_mmc.diagnostics] ?= "2"
|
||||
FVP_CONFIG[board.msd_mmc.p_max_block_count] ?= "0xFFFF"
|
||||
FVP_CONFIG[board.msd_config.pl180_fifo_depth] ?= "16"
|
||||
FVP_CONFIG[board.msd_mmc.support_unpadded_images] ?= "true"
|
||||
|
||||
# MMC2 card configuration
|
||||
FVP_CONFIG[board.msd_mmc_2.card_type] ?= "SDHC"
|
||||
FVP_CONFIG[board.msd_mmc_2.p_fast_access] ?= "0"
|
||||
FVP_CONFIG[board.msd_mmc_2.diagnostics] ?= "2"
|
||||
FVP_CONFIG[board.msd_mmc_2.p_max_block_count] ?= "0xFFFF"
|
||||
FVP_CONFIG[board.msd_config_2.pl180_fifo_depth] ?= "16"
|
||||
FVP_CONFIG[board.msd_mmc_2.support_unpadded_images] ?= "true"
|
||||
|
||||
# Virtio-Net configuration
|
||||
FVP_CONFIG[board.virtio_net.enabled] ?= "1"
|
||||
FVP_CONFIG[board.virtio_net.hostbridge.interfaceName] ?= "eth1"
|
||||
FVP_CONFIG[board.virtio_net.hostbridge.userNetworking] ?= "true"
|
||||
FVP_CONFIG[board.virtio_net.hostbridge.userNetPorts] ?= "5555=5555,8080=80,2222=22"
|
||||
FVP_CONFIG[board.virtio_net.transport] ?= "legacy"
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
#@TYPE: Machine
|
||||
#@NAME: Corstone-500 machine
|
||||
#@DESCRIPTION: Machine configuration for the Corstone-500 platform
|
||||
|
||||
require conf/machine/include/arm/armv7a/tune-cortexa5.inc
|
||||
|
||||
# Corstone-500 is built against poky-tiny distro.
|
||||
# poky-tiny sets PREFERRED_PROVIDER_virtual/kernel to linux-yocto-tiny.
|
||||
# Since distro config is evaluated after the machine config, we need to
|
||||
# use the strongest override possible (forcevariable) so the
|
||||
# PREFERRED_PROVIDER_virtual/kernel specified in the machine config will
|
||||
# apply.
|
||||
#
|
||||
PREFERRED_PROVIDER_virtual/kernel:forcevariable = "linux-yocto"
|
||||
PREFERRED_VERSION_linux-yocto ?= "6.1%"
|
||||
|
||||
EXTRA_IMAGEDEPENDS += "trusted-firmware-a u-boot"
|
||||
|
||||
IMAGE_CLASSES += "wic_nopt"
|
||||
IMAGE_FEATURES += "debug-tweaks"
|
||||
IMAGE_FSTYPES:forcevariable = "cpio.gz squashfs wic wic.nopt"
|
||||
|
||||
SERIAL_CONSOLES = "115200;ttyAMA0"
|
||||
|
||||
# Corstone-500 u-boot configuration
|
||||
UBOOT_MACHINE = "corstone500_defconfig"
|
||||
UBOOT_IMAGE_ENTRYPOINT = "0x84000000"
|
||||
UBOOT_IMAGE_LOADADDRESS = "0x84000000"
|
||||
PREFERRED_VERSION_u-boot ?= "2023.01"
|
||||
|
||||
# making sure EXTRA_IMAGEDEPENDS will be used while creating the image
|
||||
WKS_FILE_DEPENDS:append = " ${EXTRA_IMAGEDEPENDS}"
|
||||
|
||||
WKS_FILE ?= "core-image-minimal.corstone500.wks"
|
||||
|
||||
TEST_TARGET = "OEFVPSerialTarget"
|
||||
TEST_SUITES = "linuxboot"
|
||||
|
||||
FVP_PROVIDER ?= "fvp-corstone500-native"
|
||||
FVP_EXE ?= "FVP_Corstone-500"
|
||||
FVP_CONFIG[board.flashloader0.fname] ?= "${DEPLOY_DIR_IMAGE}/bl1.bin"
|
||||
FVP_DATA ?= "css.cluster.cpu0=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.wic.nopt@0x80000000"
|
||||
FVP_CONSOLE ?= "terminal_0"
|
||||
FVP_TERMINALS[css.terminal_0] ?= "console"
|
||||
FVP_TERMINALS[css.terminal_1] ?= ""
|
||||
|
||||
# Disable openssl in kmod to shink the initramfs size
|
||||
PACKAGECONFIG:remove:pn-kmod = "openssl"
|
||||
@@ -4,59 +4,16 @@
|
||||
#@NAME: Armv8-A Base Platform FVP machine
|
||||
#@DESCRIPTION: Machine configuration for Armv8-A Base Platform FVP model
|
||||
|
||||
require conf/machine/include/fvp-common.inc
|
||||
require conf/machine/include/arm/arch-armv8a.inc
|
||||
|
||||
TUNE_FEATURES = "aarch64"
|
||||
|
||||
ARM_SYSTEMREADY_FIRMWARE = "trusted-firmware-a:do_deploy"
|
||||
ARM_SYSTEMREADY_ACS_CONSOLE = "default"
|
||||
EXTRA_IMAGEDEPENDS = "${ARM_SYSTEMREADY_FIRMWARE}"
|
||||
|
||||
MACHINE_FEATURES = "efi"
|
||||
|
||||
IMAGE_NAME_SUFFIX = ""
|
||||
IMAGE_FSTYPES += "wic"
|
||||
WKS_FILE ?= "efi-disk.wks.in"
|
||||
|
||||
SERIAL_CONSOLES = "115200;ttyAMA0"
|
||||
|
||||
PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
|
||||
KERNEL_DEVICETREE = "arm/fvp-base-revc.dtb"
|
||||
KERNEL_IMAGETYPE = "Image"
|
||||
|
||||
EXTRA_IMAGEDEPENDS += "trusted-firmware-a"
|
||||
PREFERRED_VERSION_u-boot ?= "2023.01"
|
||||
|
||||
# FVP u-boot configuration
|
||||
UBOOT_MACHINE = "vexpress_fvp_defconfig"
|
||||
UBOOT_MACHINE = "vexpress_aemv8a_semi_defconfig"
|
||||
|
||||
EFI_PROVIDER ?= "grub-efi"
|
||||
KERNEL_IMAGETYPE = "Image"
|
||||
|
||||
# As this is a virtual target that will not be used in the real world there is
|
||||
# no need for real SSH keys.
|
||||
MACHINE_EXTRA_RRECOMMENDS += "ssh-pregen-hostkeys"
|
||||
|
||||
TEST_TARGET = "OEFVPTarget"
|
||||
TEST_TARGET_IP = "127.0.0.1:2222"
|
||||
DEFAULT_TEST_SUITES:append = " fvp_boot fvp_devices"
|
||||
TEST_FVP_DEVICES ?= "rtc watchdog networking virtiorng cpu_hotplug"
|
||||
|
||||
FVP_PROVIDER ?= "fvp-base-a-aem-native"
|
||||
FVP_EXE ?= "FVP_Base_RevC-2xAEMvA"
|
||||
FVP_CONFIG[bp.ve_sysregs.exit_on_shutdown] ?= "1"
|
||||
FVP_CONFIG[bp.virtio_net.enabled] ?= "1"
|
||||
FVP_CONFIG[bp.virtio_net.hostbridge.userNetworking] ?= "1"
|
||||
# Tell testimage to connect to localhost:2222, and forward that to SSH in the FVP.
|
||||
FVP_CONFIG[bp.virtio_net.hostbridge.userNetPorts] = "2222=22"
|
||||
FVP_CONFIG[bp.virtio_rng.enabled] ?= "1"
|
||||
FVP_CONFIG[cache_state_modelled] ?= "0"
|
||||
FVP_CONFIG[bp.secureflashloader.fname] ?= "bl1-fvp.bin"
|
||||
FVP_CONFIG[bp.flashloader0.fname] ?= "fip-fvp.bin"
|
||||
FVP_CONFIG[bp.virtioblockdevice.image_path] ?= "${IMAGE_NAME}.wic"
|
||||
# Set the baseline to ARMv8.4, as the default is 8.0.
|
||||
FVP_CONFIG[cluster0.has_arm_v8-4] = "1"
|
||||
FVP_CONFIG[cluster1.has_arm_v8-4] = "1"
|
||||
FVP_CONSOLES[default] = "terminal_0"
|
||||
FVP_TERMINALS[bp.terminal_0] ?= "Console"
|
||||
FVP_TERMINALS[bp.terminal_1] ?= ""
|
||||
FVP_TERMINALS[bp.terminal_2] ?= ""
|
||||
FVP_TERMINALS[bp.terminal_3] ?= ""
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
# Configuration for Fixed Virtual Platform BaseR AEMv8r64 Machine
|
||||
|
||||
#@TYPE: Machine
|
||||
#@NAME: FVP BaseR AEMv8r64 Machine
|
||||
#@DESCRIPTION: Machine configuration for FVP BaseR AEMv8r64
|
||||
|
||||
require conf/machine/include/arm/armv8r/arch-armv8r64.inc
|
||||
|
||||
EXTRA_IMAGEDEPENDS += "boot-wrapper-aarch64"
|
||||
|
||||
PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
|
||||
PREFERRED_VERSION_u-boot ?= "2022.10"
|
||||
|
||||
KERNEL_IMAGETYPE = "Image"
|
||||
KERNEL_DEVICETREE = "arm/fvp-baser-aemv8r64.dtb"
|
||||
|
||||
UBOOT_MACHINE ?= "vexpress_aemv8r_defconfig"
|
||||
|
||||
SERIAL_CONSOLES = "115200;ttyAMA0"
|
||||
|
||||
IMAGE_CLASSES:append = " fvpboot"
|
||||
IMAGE_FSTYPES += "wic"
|
||||
WKS_FILE ?= "efi-disk.wks.in"
|
||||
EFI_PROVIDER ?= "grub-efi"
|
||||
MACHINE_FEATURES:append = " efi"
|
||||
|
||||
# As this is a virtual target that will not be used in the real world there is
|
||||
# no need for real SSH keys.
|
||||
MACHINE_EXTRA_RRECOMMENDS += "ssh-pregen-hostkeys"
|
||||
|
||||
# testimage configuration
|
||||
TEST_TARGET = "OEFVPSerialTarget"
|
||||
TEST_SUITES = "linuxboot"
|
||||
TEST_TARGET_IP ?= "127.0.0.1:8022"
|
||||
TEST_SERVER_IP ?= "127.0.1.1"
|
||||
|
||||
FVP_EXTRA_ARGS = "-a cluster0*=${DEPLOY_DIR_IMAGE}/linux-system.axf"
|
||||
FVP_PROVIDER ?= "fvp-base-r-aem-native"
|
||||
FVP_EXE ?= "FVP_BaseR_AEMv8R"
|
||||
FVP_CONSOLE ?= "terminal_0"
|
||||
|
||||
# FVP parameters
|
||||
FVP_CONFIG[bp.exclusive_monitor.monitor_access_level] ?= "2"
|
||||
FVP_CONFIG[bp.refcounter.non_arch_start_at_default] ?= "1"
|
||||
FVP_CONFIG[bp.refcounter.use_real_time] ?= "1"
|
||||
FVP_CONFIG[bp.ve_sysregs.exit_on_shutdown] ?= "1"
|
||||
FVP_CONFIG[bp.virtio_net.enabled] ?= "1"
|
||||
FVP_CONFIG[bp.virtio_net.hostbridge.userNetPorts] ?= "8022=22"
|
||||
FVP_CONFIG[bp.virtio_net.hostbridge.userNetworking] ?= "1"
|
||||
FVP_CONFIG[bp.virtio_net.secure_accesses] = "1"
|
||||
FVP_CONFIG[bp.virtio_rng.enabled] ?= "1"
|
||||
FVP_CONFIG[bp.virtio_rng.secure_accesses] = "1"
|
||||
FVP_CONFIG[bp.virtioblockdevice.image_path] ?= "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.wic"
|
||||
FVP_CONFIG[bp.virtioblockdevice.secure_accesses] = "1"
|
||||
FVP_CONFIG[cache_state_modelled] ?= "0"
|
||||
FVP_CONFIG[cci400.force_on_from_start] = "1"
|
||||
FVP_CONFIG[cluster0.gicv3.cpuintf-mmap-access-level] ?= "2"
|
||||
FVP_CONFIG[cluster0.gicv3.extended-interrupt-range-support] ?= "1"
|
||||
FVP_CONFIG[cluster0.gicv3.SRE-EL2-enable-RAO] ?= "1"
|
||||
FVP_CONFIG[cluster0.gicv3.SRE-enable-action-on-mmap] ?= "2"
|
||||
FVP_CONFIG[cluster0.has_aarch64] ?= "1"
|
||||
FVP_CONFIG[gic_distributor.GICD_CTLR-DS-1-means-secure-only] ?= "1"
|
||||
FVP_CONFIG[gic_distributor.has-two-security-states] ?= "0"
|
||||
@@ -0,0 +1,10 @@
|
||||
require conf/machine/include/arm/arch-armv8r.inc
|
||||
|
||||
TUNE_FEATURES:tune-armv8r =+ "aarch64"
|
||||
PACKAGE_EXTRA_ARCHS:tune-armv8r =+ "aarch64"
|
||||
BASE_LIB:tune-armv8r = "lib64"
|
||||
BASE_LIB:tune-armv8r-crc = "lib64"
|
||||
BASE_LIB:tune-armv8r-crypto = "lib64"
|
||||
BASE_LIB:tune-armv8r-simd = "lib64"
|
||||
BASE_LIB:tune-armv8r-crc-simd = "lib64"
|
||||
BASE_LIB:tune-armv8r-crc-crypto-simd = "lib64"
|
||||
@@ -5,8 +5,6 @@ MACHINEOVERRIDES =. "corstone1000:"
|
||||
# TF-A
|
||||
TFA_PLATFORM = "corstone1000"
|
||||
EXTRA_IMAGEDEPENDS += "trusted-firmware-a"
|
||||
PREFERRED_VERSION_trusted-firmware-a ?= "2.9.%"
|
||||
PREFERRED_VERSION_tf-a-tests ?= "2.8.%"
|
||||
|
||||
TFA_BL2_BINARY = "bl2-corstone1000.bin"
|
||||
TFA_FIP_BINARY = "fip-corstone1000.bin"
|
||||
@@ -24,7 +22,7 @@ TFM_SIGN_PRIVATE_KEY = "${libdir}/tfm-scripts/root-RSA-3072_1.pem"
|
||||
RE_IMAGE_OFFSET = "0x1000"
|
||||
|
||||
# u-boot
|
||||
PREFERRED_VERSION_u-boot ?= "2023.07%"
|
||||
PREFERRED_VERSION_u-boot ?= "2023.01"
|
||||
EXTRA_IMAGEDEPENDS += "u-boot"
|
||||
|
||||
UBOOT_CONFIG ??= "EFI"
|
||||
@@ -36,8 +34,8 @@ UBOOT_ARCH = "arm"
|
||||
UBOOT_EXTLINUX = "0"
|
||||
|
||||
#optee
|
||||
PREFERRED_VERSION_optee-os ?= "3.22%"
|
||||
PREFERRED_VERSION_optee-client ?= "3.22%"
|
||||
PREFERRED_VERSION_optee-os ?= "3.20.%"
|
||||
PREFERRED_VERSION_optee-client ?= "3.18.%"
|
||||
EXTRA_IMAGEDEPENDS += "optee-os"
|
||||
OPTEE_ARCH = "arm64"
|
||||
OPTEE_BINARY = "tee-pager_v2.bin"
|
||||
@@ -52,14 +50,13 @@ EXTRA_IMAGEDEPENDS += "external-system"
|
||||
|
||||
# Linux kernel
|
||||
PREFERRED_PROVIDER_virtual/kernel:forcevariable = "linux-yocto"
|
||||
PREFERRED_VERSION_linux-yocto = "6.5%"
|
||||
PREFERRED_VERSION_linux-yocto = "6.1%"
|
||||
KERNEL_IMAGETYPE = "Image.gz"
|
||||
|
||||
INITRAMFS_IMAGE_BUNDLE ?= "1"
|
||||
|
||||
#telling the build system which image is responsible of the generation of the initramfs rootfs
|
||||
INITRAMFS_IMAGE = "corstone1000-initramfs-image"
|
||||
IMAGE_NAME_SUFFIX = ""
|
||||
|
||||
# add FF-A support in the kernel
|
||||
MACHINE_FEATURES += "arm-ffa"
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
# FVP common parameters
|
||||
|
||||
#
|
||||
# Capturing FVP common configurations (Armv8-A Base Platform FVP,
|
||||
# Armv8-A Foundation Platform and Armv7-A Base Platform FVP).
|
||||
#
|
||||
|
||||
MACHINE_FEATURES = "optee"
|
||||
|
||||
IMAGE_FSTYPES += "wic"
|
||||
WKS_FILE ?= "fvp-base.wks"
|
||||
|
||||
SERIAL_CONSOLES = "115200;ttyAMA0"
|
||||
|
||||
PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
|
||||
|
||||
KERNEL_DEVICETREE = "arm/fvp-base-revc.dtb"
|
||||
|
||||
EXTRA_IMAGEDEPENDS += "trusted-firmware-a"
|
||||
|
||||
# As this is a virtual target that will not be used in the real world there is
|
||||
# no need for real SSH keys.
|
||||
MACHINE_EXTRA_RRECOMMENDS += "ssh-pregen-hostkeys"
|
||||
|
||||
TEST_TARGET = "OEFVPTarget"
|
||||
TEST_TARGET_IP = "127.0.0.1:8022"
|
||||
|
||||
FVP_PROVIDER ?= "fvp-base-a-aem-native"
|
||||
FVP_EXE ?= "FVP_Base_RevC-2xAEMvA"
|
||||
FVP_CONFIG[bp.ve_sysregs.exit_on_shutdown] ?= "1"
|
||||
FVP_CONFIG[bp.virtio_net.enabled] ?= "1"
|
||||
FVP_CONFIG[bp.virtio_net.hostbridge.userNetworking] ?= "1"
|
||||
# Tell testimage to connect to localhost:8022, and forward that to SSH in the FVP.
|
||||
FVP_CONFIG[bp.virtio_net.hostbridge.userNetPorts] = "8022=22"
|
||||
FVP_CONFIG[cache_state_modelled] ?= "0"
|
||||
FVP_CONFIG[bp.secureflashloader.fname] ?= "${DEPLOY_DIR_IMAGE}/bl1-fvp.bin"
|
||||
FVP_CONFIG[bp.flashloader0.fname] ?= "${DEPLOY_DIR_IMAGE}/fip-fvp.bin"
|
||||
FVP_CONFIG[bp.virtioblockdevice.image_path] ?= "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.wic"
|
||||
# Set the baseline to ARMv8.4, as the default is 8.0.
|
||||
FVP_CONFIG[cluster0.has_arm_v8-4] = "1"
|
||||
FVP_CONFIG[cluster1.has_arm_v8-4] = "1"
|
||||
FVP_CONSOLE ?= "terminal_0"
|
||||
FVP_DATA ?= "cluster0.cpu0=${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}@0x80080000 \
|
||||
cluster0.cpu0=${DEPLOY_DIR_IMAGE}/fvp-base-revc.dtb@0x8fc00000"
|
||||
FVP_TERMINALS[bp.terminal_0] ?= "Console"
|
||||
FVP_TERMINALS[bp.terminal_1] ?= ""
|
||||
FVP_TERMINALS[bp.terminal_2] ?= ""
|
||||
FVP_TERMINALS[bp.terminal_3] ?= ""
|
||||
@@ -6,17 +6,18 @@ MACHINEOVERRIDES =. "tc:"
|
||||
|
||||
# Das U-boot
|
||||
UBOOT_MACHINE ?= "total_compute_defconfig"
|
||||
PREFERRED_VERSION_u-boot ?= "2022.04"
|
||||
UBOOT_RD_LOADADDRESS = "0x88000000"
|
||||
UBOOT_RD_ENTRYPOINT = "0x88000000"
|
||||
UBOOT_LOADADDRESS = "0x80080000"
|
||||
UBOOT_ENTRYPOINT = "0x80080000"
|
||||
|
||||
PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
|
||||
PREFERRED_PROVIDER_virtual/kernel ?= "linux-arm64-ack"
|
||||
|
||||
# OP-TEE
|
||||
PREFERRED_VERSION_optee-os ?= "3.20%"
|
||||
PREFERRED_VERSION_optee-client ?= "3.20%"
|
||||
PREFERRED_VERSION_optee-test ?= "3.20%"
|
||||
PREFERRED_VERSION_optee-os ?= "3.18%"
|
||||
PREFERRED_VERSION_optee-client ?= "3.18%"
|
||||
PREFERRED_VERSION_optee-test ?= "3.18%"
|
||||
|
||||
# Cannot use the default zImage on arm64
|
||||
KERNEL_IMAGETYPE = "Image"
|
||||
@@ -25,12 +26,10 @@ KERNEL_CLASSES = " kernel-fitimage "
|
||||
|
||||
IMAGE_FSTYPES += "cpio.gz"
|
||||
INITRAMFS_IMAGE ?= "core-image-minimal"
|
||||
IMAGE_NAME_SUFFIX = ""
|
||||
|
||||
SERIAL_CONSOLES = "115200;ttyAMA0"
|
||||
|
||||
EXTRA_IMAGEDEPENDS += "trusted-firmware-a optee-os"
|
||||
PREFERRED_VERSION_trusted-firmware-a ?= "2.8.%"
|
||||
# FIXME - there is signed image dependency/race with testimage.
|
||||
# This should be fixed in oe-core
|
||||
TESTIMAGEDEPENDS:append = " virtual/kernel:do_deploy"
|
||||
|
||||
@@ -27,4 +27,3 @@ UBOOT_MACHINE = "vexpress_aemv8a_juno_defconfig"
|
||||
|
||||
INITRAMFS_IMAGE_BUNDLE ?= "1"
|
||||
INITRAMFS_IMAGE = "core-image-minimal"
|
||||
IMAGE_NAME_SUFFIX = ""
|
||||
|
||||
@@ -19,24 +19,20 @@ WKS_FILE_DEPENDS:append = " ${EXTRA_IMAGEDEPENDS}"
|
||||
|
||||
# Use kernel provided by yocto
|
||||
PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
|
||||
PREFERRED_VERSION_linux-yocto ?= "6.5%"
|
||||
PREFERRED_VERSION_linux-yocto ?= "6.1%"
|
||||
|
||||
# RTL8168E Gigabit Ethernet Controller is attached to the PCIe interface
|
||||
MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "linux-firmware-rtl8168"
|
||||
|
||||
# TF-A
|
||||
EXTRA_IMAGEDEPENDS += "trusted-firmware-a"
|
||||
TFA_PLATFORM = "n1sdp"
|
||||
|
||||
# SCP
|
||||
EXTRA_IMAGEDEPENDS += "virtual/control-processor-firmware"
|
||||
|
||||
#UEFI EDK2 firmware
|
||||
EXTRA_IMAGEDEPENDS += "edk2-firmware"
|
||||
PREFERRED_VERSION_edk2-firmware ?= "202305"
|
||||
PREFERRED_VERSION_edk2-firmware ?= "202211"
|
||||
|
||||
#optee
|
||||
PREFERRED_VERSION_optee-os ?= "3.22.%"
|
||||
PREFERRED_VERSION_optee-os ?= "3.20.%"
|
||||
|
||||
#grub-efi
|
||||
EFI_PROVIDER ?= "grub-efi"
|
||||
|
||||
@@ -6,20 +6,20 @@
|
||||
|
||||
require conf/machine/include/tc.inc
|
||||
|
||||
TEST_TARGET = "OEFVPTarget"
|
||||
TEST_SUITES = "fvp_boot"
|
||||
TEST_TARGET = "OEFVPSerialTarget"
|
||||
TEST_SUITES = "linuxboot"
|
||||
|
||||
# FVP Config
|
||||
FVP_PROVIDER ?= "fvp-tc1-native"
|
||||
FVP_EXE ?= "FVP_TC1"
|
||||
|
||||
# FVP Parameters
|
||||
FVP_CONFIG[css.scp.ROMloader.fname] ?= "scp_romfw.bin"
|
||||
FVP_CONFIG[css.trustedBootROMloader.fname] ?= "bl1-tc.bin"
|
||||
FVP_CONFIG[board.flashloader0.fname] ?= "fip_gpt-tc.bin"
|
||||
FVP_CONFIG[css.scp.ROMloader.fname] ?= "${DEPLOY_DIR_IMAGE}/scp_romfw.bin"
|
||||
FVP_CONFIG[css.trustedBootROMloader.fname] ?= "${DEPLOY_DIR_IMAGE}/bl1-tc.bin"
|
||||
FVP_CONFIG[board.flashloader0.fname] ?= "${DEPLOY_DIR_IMAGE}/fip_gpt-tc.bin"
|
||||
|
||||
#FVP_CONFIG[board.hostbridge.userNetworking] ?= "true"
|
||||
#FVP_CONFIG[board.hostbridge.userNetPorts] ?= "2222=22"
|
||||
#FVP_CONFIG[board.hostbridge.userNetPorts] ?= "8022=22"
|
||||
#smsc ethernet takes a very long time to come up. disable now to prevent testimage timeout
|
||||
#FVP_CONFIG[board.smsc_91c111.enabled] ?= "1"
|
||||
|
||||
@@ -28,4 +28,4 @@ FVP_TERMINALS[soc.terminal_s0] ?= "Secure Console"
|
||||
FVP_TERMINALS[soc.terminal_s1] ?= "Console"
|
||||
|
||||
# Boot image
|
||||
FVP_DATA ?= "board.dram=fitImage-core-image-minimal-tc1-tc1@0x20000000"
|
||||
FVP_DATA ?= "board.dram=${DEPLOY_DIR_IMAGE}/fitImage-core-image-minimal-tc1-tc1@0x20000000"
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
version: 2
|
||||
build:
|
||||
os: "ubuntu-22.04"
|
||||
tools:
|
||||
python: "3.9"
|
||||
sphinx:
|
||||
configuration: meta-arm-bsp/documentation/corstone1000/conf.py
|
||||
formats:
|
||||
- pdf
|
||||
python:
|
||||
install:
|
||||
- requirements: meta-arm-bsp/documentation/requirements.txt
|
||||
@@ -10,77 +10,6 @@ Change Log
|
||||
This document contains a summary of the new features, changes and
|
||||
fixes in each release of Corstone-1000 software stack.
|
||||
|
||||
***************
|
||||
Version 2023.11
|
||||
***************
|
||||
|
||||
Changes
|
||||
=======
|
||||
|
||||
- Making Corstone-1000 SystemReady IR 2.0 certifiable
|
||||
- Allow booting Debian & OpenSUSE on FVP
|
||||
- Add support for two MMC cards for the FVP
|
||||
- Add signed capsule update support
|
||||
- Enable on-disk capsule update
|
||||
- Add the feature of purging specific DT nodes in U-Boot before Linux
|
||||
- Add Ethernet over VirtIO support in U-Boot
|
||||
- Add support for unaligned MMC card images
|
||||
- Reducing the out-of-tree patches by upstreaming them to the corresponding open-source projects
|
||||
- SW components upgrades
|
||||
- Bug fixes
|
||||
|
||||
Corstone-1000 components versions
|
||||
=================================
|
||||
|
||||
+-------------------------------------------+-----------------------------------------------------+
|
||||
| arm-ffa-tee | 1.1.2-r0 |
|
||||
+-------------------------------------------+-----------------------------------------------------+
|
||||
| linux-yocto | 6.5.7 |
|
||||
+-------------------------------------------+-----------------------------------------------------+
|
||||
| u-boot | 2023.07 |
|
||||
+-------------------------------------------+-----------------------------------------------------+
|
||||
| external-system | 0.1.0+gitAUTOINC+8c9dca74b1-r0 |
|
||||
+-------------------------------------------+-----------------------------------------------------+
|
||||
| optee-client | 3.22.0 |
|
||||
+-------------------------------------------+-----------------------------------------------------+
|
||||
| optee-os | 3.22.0 |
|
||||
+-------------------------------------------+-----------------------------------------------------+
|
||||
| trusted-firmware-a | 2.9.0 |
|
||||
+-------------------------------------------+-----------------------------------------------------+
|
||||
| trusted-firmware-m | 1.8.1 |
|
||||
+-------------------------------------------+-----------------------------------------------------+
|
||||
| libts | 08b3d39471 |
|
||||
+-------------------------------------------+-----------------------------------------------------+
|
||||
| ts-newlib | 4.1.0 |
|
||||
+-------------------------------------------+-----------------------------------------------------+
|
||||
| ts-psa-{crypto, iat, its. ps}-api-test | 38cb53a4d9 |
|
||||
+-------------------------------------------+-----------------------------------------------------+
|
||||
| ts-sp-{se-proxy, smm-gateway} | 08b3d39471 |
|
||||
+-------------------------------------------+-----------------------------------------------------+
|
||||
|
||||
Yocto distribution components versions
|
||||
======================================
|
||||
|
||||
+-------------------------------------------+------------------------------+
|
||||
| meta-arm | nanbield |
|
||||
+-------------------------------------------+------------------------------+
|
||||
| poky | nanbield |
|
||||
+-------------------------------------------+------------------------------+
|
||||
| meta-openembedded | nanbield |
|
||||
+-------------------------------------------+------------------------------+
|
||||
| meta-secure-core | nanbield |
|
||||
+-------------------------------------------+------------------------------+
|
||||
| busybox | 1.36.1 |
|
||||
+-------------------------------------------+------------------------------+
|
||||
| musl | 1.2.4 |
|
||||
+-------------------------------------------+------------------------------+
|
||||
| gcc-arm-none-eabi | 11.2-2022.02 |
|
||||
+-------------------------------------------+------------------------------+
|
||||
| gcc-cross-aarch64 | 13.2.0 |
|
||||
+-------------------------------------------+------------------------------+
|
||||
| openssl | 3.1.3 |
|
||||
+-------------------------------------------+------------------------------+
|
||||
|
||||
***************
|
||||
Version 2023.06
|
||||
***************
|
||||
|
||||
@@ -19,27 +19,6 @@ intended for safety-critical applications. Should Your Software or Your Hardware
|
||||
prove defective, you assume the entire cost of all necessary servicing, repair
|
||||
or correction.
|
||||
|
||||
***********************
|
||||
Release notes - 2023.11
|
||||
***********************
|
||||
|
||||
Known Issues or Limitations
|
||||
---------------------------
|
||||
|
||||
- Use Ethernet over VirtIO due to lan91c111 Ethernet driver support dropped from U-Boot.
|
||||
- Temporally removing the External system support in Linux due to it using multiple custom devicetree bindings that caused problems with SystemReady IR 2.0 certification. For External system support please refer to the version 2023.06. We are aiming to restore it in a more standardised manner in our next release.
|
||||
- Due to the performance uplimit of MPS3 FPGA and FVP, some Linux distros like Fedora Rawhide can not boot on Corstone-1000 (i.e. user may experience timeouts or boot hang).
|
||||
- PSA Crypto tests (psa-crypto-api-test command) approximately take 30 minutes to complete for FVP and MPS3.
|
||||
- Corstone-1000 SoC on FVP doesn't have a secure debug peripheral. It does on the MPS3.
|
||||
- See previous release notes for the known limitations regarding ACS tests.
|
||||
|
||||
Platform Support
|
||||
-----------------
|
||||
- This software release is tested on Corstone-1000 FPGA version AN550_v2
|
||||
https://developer.arm.com/downloads/-/download-fpga-images
|
||||
- This software release is tested on Corstone-1000 Fast Model platform (FVP) version 11.23_25
|
||||
https://developer.arm.com/tools-and-software/open-source-software/arm-platforms-software/arm-ecosystem-fvps
|
||||
|
||||
***********************
|
||||
Release notes - 2023.06
|
||||
***********************
|
||||
|
||||
@@ -72,10 +72,8 @@ non-secure and the secure world is performed via FF-A messages.
|
||||
|
||||
An external system is intended to implement use-case specific
|
||||
functionality. The system is based on Cortex-M3 and run RTX RTOS.
|
||||
Communication between the external system and Host (Cortex-A35) is performed
|
||||
using MHU as transport mechanism and rpmsg messaging system (the external system
|
||||
support in Linux is disabled in this release. More info about this change can be found in the
|
||||
release-notes).
|
||||
Communictaion between external system and Host(cortex-A35) is performed
|
||||
using MHU as transport mechanism and rpmsg messaging system.
|
||||
|
||||
Overall, the Corstone-1000 architecture is designed to cover a range
|
||||
of Power, Performance, and Area (PPA) applications, and enable extension
|
||||
@@ -159,9 +157,9 @@ Secure Firmware Update
|
||||
**********************
|
||||
|
||||
Apart from always booting the authorized images, it is also essential that
|
||||
the device only accepts the authorized (signed) images in the firmware update
|
||||
the device only accepts the authorized images in the firmware update
|
||||
process. Corstone-1000 supports OTA (Over the Air) firmware updates and
|
||||
follows Platform Security Firmware Update specification (`FWU`_).
|
||||
follows Platform Security Firmware Update sepcification (`FWU`_).
|
||||
|
||||
As standardized into `FWU`_, the external flash is divided into two
|
||||
banks of which one bank has currently running images and the other bank is
|
||||
@@ -174,10 +172,7 @@ Image (the initramfs bundle). The new images are accepted in the form of a UEFI
|
||||
:width: 690
|
||||
:alt: ExternalFlash
|
||||
|
||||
When Firmware update is triggered, u-boot verifies the capsule by checking the
|
||||
capsule signature, version number and size. Then it signals the Secure Enclave
|
||||
that can start writing UEFI capsule into the flash. Once this operation finishes
|
||||
,Secure Enclave resets the entire system.
|
||||
|
||||
The Metadata Block in the flash has the below firmware update state machine.
|
||||
TF-M runs an OTA service that is responsible for accepting and updating the
|
||||
images in the flash. The communication between the UEFI Capsule update
|
||||
@@ -235,7 +230,7 @@ References
|
||||
.. _Arm security features: https://www.arm.com/architecture/security-features/platform-security
|
||||
.. _linux repo: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/
|
||||
.. _FF-A: https://developer.arm.com/documentation/den0077/latest
|
||||
.. _FF-M: https://developer.arm.com/architectures/Firmware%20Framework%20for%20M-Profile
|
||||
.. _FF-M: https://developer.arm.com/-/media/Files/pdf/PlatformSecurityArchitecture/Architect/DEN0063-PSA_Firmware_Framework-1.0.0-2.pdf?revision=2d1429fa-4b5b-461a-a60e-4ef3d8f7f4b4&hash=3BFD6F3E687F324672F18E5BE9F08EDC48087C93
|
||||
.. _FWU: https://developer.arm.com/documentation/den0118/a/
|
||||
.. _OPTEE-OS: https://github.com/OP-TEE/optee_os
|
||||
.. _PSA: https://www.psacertified.org/
|
||||
|
||||
@@ -18,7 +18,7 @@ for more information.
|
||||
Prerequisites
|
||||
-------------
|
||||
|
||||
This guide assumes that your host machine is running Ubuntu 20.04 LTS, with at least
|
||||
This guide assumes that your host PC is running Ubuntu 20.04 LTS, with at least
|
||||
32GB of free disk space and 16GB of RAM as minimum requirement.
|
||||
|
||||
The following prerequisites must be available on the host system:
|
||||
@@ -68,33 +68,33 @@ Trusted Firmware-A
|
||||
==================
|
||||
Based on `Trusted Firmware-A <https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git>`__
|
||||
|
||||
+----------+-------------------------------------------------------------------------------------------------+
|
||||
| bbappend | <_workspace>/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a_%.bbappend |
|
||||
+----------+-------------------------------------------------------------------------------------------------+
|
||||
| Recipe | <_workspace>/meta-arm/meta-arm/recipes-bsp/trusted-firmware-a/trusted-firmware-a_2.9.0.bb |
|
||||
+----------+-------------------------------------------------------------------------------------------------+
|
||||
+----------+-----------------------------------------------------------------------------------------------------+
|
||||
| bbappend | <_workspace>/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-a/trusted-firmware-a_2.8.%.bbappend |
|
||||
+----------+-----------------------------------------------------------------------------------------------------+
|
||||
| Recipe | <_workspace>/meta-arm/meta-arm/recipes-bsp/trusted-firmware-a/trusted-firmware-a_2.8.0.bb |
|
||||
+----------+-----------------------------------------------------------------------------------------------------+
|
||||
|
||||
OP-TEE
|
||||
======
|
||||
Based on `OP-TEE <https://git.trustedfirmware.org/OP-TEE/optee_os.git>`__
|
||||
|
||||
+----------+----------------------------------------------------------------------------------------+
|
||||
| bbappend | <_workspace>/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os_3.22.0.bbappend |
|
||||
+----------+----------------------------------------------------------------------------------------+
|
||||
| Recipe | <_workspace>/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os_3.22.0.bb |
|
||||
+----------+----------------------------------------------------------------------------------------+
|
||||
+----------+------------------------------------------------------------------------------------+
|
||||
| bbappend | <_workspace>/meta-arm/meta-arm-bsp/recipes-security/optee/optee-os_3.20.0.bbappend |
|
||||
+----------+------------------------------------------------------------------------------------+
|
||||
| Recipe | <_workspace>/meta-arm/meta-arm/recipes-security/optee/optee-os_3.20.0.bb |
|
||||
+----------+------------------------------------------------------------------------------------+
|
||||
|
||||
U-Boot
|
||||
======
|
||||
Based on `U-Boot repo`_
|
||||
|
||||
+----------+----------------------------------------------------------------------------+
|
||||
| bbappend | <_workspace>/meta-arm/meta-arm/recipes-bsp/u-boot/u-boot_%.bbappend |
|
||||
+----------+----------------------------------------------------------------------------+
|
||||
| bbappend | <_workspace>/meta-arm/meta-arm-bsp/recipes-bsp/u-boot/u-boot_%.bbappend |
|
||||
+----------+----------------------------------------------------------------------------+
|
||||
| Recipe | <_workspace>/meta-arm/meta-arm-bsp/recipes-bsp/u-boot/u-boot_2023.07.02.bb |
|
||||
+----------+----------------------------------------------------------------------------+
|
||||
+----------+-------------------------------------------------------------------------+
|
||||
| bbappend | <_workspace>/meta-arm/meta-arm/recipes-bsp/u-boot/u-boot_%.bbappend |
|
||||
+----------+-------------------------------------------------------------------------+
|
||||
| bbappend | <_workspace>/meta-arm/meta-arm-bsp/recipes-bsp/u-boot/u-boot_%.bbappend |
|
||||
+----------+-------------------------------------------------------------------------+
|
||||
| Recipe | <_workspace>/poky/meta/recipes-bsp/u-boot/u-boot_2023.01.bb |
|
||||
+----------+-------------------------------------------------------------------------+
|
||||
|
||||
Linux
|
||||
=====
|
||||
@@ -107,20 +107,30 @@ recipe responsible for building a tiny version of Linux is listed below.
|
||||
+-----------+----------------------------------------------------------------------------------------------+
|
||||
| bbappend | <_workspace>/meta-arm/meta-arm-bsp/recipes-kernel/linux/linux-yocto_%.bbappend |
|
||||
+-----------+----------------------------------------------------------------------------------------------+
|
||||
| Recipe | <_workspace>/poky/meta/recipes-kernel/linux/linux-yocto_6.5.bb |
|
||||
| Recipe | <_workspace>/poky/meta/recipes-kernel/linux/linux-yocto_6.1.bb |
|
||||
+-----------+----------------------------------------------------------------------------------------------+
|
||||
| defconfig | <_workspace>/meta-arm/meta-arm-bsp/recipes-kernel/linux/files/corstone1000/defconfig |
|
||||
+-----------+----------------------------------------------------------------------------------------------+
|
||||
|
||||
External System Tests
|
||||
=====================
|
||||
Based on `Corstone-1000/applications <https://git.gitlab.arm.com/arm-reference-solutions/corstone1000/applications>`__
|
||||
|
||||
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||
| Recipe | <_workspace>/meta-arm/meta-arm-bsp/recipes-test/corstone1000-external-sys-tests/corstone1000-external-sys-tests_1.0.bb |
|
||||
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||
|
||||
The recipe provides the systems-comms-tests command run in Linux and used for testing the External System.
|
||||
|
||||
**************************************************
|
||||
Software for Boot Processor (a.k.a Secure Enclave)
|
||||
**************************************************
|
||||
Based on `Trusted Firmware-M <https://git.trustedfirmware.org/TF-M/trusted-firmware-m.git>`__
|
||||
|
||||
+----------+-----------------------------------------------------------------------------------------------------+
|
||||
| bbappend | <_workspace>/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/trusted-firmware-m_%.bbappend |
|
||||
| bbappend | <_workspace>/meta-arm/meta-arm-bsp/recipes-bsp/trusted-firmware-m/trusted-firmware-m_1.7.%.bbappend |
|
||||
+----------+-----------------------------------------------------------------------------------------------------+
|
||||
| Recipe | <_workspace>/meta-arm/meta-arm/recipes-bsp/trusted-firmware-m/trusted-firmware-m_1.8.1.bb |
|
||||
| Recipe | <_workspace>/meta-arm/meta-arm/recipes-bsp/trusted-firmware-m/trusted-firmware-m_1.7.0.bb |
|
||||
+----------+-----------------------------------------------------------------------------------------------------+
|
||||
|
||||
********************************
|
||||
@@ -146,7 +156,7 @@ to as ``<_workspace>`` in these instructions. To create the folder, run:
|
||||
cd <_workspace>
|
||||
|
||||
Corstone-1000 software is based on the Yocto Project which uses kas and bitbake
|
||||
commands to build the stack. kas version 4 is required. To install kas, run:
|
||||
commands to build the stack. To install kas tool, run:
|
||||
|
||||
::
|
||||
|
||||
@@ -158,27 +168,19 @@ In the top directory of the workspace ``<_workspace>``, run:
|
||||
|
||||
::
|
||||
|
||||
git clone https://git.yoctoproject.org/git/meta-arm -b CORSTONE1000-2023.11
|
||||
git clone https://git.yoctoproject.org/git/meta-arm -b CORSTONE1000-2023.06
|
||||
|
||||
To build a Corstone-1000 image for MPS3 FPGA, run:
|
||||
|
||||
::
|
||||
|
||||
kas build meta-arm/kas/corstone1000-mps3.yml:meta-arm/ci/debug.yml
|
||||
kas build meta-arm/kas/corstone1000-mps3.yml
|
||||
|
||||
Alternatively, to build a Corstone-1000 image for FVP, you need to accept
|
||||
the EULA at https://developer.arm.com/downloads/-/arm-ecosystem-fvps/eula
|
||||
by setting the ARM_FVP_EULA_ACCEPT environment variable as follows:
|
||||
|
||||
::
|
||||
|
||||
export ARM_FVP_EULA_ACCEPT="True"
|
||||
|
||||
then run:
|
||||
Alternatively, to build a Corstone-1000 image for FVP, run:
|
||||
|
||||
::
|
||||
|
||||
kas build meta-arm/kas/corstone1000-fvp.yml:meta-arm/ci/debug.yml
|
||||
kas build meta-arm/kas/corstone1000-fvp.yml
|
||||
|
||||
The initial clean build will be lengthy, given that all host utilities are to
|
||||
be built as well as the target images. This includes host executables (python,
|
||||
@@ -333,7 +335,7 @@ A Yocto recipe is provided and allows to download the latest supported FVP versi
|
||||
|
||||
The recipe is located at <_workspace>/meta-arm/meta-arm/recipes-devtools/fvp/fvp-corstone1000.bb
|
||||
|
||||
The latest supported Fixed Virtual Platform (FVP) version is 11_23.25 and is automatically downloaded and installed when using the runfvp command as detailed below. The FVP version can be checked by running the following command:
|
||||
The latest supported Fixed Virtual Platform (FVP) version is 11.19_21 and is automatically downloaded and installed when using the runfvp command as detailed below. The FVP version can be checked by running the following command:
|
||||
|
||||
::
|
||||
|
||||
@@ -364,6 +366,8 @@ The host will boot trusted-firmware-a, OP-TEE, U-Boot and then Linux, and presen
|
||||
|
||||
Login using the username root.
|
||||
|
||||
The External System can be released out of reset on demand using the systems-comms-tests command.
|
||||
|
||||
SystemReady-IR tests
|
||||
--------------------
|
||||
|
||||
@@ -386,110 +390,6 @@ steps described in following section "Clean Secure Flash Before Testing" to
|
||||
erase the SecureEnclave flash cleanly and prepare a clean board environment for
|
||||
the testing.
|
||||
|
||||
Prepare EFI System Partition
|
||||
===========================================================
|
||||
Corstone-1000 FVP and FPGA do not have enough on-chip nonvolatile memory to host
|
||||
an EFI System Partition (ESP). Thus, Corstone-1000 uses mass storage device for
|
||||
ESP. The instructions below should be followed for both FVP and FPGA before
|
||||
running the ACS tests.
|
||||
|
||||
**Common to FVP and FPGA:**
|
||||
|
||||
#. Create an empty 100 MB partition:
|
||||
::
|
||||
|
||||
dd if=/dev/zero of=corstone1000-efi-partition.img iflag=fullblock bs=512 count=204800 && sync
|
||||
|
||||
#. Use OpenSuse Raw image to copy the contents of EFI partition.
|
||||
|
||||
To download OpenSUSE Tumbleweed raw image:
|
||||
- Under `OpenSUSE Tumbleweed appliances <http://download.opensuse.org/ports/aarch64/tumbleweed/appliances/>`__
|
||||
- The user should look for a Tumbleweed-ARM-JeOS-efi.aarch64-* Snapshot, for example,
|
||||
``openSUSE-Tumbleweed-ARM-JeOS-efi.aarch64-<date>-Snapshot<date>.raw.xz``
|
||||
|
||||
Once the .raw.xz file is downloaded, the raw image file needs to be extracted:
|
||||
|
||||
::
|
||||
|
||||
unxz <file-name.raw.xz>
|
||||
|
||||
|
||||
The above command will generate a file ending with extension .raw image. Use the
|
||||
following command to get address of the first partition
|
||||
|
||||
::
|
||||
|
||||
fdisk -lu <path-to-img>/openSUSE-Tumbleweed-ARM-JeOS-efi.aarch64-<date>-Snapshot<date>.raw
|
||||
-> Device Start End Sectors Size Type
|
||||
<path-to-img>/openSUSE-Tumbleweed-ARM-JeOS-efi.aarch64-<date>-Snapshot<date>.raw1 8192 40959 32768 16M EFI System
|
||||
<path-to-img>/openSUSE-Tumbleweed-ARM-JeOS-efi.aarch64-<date>-Snapshot<date>.raw2 40960 1064959 1024000 500M Linux swap
|
||||
<path-to-img>/openSUSE-Tumbleweed-ARM-JeOS-efi.aarch64-<date>-Snapshot<date>.raw3 1064960 5369822 4304863 2.1G Linux filesystem
|
||||
|
||||
-> <blockaddress_1st_partition> = 8192
|
||||
-> <sectorsize_1st_partition> = 32768
|
||||
|
||||
#. Copy the ESP from opensuse image to empty image:
|
||||
|
||||
::
|
||||
|
||||
dd conv=notrunc if=openSUSE-Tumbleweed-ARM-JeOS-efi.aarch64-<date>-Snapshot<date>.raw skip=<blockaddress_1st_partition> of=corstone1000-efi-partition.img seek=<blockaddress_1st_partition> iflag=fullblock seek=<blockaddress_1st_partition> bs=512 count=<sectorsize_1s_partition> && sync
|
||||
|
||||
|
||||
#. Create the file efi_disk.layout locally. Copy the content of provided disk layout below to the efi_disk.layout to label the ESP correctly.
|
||||
|
||||
efi_disk.layout
|
||||
::
|
||||
|
||||
label: gpt
|
||||
label-id: AC53D121-B818-4515-9031-BE02CCEB8701
|
||||
device: corstone1000-efi-partition.img
|
||||
unit: sectors
|
||||
first-lba: 34
|
||||
last-lba: 204766
|
||||
|
||||
corstone1000-efi-partition.img : start=8192, size=32768, type=C12A7328-F81F-11D2-BA4B-00A0C93EC93B, uuid=792D821F-98AE-46E3-BABD-948003A650F8, name="p.UEFI"
|
||||
|
||||
And use the following command the label the newly created ESP.
|
||||
|
||||
::
|
||||
|
||||
sfdisk corstone1000-efi-partition.img < efi_disk.layout
|
||||
|
||||
To test the image, you can now mount the disk image
|
||||
|
||||
::
|
||||
|
||||
fdisk -lu corstone1000-efi-partition.img
|
||||
-> Device Start End Sectors Size Type
|
||||
corstone1000-efi-partition.img1 8192 40959 32768 16M EFI System
|
||||
|
||||
<offset_1st_partition> = 8192 * 512 (sector size) = 4194304
|
||||
|
||||
sudo mount -o loop,offset=4194304 corstone1000-efi-partition.img /mount_point
|
||||
|
||||
**Using ESP in FPGA:**
|
||||
|
||||
Once the ESP is created, it needs to be flashed to a second USB drive different than ACS image.
|
||||
This can be done with the development machine. In the given example here
|
||||
we assume the USB device is ``/dev/sdb`` (the user should use ``lsblk`` command to
|
||||
confirm). Be cautious here and don't confuse your host machine own hard drive with the
|
||||
USB drive. Run the following commands to prepare the ACS image in USB stick:
|
||||
|
||||
::
|
||||
|
||||
sudo dd if=corstone1000-efi-partition.img of=/dev/sdb iflag=direct oflag=direct status=progress bs=512; sync;
|
||||
|
||||
Now you can plug this USB stick to the board together with ACS test USB stick.
|
||||
|
||||
**Using ESP in FVP:**
|
||||
|
||||
The ESP disk image can directly be used in Corstone-1000 FVP by simply passing it as
|
||||
the 2nd MMC card image.
|
||||
|
||||
::
|
||||
|
||||
<_workspace>/meta-arm/scripts/runfvp <_workspace>/build/tmp/deploy/images/corstone1000-fvp/corstone1000-image-corstone1000-fvp.fvpconf -- -C board.msd_mmc.p_mmc_file="${<path-to-img>/ir_acs_live_image.img}" -C board.msd_mmc_2.p_mmc_file="${<path-to-img>/corstone1000-efi-partition.img}"
|
||||
|
||||
Clean Secure Flash Before Testing (applicable to FPGA only)
|
||||
===========================================================
|
||||
|
||||
@@ -500,13 +400,13 @@ boot. Run following commands to build such image.
|
||||
::
|
||||
|
||||
cd <_workspace>
|
||||
git clone https://git.yoctoproject.org/git/meta-arm -b CORSTONE1000-2023.11
|
||||
git clone https://git.gitlab.arm.com/arm-reference-solutions/systemready-patch.git -b CORSTONE1000-2023.11
|
||||
git clone https://git.yoctoproject.org/git/meta-arm -b CORSTONE1000-2023.06
|
||||
git clone https://git.gitlab.arm.com/arm-reference-solutions/systemready-patch.git -b CORSTONE1000-2023.06
|
||||
cp -f systemready-patch/embedded-a/corstone1000/erase_flash/0001-embedded-a-corstone1000-clean-secure-flash.patch meta-arm
|
||||
cd meta-arm
|
||||
git apply 0001-embedded-a-corstone1000-clean-secure-flash.patch
|
||||
cd ..
|
||||
kas build meta-arm/kas/corstone1000-mps3.yml:meta-arm/ci/debug.yml
|
||||
kas build meta-arm/kas/corstone1000-mps3.yml
|
||||
|
||||
Replace the bl1.bin and cs1000.bin files on the SD card with following files:
|
||||
- The ROM firmware: <_workspace>/build/tmp/deploy/images/corstone1000-mps3/bl1.bin
|
||||
@@ -563,7 +463,7 @@ BOOT partition contains the following:
|
||||
└── ramdisk-busybox.img
|
||||
|
||||
RESULT partition is used to store the test results.
|
||||
**NOTE**: PLEASE MAKE SURE THAT "acs_results" FOLDER UNDER THE RESULT PARTITION IS EMPTY BEFORE YOU START THE TESTING. OTHERWISE THE TEST RESULTS
|
||||
**NOTE**: PLEASE MAKE SURE THAT THE RESULT PARTITION IS EMPTY BEFORE YOU START THE TESTING. OTHERWISE THE TEST RESULTS
|
||||
WILL NOT BE CONSISTENT
|
||||
|
||||
FPGA instructions for ACS image
|
||||
@@ -580,10 +480,10 @@ certifications of SystemReady-IR. To download the repository, run command:
|
||||
::
|
||||
|
||||
cd <_workspace>
|
||||
git clone https://github.com/ARM-software/arm-systemready.git
|
||||
git clone https://github.com/ARM-software/arm-systemready.git -b v21.09_REL1.0
|
||||
|
||||
Once the repository is successfully downloaded, the prebuilt ACS live image can be found in:
|
||||
- ``<_workspace>/arm-systemready/IR/prebuilt_images/v23.03_2.0.0/ir-acs-live-image-generic-arm64.wic.xz``
|
||||
- ``<_workspace>/arm-systemready/IR/prebuilt_images/v21.07_0.9_BETA/ir_acs_live_image.img.xz``
|
||||
|
||||
**NOTE**: This prebuilt ACS image includes v5.13 kernel, which doesn't provide
|
||||
USB driver support for Corstone-1000. The ACS image with newer kernel version
|
||||
@@ -592,75 +492,57 @@ SystemReady release in this repository.
|
||||
|
||||
Then, the user should prepare a USB stick with ACS image. In the given example here,
|
||||
we assume the USB device is ``/dev/sdb`` (the user should use ``lsblk`` command to
|
||||
confirm). Be cautious here and don't confuse your host machine own hard drive with the
|
||||
confirm). Be cautious here and don't confuse your host PC's own hard drive with the
|
||||
USB drive. Run the following commands to prepare the ACS image in USB stick:
|
||||
|
||||
::
|
||||
|
||||
cd <_workspace>/arm-systemready/IR/prebuilt_images/v23.03_2.0.0
|
||||
unxz ir-acs-live-image-generic-arm64.wic.xz
|
||||
sudo dd if=ir-acs-live-image-generic-arm64.wic of=/dev/sdb iflag=direct oflag=direct bs=1M status=progress; sync
|
||||
cd <_workspace>/arm-systemready/IR/prebuilt_images/v21.07_0.9_BETA
|
||||
unxz ir_acs_live_image.img.xz
|
||||
sudo dd if=ir_acs_live_image.img of=/dev/sdb iflag=direct oflag=direct bs=1M status=progress; sync
|
||||
|
||||
Once the USB stick with ACS image is prepared, the user should make sure that
|
||||
ensure that both USB sticks (ESP and ACS image) are connected to the board,
|
||||
ensure that only the USB stick with the ACS image is connected to the board,
|
||||
and then boot the board.
|
||||
|
||||
The FPGA will reset multiple times during the test, and it might take approx. 24-36 hours to finish the test.
|
||||
|
||||
**NOTE**: The USB stick which contains the ESP partition might cause grub to
|
||||
unable to find the bootable partition (only in the FPGA). If that's the case, please
|
||||
remove the USB stick and run the ACS tests. ESP partition can be mounted after
|
||||
the platform is booted to linux at the end of the ACS tests.
|
||||
|
||||
|
||||
FVP instructions for ACS image and run
|
||||
======================================
|
||||
|
||||
Download ACS image from:
|
||||
- ``https://gitlab.arm.com/systemready/acs/arm-systemready/-/tree/main/IR/prebuilt_images/v23.03_2.0.0``
|
||||
- ``https://gitlab.arm.com/systemready/acs/arm-systemready/-/tree/linux-5.17-rc7/IR/prebuilt_images/v22.04_1.0-Linux-v5.17-rc7``
|
||||
|
||||
Use the below command to run the FVP with EFI and ACS image support in the
|
||||
SD cards.
|
||||
Use the below command to run the FVP with ACS image support in the
|
||||
SD card.
|
||||
|
||||
::
|
||||
|
||||
unxz ${<path-to-img>/ir-acs-live-image-generic-arm64.wic.xz}
|
||||
unxz ${<path-to-img>/ir_acs_live_image.img.xz}
|
||||
|
||||
<_workspace>/meta-arm/scripts/runfvp --terminals=xterm <_workspace>/build/tmp/deploy/images/corstone1000-fvp/corstone1000-image-corstone1000-fvp.fvpconf -- -C board.msd_mmc.p_mmc_file=<path-to-img>/ir-acs-live-image-generic-arm64.wic -C board.msd_mmc_2.p_mmc_file="${<path-to-img>/corstone1000-efi-partition.img}"
|
||||
tmux
|
||||
|
||||
<_workspace>/meta-arm/scripts/runfvp <_workspace>/build/tmp/deploy/images/corstone1000-fvp/corstone1000-image-corstone1000-fvp.fvpconf -- -C board.msd_mmc.p_mmc_file="${<path-to-img>/ir_acs_live_image.img}"
|
||||
|
||||
The test results can be fetched using following commands:
|
||||
|
||||
::
|
||||
|
||||
sudo mkdir /mnt/test
|
||||
sudo mount -o rw,offset=<offset_3rd_partition> <path-to-img>/ir-acs-live-image-generic-arm64.wic /mnt/test/
|
||||
fdisk -lu <path-to-img>/ir-acs-live-image-generic-arm64.wic
|
||||
sudo mount -o rw,offset=<offset_2nd_partition> <path-to-img>/ir_acs_live_image.img /mnt/test/
|
||||
fdisk -lu <path-to-img>/ir_acs_live_image.img
|
||||
-> Device Start End Sectors Size Type
|
||||
<path-to-img>/ir-acs-live-image-generic-arm64.wic1 2048 206847 204800 100M Microsoft basic data
|
||||
<path-to-img>/ir-acs-live-image-generic-arm64.wic2 206848 1024239 817392 399.1M Linux filesystem
|
||||
<path-to-img>/ir-acs-live-image-generic-arm64.wic3 1026048 1128447 102400 50M Microsoft basic data
|
||||
<path-to-img>/ir_acs_live_image_modified.img1 2048 1050622 1048575 512M Microsoft basic data
|
||||
<path-to-img>/ir_acs_live_image_modified.img2 1050624 1153022 102399 50M Microsoft basic data
|
||||
|
||||
-> <offset_3rd_partition> = 1026048 * 512 (sector size) = 525336576
|
||||
-> <offset_2nd_partition> = 1050624 * 512 (sector size) = 537919488
|
||||
|
||||
The FVP will reset multiple times during the test, and it might take up to 1 day to finish
|
||||
the test. At the end of test, the FVP host terminal will halt showing a shell prompt.
|
||||
Once test is finished, the FVP can be stoped, and result can be copied following above
|
||||
instructions.
|
||||
|
||||
**NOTE:** A rare issue has been noticed (5-6% occurence) during which the FVP hangs during booting the system while running ACS tests.
|
||||
If this happens, please apply the following patch, rebuild the software stack for FVP and re-run the ACS tests.
|
||||
|
||||
::
|
||||
|
||||
cd <_workspace>
|
||||
git clone https://git.gitlab.arm.com/arm-reference-solutions/systemready-patch.git -b CORSTONE1000-2023.11
|
||||
cp -f systemready-patch/embedded-a/corstone1000/sr_ir_workaround/0001-embedded-a-corstone1000-sr-ir-workaround.patch meta-arm
|
||||
cd meta-arm
|
||||
git am 0001-embedded-a-corstone1000-sr-ir-workaround.patch
|
||||
cd ..
|
||||
kas shell meta-arm/kas/corstone1000-fvp.yml:meta-arm/ci/debug.yml -c="bitbake u-boot -c cleanall; bitbake trusted-firmware-a -c cleanall; corstone1000-image -c cleanall; bitbake corstone1000-image"
|
||||
|
||||
|
||||
Common to FVP and FPGA
|
||||
======================
|
||||
|
||||
@@ -679,7 +561,7 @@ The results can be fetched from the ``acs_results`` folder in the RESULT partiti
|
||||
Manual capsule update and ESRT checks
|
||||
-------------------------------------
|
||||
|
||||
The following section describes running manual capsule update.
|
||||
The following section describes running manual capsule update with the ``direct`` method.
|
||||
|
||||
The steps described in this section perform manual capsule update and show how to use the ESRT feature
|
||||
to retrieve the installed capsule details.
|
||||
@@ -690,30 +572,20 @@ A positive test case capsule which boots the platform correctly until the Linux
|
||||
incorrect capsule (corrupted or outdated) which fails to boot to the host software.
|
||||
|
||||
Check the "Run SystemReady-IR ACS tests" section above to download and unpack the ACS image file
|
||||
- ``ir-acs-live-image-generic-arm64.wic.xz``
|
||||
- ``ir_acs_live_image.img.xz``
|
||||
|
||||
|
||||
Download u-boot under <_workspace> and install tools:
|
||||
Download edk2 under <_workspace>:
|
||||
|
||||
::
|
||||
|
||||
git clone https://github.com/u-boot/u-boot.git
|
||||
cd u-boot
|
||||
git checkout 83aa0ed1e93e1ffac24888d98d37a5b04ed3fb07
|
||||
make tools-only_defconfig
|
||||
make tools-only
|
||||
|
||||
**NOTE:** The following error could happen if the linux build system does not have "libgnutls28-dev".
|
||||
**error: "tools/mkeficapsule.c:21:10: fatal error: gnutls/gnutls.h: No such file or directory"**. If that's the case please install libgnutls28-dev and its dependencies by using the following command.
|
||||
|
||||
::
|
||||
|
||||
sudo apt-get install -y libgnutls28-dev
|
||||
git clone https://github.com/tianocore/edk2.git
|
||||
cd edk2
|
||||
git checkout f2188fe5d1553ad1896e27b2514d2f8d0308da8a
|
||||
|
||||
Download systemready-patch repo under <_workspace>:
|
||||
::
|
||||
|
||||
git clone https://git.gitlab.arm.com/arm-reference-solutions/systemready-patch.git -b CORSTONE1000-2023.11
|
||||
git clone https://git.gitlab.arm.com/arm-reference-solutions/systemready-patch.git -b CORSTONE1000-2023.06
|
||||
|
||||
*******************
|
||||
Generating Capsules
|
||||
@@ -733,14 +605,13 @@ generate a UEFI capsule.
|
||||
::
|
||||
|
||||
cd <_workspace>
|
||||
edk2/BaseTools/BinWrappers/PosixLike/GenerateCapsule -e -o cs1k_cap_mps3_v6 --fw-version 6 \
|
||||
--lsv 0 --guid e2bb9c06-70e9-4b14-97a3-5a7913176e3f --verbose --update-image-index 0 \
|
||||
--verbose build/tmp/deploy/images/corstone1000-mps3/corstone1000_image.nopt
|
||||
|
||||
./u-boot/tools/mkeficapsule --monotonic-count 1 --private-key build/tmp/deploy/images/corstone1000-mps3/corstone1000_capsule_key.key \
|
||||
--certificate build/tmp/deploy/images/corstone1000-mps3/corstone1000_capsule_cert.crt --index 1 --guid 989f3a4e-46e0-4cd0-9877-a25c70c01329 \
|
||||
--fw-version 6 build/tmp/deploy/images/corstone1000-mps3/corstone1000_image.nopt cs1k_cap_mps3_v6
|
||||
|
||||
./u-boot/tools/mkeficapsule --monotonic-count 1 --private-key build/tmp/deploy/images/corstone1000-mps3/corstone1000_capsule_key.key \
|
||||
--certificate build/tmp/deploy/images/corstone1000-mps3/corstone1000_capsule_cert.crt --index 1 --guid 989f3a4e-46e0-4cd0-9877-a25c70c01329 \
|
||||
--fw-version 5 build/tmp/deploy/images/corstone1000-mps3/corstone1000_image.nopt cs1k_cap_mps3_v5
|
||||
edk2/BaseTools/BinWrappers/PosixLike/GenerateCapsule -e -o cs1k_cap_mps3_v5 --fw-version 5 \
|
||||
--lsv 0 --guid e2bb9c06-70e9-4b14-97a3-5a7913176e3f --verbose --update-image-index 0 \
|
||||
--verbose build/tmp/deploy/images/corstone1000-mps3/corstone1000_image.nopt
|
||||
|
||||
Generating FVP Capsules
|
||||
=======================
|
||||
@@ -753,16 +624,17 @@ Generating FVP Capsules
|
||||
This will generate a file called "corstone1000_image.nopt" which will be used to
|
||||
generate a UEFI capsule.
|
||||
|
||||
|
||||
::
|
||||
|
||||
cd <_workspace>
|
||||
./u-boot/tools/mkeficapsule --monotonic-count 1 --private-key build/tmp/deploy/images/corstone1000-fvp/corstone1000_capsule_key.key \
|
||||
--certificate build/tmp/deploy/images/corstone1000-fvp/corstone1000_capsule_cert.crt --index 1 --guid 989f3a4e-46e0-4cd0-9877-a25c70c01329 \
|
||||
--fw-version 6 build/tmp/deploy/images/corstone1000-fvp/corstone1000_image.nopt cs1k_cap_fvp_v6
|
||||
edk2/BaseTools/BinWrappers/PosixLike/GenerateCapsule -e -o cs1k_cap_fvp_v6 \
|
||||
--fw-version 6 --lsv 0 --guid e2bb9c06-70e9-4b14-97a3-5a7913176e3f --verbose --update-image-index \
|
||||
0 --verbose build/tmp/deploy/images/corstone1000-fvp/corstone1000_image.nopt
|
||||
|
||||
./u-boot/tools/mkeficapsule --monotonic-count 1 --private-key build/tmp/deploy/images/corstone1000-fvp/corstone1000_capsule_key.key \
|
||||
--certificate build/tmp/deploy/images/corstone1000-fvp/corstone1000_capsule_cert.crt --index 1 --guid 989f3a4e-46e0-4cd0-9877-a25c70c01329 \
|
||||
--fw-version 5 build/tmp/deploy/images/corstone1000-fvp/corstone1000_image.nopt cs1k_cap_fvp_v5
|
||||
edk2/BaseTools/BinWrappers/PosixLike/GenerateCapsule -e -o cs1k_cap_fvp_v5 --fw-version 5 \
|
||||
--lsv 0 --guid e2bb9c06-70e9-4b14-97a3-5a7913176e3f --verbose --update-image-index \
|
||||
0 --verbose build/tmp/deploy/images/corstone1000-fvp/corstone1000_image.nopt
|
||||
|
||||
|
||||
Common Notes for FVP and FPGA
|
||||
@@ -801,7 +673,7 @@ First, mount the IR image:
|
||||
::
|
||||
|
||||
sudo mkdir /mnt/test
|
||||
sudo mount -o rw,offset=1048576 <path-to-img>/ir-acs-live-image-generic-arm64.wic /mnt/test
|
||||
sudo mount -o rw,offset=1048576 <path-to-img>/ir_acs_live_image.img /mnt/test
|
||||
|
||||
Then, copy the capsules:
|
||||
|
||||
@@ -817,7 +689,19 @@ Then, unmount the IR image:
|
||||
|
||||
sudo umount /mnt/test
|
||||
|
||||
**NOTE:** Please refer to `FVP instructions for ACS image and run`_ section to find the first partition offset.
|
||||
**NOTE:**
|
||||
|
||||
The size of first partition in the image file is calculated in the following way. The data is
|
||||
just an example and might vary with different ir_acs_live_image.img files.
|
||||
|
||||
::
|
||||
|
||||
fdisk -lu <path-to-img>/ir_acs_live_image.img
|
||||
-> Device Start End Sectors Size Type
|
||||
<path-to-img>/ir_acs_live_image_modified.img1 2048 1050622 1048575 512M Microsoft basic data
|
||||
<path-to-img>/ir_acs_live_image_modified.img2 1050624 1153022 102399 50M Microsoft basic data
|
||||
|
||||
-> <offset_1st_partition> = 2048 * 512 (sector size) = 1048576
|
||||
|
||||
******************************
|
||||
Performing the capsule update
|
||||
@@ -833,9 +717,7 @@ Run the FVP with the IR prebuilt image:
|
||||
|
||||
::
|
||||
|
||||
<_workspace>/meta-arm/scripts/runfvp --terminals=xterm <_workspace>/build/tmp/deploy/images/corstone1000-fvp/corstone1000-image-corstone1000-fvp.fvpconf -- -C board.msd_mmc.p_mmc_file=<path-to-img>/ir-acs-live-image-generic-arm64.wic
|
||||
|
||||
**NOTE:** <path-to-img> must start from the root directory. make sure there are no spaces before or after of "=". board.msd_mmc.p_mmc_file=<path-to-img>/ir-acs-live-image-generic-arm64.wic.
|
||||
<_workspace>/meta-arm/scripts/runfvp --terminals=xterm <_workspace>/build/tmp/deploy/images/corstone1000-fvp/corstone1000-image-corstone1000-fvp.fvpconf -- -C "board.msd_mmc.p_mmc_file=${<path-to-img>/ir_acs_live_image.img}"
|
||||
|
||||
Running the FPGA with the IR prebuilt image
|
||||
===========================================
|
||||
@@ -906,7 +788,7 @@ Run the following commands in order to run the Corstone-1000 Linux kernel and be
|
||||
::
|
||||
|
||||
$ unzip $kernel_addr 0x90000000
|
||||
$ loadm 0x90000000 $kernel_addr_r $filesize
|
||||
$ loadm 0x90000000 $kernel_addr_r 0xf00000
|
||||
$ bootefi $kernel_addr_r $fdtcontroladdr
|
||||
|
||||
|
||||
@@ -944,7 +826,7 @@ In the Linux command-line run the following:
|
||||
# cat *
|
||||
|
||||
0x0
|
||||
989f3a4e-46e0-4cd0-9877-a25c70c01329
|
||||
e2bb9c06-70e9-4b14-97a3-5a7913176e3f
|
||||
0
|
||||
6
|
||||
0
|
||||
@@ -953,7 +835,7 @@ In the Linux command-line run the following:
|
||||
|
||||
.. line-block::
|
||||
capsule_flags: 0x0
|
||||
fw_class: 989f3a4e-46e0-4cd0-9877-a25c70c01329
|
||||
fw_class: e2bb9c06-70e9-4b14-97a3-5a7913176e3f
|
||||
fw_type: 0
|
||||
fw_version: 6
|
||||
last_attempt_status: 0
|
||||
@@ -961,8 +843,8 @@ In the Linux command-line run the following:
|
||||
lowest_supported_fw_ver: 0
|
||||
|
||||
|
||||
Negative scenario (Applicable to FPGA only)
|
||||
===========================================
|
||||
Negative scenario
|
||||
=================
|
||||
|
||||
In the negative case scenario (rollback the capsule version), the user should
|
||||
see appropriate logs in the secure enclave terminal.
|
||||
@@ -1009,7 +891,7 @@ In the Linux command-line run the following:
|
||||
# cat *
|
||||
|
||||
0x0
|
||||
989f3a4e-46e0-4cd0-9877-a25c70c01329
|
||||
e2bb9c06-70e9-4b14-97a3-5a7913176e3f
|
||||
0
|
||||
6
|
||||
1
|
||||
@@ -1018,32 +900,26 @@ In the Linux command-line run the following:
|
||||
|
||||
.. line-block::
|
||||
capsule_flags: 0x0
|
||||
fw_class: 989f3a4e-46e0-4cd0-9877-a25c70c01329
|
||||
fw_class: e2bb9c06-70e9-4b14-97a3-5a7913176e3f
|
||||
fw_type: 0
|
||||
fw_version: 6
|
||||
last_attempt_status: 1
|
||||
last_attempt_version: 5
|
||||
lowest_supported_fw_ver: 0
|
||||
|
||||
**Note**: This test is currently not working properly in Corstone-1000 FVP.
|
||||
However, it is not part of the System-Ready IR tests, and it won't affect the
|
||||
SR-IR certification. All the compulsory `capsule update tests for SR-IR
|
||||
<https://developer.arm.com/documentation/DUI1101/2-1/Test-SystemReady-IR/Test-UpdateCapsule>`__
|
||||
works on both Corstone-1000 FVP and FPGA.
|
||||
|
||||
Linux distros tests
|
||||
-------------------
|
||||
|
||||
*************************************************************
|
||||
Debian install and boot preparation
|
||||
Debian install and boot preparation (applicable to FPGA only)
|
||||
*************************************************************
|
||||
|
||||
There is a known issue in the `Shim 15.7 <https://salsa.debian.org/efi-team/shim/-/tree/upstream/15.7?ref_type=tags>`__
|
||||
provided with the Debian installer image (see below). This bug causes a fatal
|
||||
error when attempting to boot media installer for Debian, and it resets the platform before installation starts.
|
||||
error when attempting to boot media installer for Debian, and it resets the MPS3 before installation starts.
|
||||
A patch to be applied to the Corstone-1000 stack (only applicable when
|
||||
installing Debian) is provided to
|
||||
`Skip the Shim <https://gitlab.arm.com/arm-reference-solutions/systemready-patch/-/blob/CORSTONE1000-2023.11/embedded-a/corstone1000/shim/0001-arm-bsp-u-boot-corstone1000-Skip-the-shim-by-booting.patch>`__.
|
||||
`Skip the Shim <https://gitlab.arm.com/arm-reference-solutions/systemready-patch/-/blob/CORSTONE1000-2023.06/embedded-a/corstone1000/shim/0001-arm-bsp-u-boot-corstone1000-Skip-the-shim-by-booting.patch>`__.
|
||||
This patch makes U-Boot automatically bypass the Shim and run grub and allows
|
||||
the user to proceed with a normal installation. If at the moment of reading this
|
||||
document the problem is solved in the Shim, the user is encouraged to try the
|
||||
@@ -1055,58 +931,36 @@ documentation.
|
||||
::
|
||||
|
||||
cd <_workspace>
|
||||
git clone https://git.gitlab.arm.com/arm-reference-solutions/systemready-patch.git -b CORSTONE1000-2023.11
|
||||
git clone https://git.gitlab.arm.com/arm-reference-solutions/systemready-patch.git -b CORSTONE1000-2023.06
|
||||
cp -f systemready-patch/embedded-a/corstone1000/shim/0001-arm-bsp-u-boot-corstone1000-Skip-the-shim-by-booting.patch meta-arm
|
||||
cd meta-arm
|
||||
git am 0001-arm-bsp-u-boot-corstone1000-Skip-the-shim-by-booting.patch
|
||||
cd ..
|
||||
kas shell meta-arm/kas/corstone1000-mps3.yml -c="bitbake u-boot trusted-firmware-a corstone1000-image -c cleansstate; bitbake corstone1000-image"
|
||||
|
||||
**On FPGA**
|
||||
::
|
||||
|
||||
kas shell meta-arm/kas/corstone1000-mps3.yml:meta-arm/ci/debug.yml -c="bitbake u-boot trusted-firmware-a corstone1000-image -c cleansstate; bitbake corstone1000-image"
|
||||
|
||||
**On FVP**
|
||||
::
|
||||
|
||||
kas shell meta-arm/kas/corstone1000-fvp.yml:meta-arm/ci/debug.yml -c="bitbake u-boot trusted-firmware-a corstone1000-image -c cleansstate; bitbake corstone1000-image"
|
||||
|
||||
On FPGA, please update the cs1000.bin on the SD card with the newly generated wic file.
|
||||
|
||||
**NOTE:** Skip the shim patch only applies to Debian installation. The user should remove the patch from meta-arm before running the software to boot OpenSUSE or executing any other tests in this user guide. You can make sure of removing the skip the shim patch by executing the steps below.
|
||||
|
||||
::
|
||||
|
||||
cd <_workspace>/meta-arm
|
||||
git reset --hard HEAD~1
|
||||
cd ..
|
||||
kas shell meta-arm/kas/corstone1000-fvp.yml:meta-arm/ci/debug.yml -c="bitbake u-boot -c cleanall; bitbake trusted-firmware-a -c cleanall; corstone1000-image -c cleanall; bitbake corstone1000-image"
|
||||
Please update the cs1000.bin on the SD card with the newly generated wic file.
|
||||
|
||||
*************************************************
|
||||
Preparing the Installation Media
|
||||
Debian/openSUSE install (applicable to FPGA only)
|
||||
*************************************************
|
||||
|
||||
To test Linux distro install and boot, the user should prepare two empty USB
|
||||
sticks (minimum size should be 4GB and formatted with FAT32).
|
||||
|
||||
Download one of following Linux distro images:
|
||||
- `Debian installer image <https://cdimage.debian.org/debian-cd/current/arm64/iso-dvd/>`__ (Tested on: debian-12.2.0-arm64-DVD-1.iso)
|
||||
- `OpenSUSE Tumbleweed installer image <http://download.opensuse.org/ports/aarch64/tumbleweed/iso/>`__ (Tested on: openSUSE-Tumbleweed-DVD-aarch64-Snapshot20231120-Media.iso)
|
||||
|
||||
- `Debian 12.0.0 installer image <https://cdimage.debian.org/debian-cd/current/arm64/iso-dvd/debian-12.0.0-arm64-DVD-1.iso>`__
|
||||
- `OpenSUSE Tumbleweed installer image <http://download.opensuse.org/ports/aarch64/tumbleweed/iso/>`__
|
||||
|
||||
**NOTE:** For OpenSUSE Tumbleweed, the user should look for a DVD Snapshot like
|
||||
openSUSE-Tumbleweed-DVD-aarch64-Snapshot<date>-Media.iso
|
||||
|
||||
|
||||
FPGA
|
||||
==================================================
|
||||
|
||||
To test Linux distro install and boot on FPGA, the user should prepare two empty USB
|
||||
sticks (minimum size should be 4GB and formatted with FAT32).
|
||||
|
||||
The downloaded iso file needs to be flashed to your USB drive.
|
||||
This can be done with your development machine.
|
||||
Once the iso file is downloaded, the iso file needs to be flashed to your USB
|
||||
drive. This can be done with your development machine.
|
||||
|
||||
In the example given below, we assume the USB device is ``/dev/sdb`` (the user
|
||||
should use the `lsblk` command to confirm).
|
||||
|
||||
**NOTE:** Please don't confuse your host machine own hard drive with the USB drive.
|
||||
**NOTE:** Please don't confuse your host PC's own hard drive with the USB drive.
|
||||
Then, copy the contents of the iso file into the first USB stick by running the
|
||||
following command in the development machine:
|
||||
|
||||
@@ -1114,27 +968,6 @@ following command in the development machine:
|
||||
|
||||
sudo dd if=<path-to-iso_file> of=/dev/sdb iflag=direct oflag=direct status=progress bs=1M; sync;
|
||||
|
||||
|
||||
FVP
|
||||
==================================================
|
||||
|
||||
To test Linux distro install and boot on FVP, the user should prepare an mmc image.
|
||||
With a minimum size of 8GB formatted with gpt.
|
||||
|
||||
::
|
||||
|
||||
#Generating mmc2
|
||||
dd if=/dev/zero of=<_workspace>/mmc2_file.img bs=1 count=0 seek=8G; sync;
|
||||
parted -s mmc2_file.img mklabel gpt
|
||||
|
||||
|
||||
*************************************************
|
||||
Debian/openSUSE install
|
||||
*************************************************
|
||||
|
||||
FPGA
|
||||
==================================================
|
||||
|
||||
Unplug the first USB stick from the development machine and connect it to the
|
||||
MSP3 board. At this moment, only the first USB stick should be connected. Open
|
||||
the following picocom sessions in your development machine:
|
||||
@@ -1152,25 +985,15 @@ the process.
|
||||
**NOTE:** Due to the performance limitation of Corstone-1000 MPS3 FPGA, the
|
||||
distro installation process can take up to 24 hours to complete.
|
||||
|
||||
FVP
|
||||
==================================================
|
||||
|
||||
::
|
||||
|
||||
<_workspace>/meta-arm/scripts/runfvp --terminals=xterm <_workspace>/build/tmp/deploy/images/corstone1000-fvp/corstone1000-image-corstone1000-fvp.fvpconf -- -C board.msd_mmc.p_mmc_file="<path-to-iso_file>" -C board.msd_mmc_2.p_mmc_file="<_workspace>/mmc2_file.img"
|
||||
|
||||
The installer should now start.
|
||||
The os will be installed on the second mmc 'mmc2_file.img'.
|
||||
|
||||
*******************************************************
|
||||
Debian install clarifications
|
||||
Debian install clarifications (applicable to FPGA only)
|
||||
*******************************************************
|
||||
|
||||
As the installation process for Debian is different than the one for openSUSE,
|
||||
Debian may need some extra steps, that are indicated below:
|
||||
|
||||
During Debian installation, please answer the following question:
|
||||
- "Force grub installation to the EFI removable media path?" Yes
|
||||
- "Force GRUB installation to the EFI removable media path?" Yes
|
||||
- "Update NVRAM variables to automatically boot into Debian?" No
|
||||
|
||||
If the grub installation fails, these are the steps to follow on the subsequent
|
||||
@@ -1201,56 +1024,21 @@ popups:
|
||||
8. At this stage, the installation should proceed as normal.
|
||||
|
||||
*****************************************************************
|
||||
Debian/openSUSE boot after installation
|
||||
Debian/openSUSE boot after installation (applicable to FPGA only)
|
||||
*****************************************************************
|
||||
|
||||
FPGA
|
||||
===============
|
||||
Once the installation is complete, unplug the first USB stick and reboot the
|
||||
board.
|
||||
The board will then enter recovery mode, from which the user can access a shell
|
||||
after entering the password for the root user.
|
||||
|
||||
FVP
|
||||
==============
|
||||
Once the installation is complete, you will need to exit the shell instance
|
||||
and run this command to boot into the installed OS:
|
||||
|
||||
::
|
||||
|
||||
<_workspace>/meta-arm/scripts/runfvp --terminals=xterm <_workspace>/build/tmp/deploy/images/corstone1000-fvp/corstone1000-image-corstone1000-fvp.fvpconf -- -C board.msd_mmc.p_mmc_file="<_workspace>/mmc2_file.img"
|
||||
|
||||
|
||||
Once the FVP begins booting, you will need to quickly change the boot option in grub,
|
||||
to boot into recovery mode.
|
||||
|
||||
**NOTE:** This option will disappear quickly, so it's best to preempt it.
|
||||
|
||||
Select 'Advanced Options for '<OS>' and then '<OS> (recovery mode)'.
|
||||
|
||||
Common
|
||||
==============
|
||||
|
||||
Proceed to edit the following files accordingly:
|
||||
after entering the password for the root user. Proceed to edit the following
|
||||
files accordingly:
|
||||
|
||||
::
|
||||
|
||||
#Only applicable to Debian
|
||||
vi /etc/systemd/system.conf
|
||||
DefaultDeviceTimeoutSec=infinity
|
||||
|
||||
::
|
||||
|
||||
#Only applicable to openSUSE
|
||||
vi /usr/lib/systemd/system.conf
|
||||
DefaultDeviceTimeoutSec=infinity
|
||||
|
||||
The system.conf has been moved from /etc/systemd/ to /usr/lib/systemd/ and directly modifying
|
||||
the /usr/lib/systemd/system.conf is not working and it is getting overridden. We have to create
|
||||
drop ins system configurations in /etc/systemd/system.conf.d/ directory. So, copy the
|
||||
/usr/lib/systemd/system.conf to /etc/systemd/system.conf.d/ directory after the mentioned modifications.
|
||||
|
||||
The file to be edited next is different depending on the installed distro:
|
||||
The file to be editted next is different depending on the installed distro:
|
||||
|
||||
::
|
||||
|
||||
@@ -1264,9 +1052,8 @@ To make sure the changes are applied, please run:
|
||||
|
||||
systemctl daemon-reload
|
||||
|
||||
After applying the previous commands, please reboot the board or restart the runfvp command.
|
||||
|
||||
The user should see a login prompt after booting, for example, for debian:
|
||||
After applying the previous commands, please reboot the board. The user should
|
||||
see a login prompt after booting, for example, for debian:
|
||||
|
||||
::
|
||||
|
||||
@@ -1275,7 +1062,37 @@ The user should see a login prompt after booting, for example, for debian:
|
||||
Login with the username root and its corresponding password (already set at
|
||||
installation time).
|
||||
|
||||
**NOTE:** Debian/OpenSUSE Timeouts are not applicable for all systems. Some systems are faster than the others (especially when running the FVP) and works well with default timeouts. If the system boots to Debian or OpenSUSE unmodified, the user can skip this section.
|
||||
************************************************************
|
||||
OpenSUSE Raw image install and boot (applicable to FVP only)
|
||||
************************************************************
|
||||
|
||||
Steps to download OpenSUSE Tumbleweed raw image:
|
||||
- Under `OpenSUSE Tumbleweed appliances <http://download.opensuse.org/ports/aarch64/tumbleweed/appliances/>`__
|
||||
- The user should look for a Tumbleweed-ARM-JeOS-efi.aarch64-* Snapshot, for example,
|
||||
``openSUSE-Tumbleweed-ARM-JeOS-efi.aarch64-<date>-Snapshot<date>.raw.xz``
|
||||
|
||||
Once the .raw.xz file is downloaded, the raw image file needs to be extracted:
|
||||
|
||||
::
|
||||
|
||||
unxz <file-name.raw.xz>
|
||||
|
||||
|
||||
The above command will generate a file ending with extension .raw image. Now, use the following command
|
||||
to run FVP with raw image installation process.
|
||||
|
||||
::
|
||||
|
||||
<_workspace>/meta-arm/scripts/runfvp --terminals=xterm <_workspace>/build/tmp/deploy/images/corstone1000-fvp/corstone1000-image-corstone1000-fvp.fvpconf -- -C board.msd_mmc.p_mmc_file="${openSUSE raw image file path}"
|
||||
|
||||
After successfully installing and booting the Linux distro, the user should see
|
||||
a openSUSE login prompt.
|
||||
|
||||
::
|
||||
|
||||
localhost login:
|
||||
|
||||
Login with the username 'root' and password 'linux'.
|
||||
|
||||
PSA API tests
|
||||
-------------
|
||||
@@ -1296,7 +1113,7 @@ First, load FF-A TEE kernel module:
|
||||
|
||||
::
|
||||
|
||||
insmod /lib/modules/*-yocto-standard/updates/arm-ffa-tee.ko
|
||||
insmod /lib/modules/6.1.32-yocto-standard/extra/arm-ffa-tee.ko
|
||||
|
||||
Then, check whether the FF-A TEE driver is loaded correctly by using the following command:
|
||||
|
||||
@@ -1308,7 +1125,7 @@ The output should be:
|
||||
|
||||
::
|
||||
|
||||
arm_ffa_tee <ID> - - Live <address> (O)
|
||||
arm_ffa_tee 16384 - - Live 0xffffffc000510000 (O)
|
||||
|
||||
Now, run the PSA API tests in the following order:
|
||||
|
||||
@@ -1321,20 +1138,105 @@ Now, run the PSA API tests in the following order:
|
||||
|
||||
**NOTE:** The psa-crypto-api-test takes between 30 minutes to 1 hour to run.
|
||||
|
||||
External System tests
|
||||
---------------------
|
||||
|
||||
**************************************************************
|
||||
Running the External System test command (systems-comms-tests)
|
||||
**************************************************************
|
||||
|
||||
Test 1: Releasing the External System out of reset
|
||||
==================================================
|
||||
|
||||
Run this command in the Linux command-line:
|
||||
|
||||
::
|
||||
|
||||
systems-comms-tests 1
|
||||
|
||||
The output on the External System terminal should be:
|
||||
|
||||
::
|
||||
|
||||
___ ___
|
||||
| / __|
|
||||
|=== \___
|
||||
|___ |___/
|
||||
External System Cortex-M3 Processor
|
||||
Running RTX RTOS
|
||||
v0.1.0_2022-10-19_16-41-32-8c9dca7
|
||||
MHUv2 module 'MHU0_H' started
|
||||
MHUv2 module 'MHU1_H' started
|
||||
MHUv2 module 'MHU0_SE' started
|
||||
MHUv2 module 'MHU1_SE' started
|
||||
|
||||
Test 2: Communication
|
||||
=====================
|
||||
|
||||
Test 2 releases the External System out of reset if not already done. Then, it performs communication between host and External System.
|
||||
|
||||
After running Test 1, run this command in the Linux command-line:
|
||||
|
||||
::
|
||||
|
||||
systems-comms-tests 2
|
||||
|
||||
Additional output on the External System terminal will be printed:
|
||||
|
||||
::
|
||||
|
||||
MHUv2: Message from 'MHU0_H': 0xabcdef1
|
||||
Received 'abcdef1' From Host MHU0
|
||||
CMD: Increment and return to sender...
|
||||
MHUv2: Message from 'MHU1_H': 0xabcdef1
|
||||
Received 'abcdef1' From Host MHU1
|
||||
CMD: Increment and return to sender...
|
||||
|
||||
When running Test 2 the first, Test 1 will be run in the background.
|
||||
|
||||
The output on the External System terminal should be:
|
||||
|
||||
::
|
||||
|
||||
___ ___
|
||||
| / __|
|
||||
|=== \___
|
||||
|___ |___/
|
||||
External System Cortex-M3 Processor
|
||||
Running RTX RTOS
|
||||
v0.1.0_2022-10-19_16-41-32-8c9dca7
|
||||
MHUv2 module 'MHU0_H' started
|
||||
MHUv2 module 'MHU1_H' started
|
||||
MHUv2 module 'MHU0_SE' started
|
||||
MHUv2 module 'MHU1_SE' started
|
||||
MHUv2: Message from 'MHU0_H': 0xabcdef1
|
||||
Received 'abcdef1' From Host MHU0
|
||||
CMD: Increment and return to sender...
|
||||
MHUv2: Message from 'MHU1_H': 0xabcdef1
|
||||
Received 'abcdef1' From Host MHU1
|
||||
CMD: Increment and return to sender...
|
||||
|
||||
The output on the Host terminal should be:
|
||||
|
||||
::
|
||||
|
||||
Received abcdf00 from es0mhu0
|
||||
Received abcdf00 from es0mhu1
|
||||
|
||||
|
||||
Tests results
|
||||
-------------
|
||||
|
||||
As a reference for the end user, reports for various tests for `Corstone-1000 software (CORSTONE1000-2023.11) <https://git.yoctoproject.org/meta-arm/tag/?h=CORSTONE1000-2023.11>`__
|
||||
As a reference for the end user, reports for various tests for `Corstone-1000 software (CORSTONE1000-2023.06) <https://git.yoctoproject.org/meta-arm/tag/?h=CORSTONE1000-2023.06>`__
|
||||
can be found `here <https://gitlab.arm.com/arm-reference-solutions/arm-reference-solutions-test-report/-/tree/master/embedded-a/corstone1000>`__.
|
||||
|
||||
Running the software on FVP on Windows or AArch64 Linux
|
||||
------------------------------------------------------------
|
||||
Running the software on FVP on Windows
|
||||
--------------------------------------
|
||||
|
||||
The user should follow the build instructions in this document to build on a Linux host machine. Then, copy the output binaries to the Windows or Aarch64 Linux machine where the FVP is located. Then, launch the FVP binary.
|
||||
|
||||
Security Issue Reporting
|
||||
------------------------
|
||||
To report any security issues identified with Corstone-1000, please send an email to arm-security@arm.com.
|
||||
If the user needs to run the Corstone-1000 software on FVP on Windows. The user
|
||||
should follow the build instructions in this document to build on Linux host
|
||||
PC, and copy the output binaries to the Windows PC where the FVP is located,
|
||||
and launch the FVP binary.
|
||||
|
||||
--------------
|
||||
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
# Corstone-500 Platform Support in meta-arm-bsp
|
||||
|
||||
## Howto Build and Run
|
||||
|
||||
### Configuration:
|
||||
|
||||
Use the kas
|
||||
|
||||
### Build:
|
||||
|
||||
``bash$ kas build kas/corstone500.yml
|
||||
|
||||
### Run:
|
||||
|
||||
Building using kas should have fetch the Fixed Virtual Platform for this
|
||||
platform and installed at:
|
||||
|
||||
build/tmp/sysroots-components/x86_64/fvp-corstone500-native/usr/bin/./FVP_Corstone-500
|
||||
|
||||
with this in place is possible to launch the FVP using the runfvp inside the
|
||||
scripts directory:
|
||||
|
||||
cd scripts
|
||||
|
||||
./runfvp ../build/tmp/deploy/images/corstone500/core-image-minimal-corstone500.fvpconf --console
|
||||
|
||||
this will output the console in the launching terminal
|
||||
|
||||
@@ -0,0 +1,264 @@
|
||||
Armv8-R AArch64 AEM FVP Support in meta-arm-bsp
|
||||
===============================================
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
Fixed Virtual Platforms (FVP) are complete simulations of an Arm system,
|
||||
including processor, memory and peripherals. These are set out in a
|
||||
"programmer's view", which gives you a comprehensive model on which to build
|
||||
and test your software.
|
||||
|
||||
The Armv8-R AEM FVP is a free of charge Armv8-R Fixed Virtual Platform. It
|
||||
supports the latest Armv8-R feature set.
|
||||
|
||||
This BSP implements a reference stack for the AArch64 support in the R-class
|
||||
first announced with the Cortex-R82 processor:
|
||||
https://developer.arm.com/ip-products/processors/cortex-r/cortex-r82
|
||||
|
||||
Fast Models Fixed Virtual Platforms (FVP) Reference Guide:
|
||||
https://developer.arm.com/docs/100966/latest
|
||||
|
||||
|
||||
BSP Support
|
||||
-----------
|
||||
|
||||
The fvp-baser-aemv8r64 Yocto MACHINE supports the following BSP components,
|
||||
where either a standard or Real-Time Linux kernel (PREEMPT\_RT) can be built
|
||||
and run:
|
||||
|
||||
- FVP_Base_AEMv8R: v11.20.15
|
||||
- boot-wrapper-aarch64: provides PSCI support
|
||||
- U-Boot: v2022.07 - provides UEFI services
|
||||
- Linux kernel: linux-yocto-5.15
|
||||
- Linux kernel with PREEMPT\_RT support: linux-yocto-rt-5.15
|
||||
|
||||
Note that the Real-Time Linux kernel (PREEMPT\_RT) does not use the real-time
|
||||
architectural extensions of the Armv8-R feature set.
|
||||
|
||||
High-Level Architecture
|
||||
-----------------------
|
||||
|
||||
The diagram below shows the current boot flow:
|
||||
|
||||
+---------------------------------------------------------------+
|
||||
| Linux kernel |
|
||||
+---------------------------------------------------------------+
|
||||
/|\ /|\
|
||||
| |
|
||||
| UEFI services |
|
||||
| PSCI services |
|
||||
\|/ |
|
||||
+----------------+ | S-EL1
|
||||
----| U-Boot |------------------------------|-----------
|
||||
+----------------+ | S-EL2
|
||||
/|\ |
|
||||
| |
|
||||
| |
|
||||
| |
|
||||
+--------------------------------------------------\|/----------+
|
||||
| +----------------+ +----------------+ |
|
||||
| boot-wrapper-aarch64 | Device tree | | PSCI handler | |
|
||||
| +----------------+ +----------------+ |
|
||||
+---------------------------------------------------------------+
|
||||
|
||||
|
||||
The firmware binary (generated as `linux-system.axf`) includes
|
||||
boot-wrapper-aarch64, the flattened device tree and U-Boot. U-Boot is configured
|
||||
to automatically detect a virtio block device and boot the UEFI payload at the
|
||||
path `/efi/boot/bootaa64.efi`. Using the standard build, the first partition
|
||||
contains a Grub image at this path, which boots the Linux kernel at `/Image` on
|
||||
the same partition. The second partition of the image contains the Linux root
|
||||
file system.
|
||||
|
||||
There is no EL3 or non-secure world in the Armv8-R AArch64 architecture, so the
|
||||
reset vector starts boot-wrapper-aarch64 at S-EL2. Boot-wrapper-aarch64 is
|
||||
compiled with the `--enable-keep-el` flag, which causes it to boot U-Boot at
|
||||
S-EL2 too. U-Boot is compiled with the `CONFIG_ARMV8_SWITCH_TO_EL1` flag, which
|
||||
causes it to switch to S-EL1 before booting Linux.
|
||||
|
||||
The bundled device tree is passed to U-Boot via register x0. U-Boot passes the
|
||||
same device tree to Linux via the UEFI system table.
|
||||
|
||||
Power state management is provided by PSCI services in boot-wrapper-aarch64.
|
||||
Linux accesses the PSCI handler via HVC calls to S-EL2. U-Boot has been patched
|
||||
to prevent it from overriding the exception vector at S-EL2. The PSCI handler
|
||||
memory region is added to a `/memreserve/` node in the device tree.
|
||||
|
||||
Please note that the final firmware architecture for the fvp-baser-aemv8r64 is
|
||||
not yet stabilized. The patches in this layer are provided for development and
|
||||
evaluation purposes only, and should not be used in production firmware.
|
||||
|
||||
Quick start: Howto Build and Run
|
||||
--------------------------------
|
||||
|
||||
### Host environment setup
|
||||
The following instructions have been tested on hosts running Ubuntu 18.04 and
|
||||
Ubuntu 20.04.
|
||||
Install the required packages for the build host:
|
||||
https://docs.yoctoproject.org/singleindex.html#required-packages-for-the-build-host
|
||||
|
||||
Kas is a setup tool for bitbake based projects. The minimal supported version
|
||||
is 3.0, install it like so:
|
||||
|
||||
pip3 install --user --upgrade kas
|
||||
|
||||
For more details on kas, see https://kas.readthedocs.io/.
|
||||
|
||||
To build the images for the fvp-baser-aemv8r64 machine, you also need to accept
|
||||
the EULA at
|
||||
https://developer.arm.com/downloads/-/arm-ecosystem-fvps/eula
|
||||
by setting the following environment variable:
|
||||
|
||||
FVP_BASE_R_ARM_EULA_ACCEPT="True"
|
||||
|
||||
**Note:** The host machine should have at least 50 GBytes of free disk space
|
||||
for the next steps to work correctly.
|
||||
|
||||
### Fetch sources
|
||||
To fetch and build the ongoing development of the software stack follow the
|
||||
instructions on this document.
|
||||
|
||||
To fetch and build the version 1 (single core) find instructions at https://community.arm.com/developer/tools-software/oss-platforms/w/docs/633/release-1-single-core
|
||||
|
||||
To fetch and build the version 2 (linux smp) find instructions at https://community.arm.com/developer/tools-software/oss-platforms/w/docs/634/release-2---smp
|
||||
|
||||
Fetch the meta-arm repository into a build directory:
|
||||
|
||||
mkdir -p ~/fvp-baser-aemv8r64-build
|
||||
cd ~/fvp-baser-aemv8r64-build
|
||||
git clone https://git.yoctoproject.org/git/meta-arm
|
||||
|
||||
|
||||
### Build
|
||||
Building with the standard Linux kernel:
|
||||
|
||||
cd ~/fvp-baser-aemv8r64-build
|
||||
export FVP_BASE_R_ARM_EULA_ACCEPT="True"
|
||||
kas build meta-arm/kas/fvp-baser-aemv8r64-bsp.yml
|
||||
|
||||
Building with the Real-Time Linux kernel (PREEMPT\_RT):
|
||||
|
||||
cd ~/fvp-baser-aemv8r64-build
|
||||
export FVP_BASE_R_ARM_EULA_ACCEPT="True"
|
||||
kas build meta-arm/kas/fvp-baser-aemv8r64-rt-bsp.yml
|
||||
|
||||
### Run
|
||||
To run an image after the build is done with the standard Linux kernel:
|
||||
|
||||
kas shell --keep-config-unchanged \
|
||||
meta-arm/kas/fvp-baser-aemv8r64-bsp.yml \
|
||||
--command "../layers/meta-arm/scripts/runfvp \
|
||||
--console "
|
||||
|
||||
To run an image after the build is done with the Real-Time Linux kernel
|
||||
(PREEMPT\_RT):
|
||||
|
||||
kas shell --keep-config-unchanged \
|
||||
meta-arm/kas/fvp-baser-aemv8r64-rt-bsp.yml \
|
||||
--command "../layers/meta-arm/scripts/runfvp \
|
||||
--console "
|
||||
|
||||
**Note:** The terminal console login is `root` without password.
|
||||
|
||||
To finish the fvp emulation, you need to close the telnet session:
|
||||
|
||||
- Escape to telnet console with ``ctrl+]``.
|
||||
- Run ``quit`` to close the session.
|
||||
|
||||
### Networking
|
||||
The FVP is configured by default to use "user-mode networking", which simulates
|
||||
an IP router and DHCP server to avoid additional host dependencies and
|
||||
networking configuration. Outbound connections work automatically, e.g. by
|
||||
running:
|
||||
|
||||
wget www.arm.com
|
||||
|
||||
Inbound connections require an explicit port mapping from the host. By default,
|
||||
port 8022 on the host is mapped to port 22 on the FVP, so that the following
|
||||
command will connect to an ssh server running on the FVP:
|
||||
|
||||
ssh root@localhost -p 8022
|
||||
|
||||
Note that user-mode networking does not support ICMP, so `ping` will not work.
|
||||
For more information about user-mode networking, please see
|
||||
https://developer.arm.com/documentation/100964/1117/Introduction-to-Fast-Models/User-mode-networking?lang=en
|
||||
|
||||
### File sharing between host and fvp
|
||||
It is possible to share a directory between the host machine and the fvp using
|
||||
the virtio P9 device component included in the kernel. To do so, create a
|
||||
directory to be mounted from the host machine:
|
||||
|
||||
mkdir /path/to/host-mount-dir
|
||||
|
||||
Then, add the following parameter containing the path to the directory when
|
||||
launching the model:
|
||||
|
||||
--parameter 'bp.virtiop9device.root_path=/path/to/host-mount-dir'
|
||||
|
||||
e.g. for the standard Linux kernel:
|
||||
|
||||
kas shell --keep-config-unchanged \
|
||||
meta-arm/kas/fvp-baser-aemv8r64-bsp.yml \
|
||||
--command "../layers/meta-arm/scripts/runfvp \
|
||||
--console -- --parameter \
|
||||
'bp.virtiop9device.root_path=/path/to/host-mount-dir'"
|
||||
|
||||
Once you are logged into the fvp, the host directory can be mounted in a
|
||||
directory on the model using the following command:
|
||||
|
||||
mount -t 9p -o trans=virtio,version=9p2000.L FM /path/to/fvp-mount-dir
|
||||
|
||||
Devices supported in the kernel
|
||||
-------------------------------
|
||||
|
||||
- serial
|
||||
- virtio 9p
|
||||
- virtio disk
|
||||
- virtio network
|
||||
- virtio rng
|
||||
- watchdog
|
||||
- rtc
|
||||
|
||||
Known Issues and Limitations
|
||||
----------------------------
|
||||
|
||||
- Only PSCI CPU\_ON and CPU\_OFF functions are supported
|
||||
- Linux kernel does not support booting from secure EL2 on Armv8-R AArch64
|
||||
- Linux KVM does not support Armv8-R AArch64
|
||||
- Device DMA memory cache-coherence issue: the FVP `cache_state_modelled`
|
||||
parameter will affect the cache coherence behavior of peripherals’ DMA. When
|
||||
users set `cache_state_modelled=1`, they also have to set
|
||||
`cci400.force_on_from_start=1` to force the FVP to enable snooping on upstream
|
||||
ports.
|
||||
|
||||
Change Log
|
||||
----------
|
||||
- Enabled the ability for U-Boot to apply device tree overlays
|
||||
- Fixed bug in U-Boot that caused changes to the `memory` node in the device
|
||||
tree to be ignored.
|
||||
- Added boot-wrapper-aarch64 support for booting SMP payloads at S-EL2.
|
||||
- Enabled testimage support by default.
|
||||
- Added virtio\_rng to improve random number generation.
|
||||
- Added U-Boot v2022.01 for UEFI support.
|
||||
- Updated Linux kernel version from 5.14 to 5.15 for both standard and
|
||||
Real-Time (PREEMPT\_RT) builds.
|
||||
- Updated boot-wrapper-aarch64 revision and added support for booting U-Boot.
|
||||
- Included boot-wrapper-aarch64 PSCI services in `/memreserve/` region.
|
||||
- Fixed the counter frequency initialization in boot-wrapper-aarch64.
|
||||
- Configured the FVP to use the default RAM size of 4 Gb
|
||||
- Fixed PL011 and SP805 register sizes in the device tree.
|
||||
- Added virtio\_net User Networking mode by default and removed instructions
|
||||
about tap networking setup.
|
||||
- Updated Linux kernel version from 5.10 to 5.14 for both standard and
|
||||
Real-Time (PREEMPT\_RT) builds.
|
||||
- Enabled SMP support via boot-wrapper-aarch64 providing the PSCI CPU\_ON and
|
||||
CPU\_OFF functions.
|
||||
- Introduced Armv8-R64 compiler flags.
|
||||
- Added Linux PREEMPT\_RT support via linux-yocto-rt-5.10.
|
||||
- Added support for file sharing with the host machine using Virtio P9.
|
||||
- Added support for runfvp.
|
||||
- Added performance event support (PMU) in the Linux device tree.
|
||||
- Introduced the fvp-baser-aemv8r64 machine and its BSP composed of
|
||||
boot-wrapper-aarch64 and linux-yocto-5.10 supporting serial, virtio disk,
|
||||
virtio network, watchdog and rtc.
|
||||
@@ -6,6 +6,7 @@
|
||||
jinja2==3.1.1
|
||||
|
||||
# Required to build the documentation
|
||||
sphinx~=5.0
|
||||
sphinx_rtd_theme~=2.0.0
|
||||
sphinx==4.5.0
|
||||
sphinx_rtd_theme==1.0.0
|
||||
sphinx-copybutton==0.5.0
|
||||
docutils==0.17.1
|
||||
|
||||
-2
@@ -1,2 +0,0 @@
|
||||
FILESEXTRAPATHS:append := "${THISDIR}/files/${MACHINE}:"
|
||||
SRC_URI:append = " file://report.txt"
|
||||
-1
@@ -1 +0,0 @@
|
||||
include arm-systemready-ir-acs-${MACHINE}.inc
|
||||
-5
@@ -1,5 +0,0 @@
|
||||
FILESEXTRAPATHS:prepend := "${THISDIR}/files/fvp-base:"
|
||||
|
||||
SRC_URI:append = " \
|
||||
file://0001-check-sr-results-Change-the-expected-SR-result-confi.patch \
|
||||
"
|
||||
-1
@@ -1 +0,0 @@
|
||||
include arm-systemready-scripts-native-${MACHINE}.inc
|
||||
-227
@@ -1,227 +0,0 @@
|
||||
From e3e0465a25f9b1607b2e5ed42afb7b556aa8b9bc Mon Sep 17 00:00:00 2001
|
||||
From: Debbie Martin <Debbie.Martin@arm.com>
|
||||
Date: Wed, 4 Oct 2023 18:40:18 +0100
|
||||
Subject: [PATCH] [PATCH] check-sr-results: Change the expected SR result
|
||||
config
|
||||
|
||||
Update the check-sr-results.yaml and format-sr-results.yaml files for the
|
||||
Systemready IR suite. These changes are required because of the
|
||||
following known differences of fvp-base outputs to those expected by the
|
||||
SystemReady scripts.
|
||||
|
||||
Changes to check-sr-results.yaml:
|
||||
1. acs-console.log:
|
||||
a. must-have-esp: EFI partition/variable persistence not supported due to
|
||||
FVP reset.
|
||||
b. warn-once-if-contains "-dirty": BL1, BL2, and BL31 have dirty versions.
|
||||
c. must-contain "efi: ESRT=0x" and "'esrt: Reserving ESRT space from 0x'":
|
||||
Capsule updates are not supported.
|
||||
d. error-if-contains: "No EFI system partition" and "Failed to persist
|
||||
EFI variables": EFI partition/variable persistence not supported due to
|
||||
FVP reset.
|
||||
2. acs_results/result.md:
|
||||
a. must-contain "Failure: |0|": Capsule and EFI partition failures make
|
||||
the total 20.
|
||||
3. acs_results/CapsuleApp_ESRT_table_info.log:
|
||||
a. capsuleapp-esrt: Capsule updates are not supported.
|
||||
b. must-contain "'EFI_SYSTEM_RESOURCE_TABLE:'" and
|
||||
"EFI_SYSTEM_RESOURCE_ENTRY": EFI partition/variable persistence not
|
||||
supported due to FVP reset.
|
||||
c. must-contain "FwClass": Capsule updates are not supported.
|
||||
d. error-if-contains "ESRT - Not Found": Capsule updates are not
|
||||
supported.
|
||||
4. acs_results/CapsuleApp_FMP_protocol_info.log:
|
||||
a. warn-if-contains "Aborted test": Capsule updates are not supported.
|
||||
This patch also adds must-contain for the specific totals of the test
|
||||
categories due to allowing the "Aborted test" string.
|
||||
5. acs_results/linux_dump/firmware/efi/esrt:
|
||||
a. Remove whole directory because capsule updates are not supported.
|
||||
6. acs_results/uefi/temp:
|
||||
a. Set min-entries to 0: this defaults to 1 despite the directory being
|
||||
optional, so errors if a directory is empty.
|
||||
7. acs_results/uefi_dump:
|
||||
a. min-entries is 13: change this to 11 due to smbiosview.log being
|
||||
optional and the change to make map.log optional.
|
||||
8. acs_results/uefi_dump/dh.log:
|
||||
a. must-contain "EFISystemPartition": EFI partition/variable persistence
|
||||
not supported due to FVP reset.
|
||||
b. must-contain "FirmwareManagement": Capsule updates are not supported.
|
||||
9. acs_results/uefi_dump/map.log:
|
||||
a. Make optional because it isn't populated for IR.
|
||||
10. fw:
|
||||
a. Make optional because capsule updates are not supported.
|
||||
11. os-logs:
|
||||
a. Make optional because distro installation isn't done as part of ACS.
|
||||
|
||||
Changes to format-sr-results.yaml:
|
||||
1. Remove the SIE section (not supported on fvp-base and, if present, causes
|
||||
format-sr-results.py to error).
|
||||
|
||||
Upstream-Status: Inappropriate
|
||||
Signed-off-by: Debbie Martin <Debbie.Martin@arm.com>
|
||||
---
|
||||
check-sr-results.yaml | 34 ++++++++++++++--------------------
|
||||
format-sr-results.yaml | 15 ---------------
|
||||
2 files changed, 14 insertions(+), 35 deletions(-)
|
||||
|
||||
diff --git a/check-sr-results.yaml b/check-sr-results.yaml
|
||||
index a4235de..555fb71 100644
|
||||
--- a/check-sr-results.yaml
|
||||
+++ b/check-sr-results.yaml
|
||||
@@ -10,7 +10,6 @@ check-sr-results-configuration:
|
||||
# The following tree applies to all ACS-IR 2.0 versions.
|
||||
tree:
|
||||
- file: acs-console.log
|
||||
- must-have-esp:
|
||||
must-contain:
|
||||
- Booting `bbr/bsa'
|
||||
- Press any key to stop the EFI SCT running
|
||||
@@ -24,8 +23,6 @@ tree:
|
||||
- 'EFI stub: Booting Linux Kernel...'
|
||||
- 'EFI stub: Using DTB from configuration table'
|
||||
- Linux version
|
||||
- - 'efi: ESRT=0x'
|
||||
- - 'esrt: Reserving ESRT space from 0x'
|
||||
- systemd
|
||||
- Executing FWTS for EBBR
|
||||
- 'Test: UEFI'
|
||||
@@ -36,13 +33,9 @@ tree:
|
||||
- ACS run is completed
|
||||
- Please press <Enter> to continue ...
|
||||
warn-once-if-contains:
|
||||
- - -dirty
|
||||
- 'EFI stub: ERROR:'
|
||||
- 'FIRMWARE BUG:'
|
||||
- OVERLAP DETECTED
|
||||
- error-if-contains:
|
||||
- - No EFI system partition
|
||||
- - Failed to persist EFI variables
|
||||
- dir: acs_results
|
||||
min-entries: 8 # Allow missing result.md
|
||||
max-entries: 9
|
||||
@@ -53,7 +46,7 @@ tree:
|
||||
must-contain:
|
||||
- SCT Summary
|
||||
- Dropped:|0|
|
||||
- - Failure:|0|
|
||||
+ - Failure:|20|
|
||||
- Warning:|0|
|
||||
- Dropped by group
|
||||
- Failure by group
|
||||
@@ -64,16 +57,11 @@ tree:
|
||||
max-entries: 2
|
||||
tree:
|
||||
- file: CapsuleApp_ESRT_table_info.log
|
||||
- capsuleapp-esrt:
|
||||
must-contain:
|
||||
- ESRT TABLE
|
||||
- - 'EFI_SYSTEM_RESOURCE_TABLE:'
|
||||
- - EFI_SYSTEM_RESOURCE_ENTRY
|
||||
- - FwClass
|
||||
error-if-contains:
|
||||
- FwResourceCount - 0x0
|
||||
- FwResourceCountMax - 0x0
|
||||
- - ESRT - Not Found
|
||||
- file: CapsuleApp_FMP_protocol_info.log
|
||||
must-contain:
|
||||
- FMP DATA
|
||||
@@ -95,9 +83,14 @@ tree:
|
||||
- 'Medium failures: NONE'
|
||||
- 'Low failures: NONE'
|
||||
- 'Other failures: NONE'
|
||||
+ - 'dt_base | 3| | | | | |'
|
||||
+ - 'esrt | | | 2| | | |'
|
||||
+ - 'uefibootpath | | | | | | |'
|
||||
+ - 'uefirtmisc | 1| | | | 8| |'
|
||||
+ - 'uefirttime | 4| | | | 35| |'
|
||||
+ - 'uefirtvariable | 2| | | | 10| |'
|
||||
+ - 'uefivarinfo | | | | | 1| |'
|
||||
- 'Total:'
|
||||
- warn-if-contains:
|
||||
- - Aborted test
|
||||
error-if-contains:
|
||||
- FAILED
|
||||
- This is an invalid entry.
|
||||
@@ -180,6 +173,7 @@ tree:
|
||||
tree:
|
||||
- file: OsIndicationsSupported-*
|
||||
- dir: esrt
|
||||
+ optional:
|
||||
tree:
|
||||
- dir: entries
|
||||
tree:
|
||||
@@ -314,8 +308,9 @@ tree:
|
||||
- BSA tests complete. Reset the system.
|
||||
- dir: temp # This sometimes remains; ignore it
|
||||
optional:
|
||||
+ min-entries: 0
|
||||
- dir: uefi_dump
|
||||
- min-entries: 13
|
||||
+ min-entries: 11
|
||||
max-entries: 13
|
||||
tree:
|
||||
- file: bcfg.log
|
||||
@@ -331,8 +326,6 @@ tree:
|
||||
must-contain:
|
||||
- Handle dump
|
||||
- DevicePath
|
||||
- - EFISystemPartition
|
||||
- - FirmwareManagement
|
||||
- SimpleTextOut
|
||||
- file: dmem.log
|
||||
must-contain:
|
||||
@@ -355,6 +348,7 @@ tree:
|
||||
- DRIVER NAME
|
||||
- file: ifconfig.log
|
||||
- file: map.log
|
||||
+ optional:
|
||||
must-contain:
|
||||
- Mapping table
|
||||
- /HD(1,GPT,
|
||||
@@ -392,7 +386,7 @@ tree:
|
||||
- dir: docs
|
||||
optional:
|
||||
- dir: fw
|
||||
- min-entries: 3
|
||||
+ optional:
|
||||
tree:
|
||||
- file: u-boot-sniff.log
|
||||
must-contain:
|
||||
@@ -500,7 +494,7 @@ tree:
|
||||
- dir: manual-results
|
||||
optional:
|
||||
- dir: os-logs
|
||||
- min-entries: 2
|
||||
+ optional:
|
||||
tree:
|
||||
- file: 'OS-image-download-links.txt'
|
||||
optional:
|
||||
diff --git a/format-sr-results.yaml b/format-sr-results.yaml
|
||||
index dd34cd6..20b69de 100644
|
||||
--- a/format-sr-results.yaml
|
||||
+++ b/format-sr-results.yaml
|
||||
@@ -47,21 +47,6 @@ subs:
|
||||
extract:
|
||||
filename: "acs_results/linux_dump/firmware/devicetree/base/psci/\
|
||||
compatible"
|
||||
- - heading: BBSR Compliance
|
||||
- paragraph: TBD
|
||||
- subs:
|
||||
- - heading: SIE SCT
|
||||
- extract:
|
||||
- filename: acs_results/SIE/result.md
|
||||
- find: '# SCT Summary'
|
||||
- first-line: 4
|
||||
- last-line:
|
||||
- paragraph: TBD
|
||||
- - heading: SIE FWTS
|
||||
- extract:
|
||||
- filename: acs_results/SIE/fwts/FWTSResults.log
|
||||
- find: Test Failure Summary
|
||||
- paragraph: TBD
|
||||
- heading: BSA Compliance (informative)
|
||||
paragraph: TBD
|
||||
subs:
|
||||
--
|
||||
2.25.1
|
||||
|
||||
-34
@@ -1,34 +0,0 @@
|
||||
General information
|
||||
-------------------
|
||||
- Arm SystemReady Band: IR
|
||||
- System name: FVP Base A AEM
|
||||
- Prepared by:
|
||||
- E-mail:
|
||||
- Date:
|
||||
|
||||
System information
|
||||
------------------
|
||||
- Company: Arm
|
||||
- System: FVP Base A AEM
|
||||
- SoC:
|
||||
- FW version:
|
||||
- Memory:
|
||||
- Storage devices / disks:
|
||||
- Network controllers:
|
||||
- Other Hardware information:
|
||||
|
||||
Test Logs and Results
|
||||
---------------------
|
||||
- ACS version used: 2.0
|
||||
- ACS URL (if pre-built binary): https://github.com/ARM-software/arm-systemready/blob/v23.03_IR_2.0.0/IR/prebuilt_images/v23.03_2.0.0/ir-acs-live-image-generic-arm64.wic.xz
|
||||
- Changes to ACS (if built from source):
|
||||
|
||||
- Test Logs collected
|
||||
[X] ACS - SCT
|
||||
[X] ACS - BSA - UEFI
|
||||
[X] ACS - BSA - Linux
|
||||
[X] ACS - FWTS
|
||||
[X] ACS - Linux boot log
|
||||
[X] ACS - Linux dumps
|
||||
[X] ACS - UEFI Shell dumps
|
||||
[ ] ACS - Capsule Update
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
COMPATIBLE_MACHINE = "fvp-baser-aemv8r64"
|
||||
|
||||
FILESEXTRAPATHS:prepend := "${THISDIR}/files/${MACHINE}:"
|
||||
SRC_URI:append = " \
|
||||
file://0001-aarch64-Rename-labels-and-prepare-for-lower-EL-booti.patch \
|
||||
file://0002-aarch64-Prepare-for-EL1-booting.patch \
|
||||
file://0003-aarch64-Prepare-for-lower-EL-booting.patch \
|
||||
file://0004-gic-v3-Prepare-for-gicv3-with-EL2.patch \
|
||||
file://0005-aarch64-Prepare-for-booting-with-EL2.patch \
|
||||
file://0006-aarch64-Introduce-EL2-boot-code-for-Armv8-R-AArch64.patch \
|
||||
file://0007-Allow-enable-psci-to-choose-between-smc-and-hvc.patch \
|
||||
file://0008-aarch64-Disable-CNTPCT_EL0-trap-for-v8-R64.patch \
|
||||
file://0009-lds-Mark-the-mem-range.patch \
|
||||
file://0010-common-Introduce-the-libfdt.patch \
|
||||
file://0011-common-Add-essential-libc-functions.patch \
|
||||
file://0012-Makefile-Add-the-libfdt-to-the-Makefile-system.patch \
|
||||
file://0013-platform-Add-print_hex-func.patch \
|
||||
file://0014-common-Add-mem-usage-to-memreserve.patch \
|
||||
file://0015-boot-Add-the-enable-keep-el-compile-option.patch \
|
||||
file://0016-Makefile-Change-COUNTER_FREQ-to-100-MHz.patch \
|
||||
file://0017-PSCI-Apply-flush-cache-after-setting-branch_data.patch \
|
||||
file://0018-PSCI-Add-function-call-entry-point.patch \
|
||||
file://0019-lds-Rearrange-and-mark-the-sections.patch \
|
||||
file://0020-common-Provide-firmware-info-using-libfdt.patch \
|
||||
file://0021-boot-Enable-firmware-node-initialization.patch \
|
||||
"
|
||||
|
||||
BOOT_WRAPPER_AARCH64_CMDLINE = "\
|
||||
earlycon console=ttyAMA0 loglevel=8 rootfstype=ext4 root=/dev/vda1 rw"
|
||||
|
||||
EXTRA_OECONF += "--enable-psci=hvc --enable-keep-el"
|
||||
|
||||
TUNE_CCARGS = ""
|
||||
|
||||
BOOT_WRAPPER_AARCH64_KERNEL = "u-boot.bin"
|
||||
do_deploy[depends] += "u-boot:do_deploy"
|
||||
@@ -0,0 +1,4 @@
|
||||
MACHINE_BOOT_WRAPPER_AARCH64_REQUIRE ?= ""
|
||||
MACHINE_BOOT_WRAPPER_AARCH64_REQUIRE:fvp-baser-aemv8r64 ?= "boot-wrapper-aarch64-fvp-baser-aemv8r64.inc"
|
||||
|
||||
require ${MACHINE_BOOT_WRAPPER_AARCH64_REQUIRE}
|
||||
+135
@@ -0,0 +1,135 @@
|
||||
From 545f6950ae4dc55b4974986aa9629adb16eaf4e1 Mon Sep 17 00:00:00 2001
|
||||
From: Jaxson Han <jaxson.han@arm.com>
|
||||
Date: Tue, 25 May 2021 07:25:00 +0100
|
||||
Subject: [PATCH] aarch64: Rename labels and prepare for lower EL booting
|
||||
|
||||
Prepare for booting from lower EL. Rename *_el3 relavant labels with
|
||||
*_el_max and *_no_el3 with *_keep_el. Since the original _no_el3 means
|
||||
"We neither do init sequence at this highest EL nor drop to lower EL
|
||||
when entering to kernel", we rename it with _keep_el to make it more
|
||||
clear for lower EL initialisation.
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Jaxson Han <jaxson.han@arm.com>
|
||||
---
|
||||
arch/aarch64/boot.S | 28 ++++++++++++++++++++--------
|
||||
arch/aarch64/psci.S | 9 +++++----
|
||||
arch/aarch64/spin.S | 4 ++--
|
||||
3 files changed, 27 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/arch/aarch64/boot.S b/arch/aarch64/boot.S
|
||||
index d682ba5..fab694e 100644
|
||||
--- a/arch/aarch64/boot.S
|
||||
+++ b/arch/aarch64/boot.S
|
||||
@@ -34,18 +34,30 @@ ASM_FUNC(_start)
|
||||
|
||||
/*
|
||||
* EL3 initialisation
|
||||
+ * Boot sequence
|
||||
+ * If CurrentEL == EL3, then goto EL3 initialisation and drop to
|
||||
+ * lower EL before entering the kernel.
|
||||
+ * Else, no initialisation and keep the current EL before
|
||||
+ * entering the kernel.
|
||||
*/
|
||||
mrs x0, CurrentEL
|
||||
cmp x0, #CURRENTEL_EL3
|
||||
- b.eq 1f
|
||||
+ b.eq el3_init
|
||||
|
||||
+ /*
|
||||
+ * We stay in the current EL for entering the kernel
|
||||
+ */
|
||||
mov w0, #1
|
||||
- ldr x1, =flag_no_el3
|
||||
+ ldr x1, =flag_keep_el
|
||||
str w0, [x1]
|
||||
|
||||
- b start_no_el3
|
||||
+ b start_keep_el
|
||||
|
||||
-1: mov x0, #0x30 // RES1
|
||||
+ /*
|
||||
+ * EL3 initialisation
|
||||
+ */
|
||||
+el3_init:
|
||||
+ mov x0, #0x30 // RES1
|
||||
orr x0, x0, #(1 << 0) // Non-secure EL1
|
||||
orr x0, x0, #(1 << 8) // HVC enable
|
||||
|
||||
@@ -145,7 +157,7 @@ ASM_FUNC(_start)
|
||||
|
||||
bl gic_secure_init
|
||||
|
||||
- b start_el3
|
||||
+ b start_el_max
|
||||
|
||||
err_invalid_id:
|
||||
b .
|
||||
@@ -172,7 +184,7 @@ ASM_FUNC(jump_kernel)
|
||||
bl find_logical_id
|
||||
bl setup_stack // Reset stack pointer
|
||||
|
||||
- ldr w0, flag_no_el3
|
||||
+ ldr w0, flag_keep_el
|
||||
cmp w0, #0 // Prepare Z flag
|
||||
|
||||
mov x0, x20
|
||||
@@ -181,7 +193,7 @@ ASM_FUNC(jump_kernel)
|
||||
mov x3, x23
|
||||
|
||||
b.eq 1f
|
||||
- br x19 // No EL3
|
||||
+ br x19 // Keep current EL
|
||||
|
||||
1: mov x4, #SPSR_KERNEL
|
||||
|
||||
@@ -199,5 +211,5 @@ ASM_FUNC(jump_kernel)
|
||||
|
||||
.data
|
||||
.align 3
|
||||
-flag_no_el3:
|
||||
+flag_keep_el:
|
||||
.long 0
|
||||
diff --git a/arch/aarch64/psci.S b/arch/aarch64/psci.S
|
||||
index 8bd224b..7b8919a 100644
|
||||
--- a/arch/aarch64/psci.S
|
||||
+++ b/arch/aarch64/psci.S
|
||||
@@ -79,7 +79,7 @@ smc_exit:
|
||||
ldp x18, x19, [sp], #16
|
||||
eret
|
||||
|
||||
-ASM_FUNC(start_el3)
|
||||
+ASM_FUNC(start_el_max)
|
||||
ldr x0, =vector
|
||||
bl setup_vector
|
||||
|
||||
@@ -89,10 +89,11 @@ ASM_FUNC(start_el3)
|
||||
b psci_first_spin
|
||||
|
||||
/*
|
||||
- * This PSCI implementation requires EL3. Without EL3 we'll only boot the
|
||||
- * primary cpu, all others will be trapped in an infinite loop.
|
||||
+ * This PSCI implementation requires the highest EL(EL3 or Armv8-R EL2).
|
||||
+ * Without the highest EL, we'll only boot the primary cpu, all othersr
|
||||
+ * will be trapped in an infinite loop.
|
||||
*/
|
||||
-ASM_FUNC(start_no_el3)
|
||||
+ASM_FUNC(start_keep_el)
|
||||
cpuid x0, x1
|
||||
bl find_logical_id
|
||||
cbz x0, psci_first_spin
|
||||
diff --git a/arch/aarch64/spin.S b/arch/aarch64/spin.S
|
||||
index 1ea1c0b..bfb1d47 100644
|
||||
--- a/arch/aarch64/spin.S
|
||||
+++ b/arch/aarch64/spin.S
|
||||
@@ -12,8 +12,8 @@
|
||||
|
||||
.text
|
||||
|
||||
-ASM_FUNC(start_el3)
|
||||
-ASM_FUNC(start_no_el3)
|
||||
+ASM_FUNC(start_el_max)
|
||||
+ASM_FUNC(start_keep_el)
|
||||
cpuid x0, x1
|
||||
bl find_logical_id
|
||||
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
From bad32d3fc127a421be416b17e4f7d6d514f06abb Mon Sep 17 00:00:00 2001
|
||||
From: Jaxson Han <jaxson.han@arm.com>
|
||||
Date: Tue, 25 May 2021 07:25:00 +0100
|
||||
Subject: [PATCH] aarch64: Prepare for EL1 booting
|
||||
|
||||
When booting from EL1, add a check and skip the init of
|
||||
sctlr_el2 in jump_kernel
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Jaxson Han <jaxson.han@arm.com>
|
||||
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
|
||||
---
|
||||
arch/aarch64/boot.S | 6 +++++-
|
||||
arch/aarch64/include/asm/cpu.h | 1 +
|
||||
2 files changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/aarch64/boot.S b/arch/aarch64/boot.S
|
||||
index fab694e..5105b41 100644
|
||||
--- a/arch/aarch64/boot.S
|
||||
+++ b/arch/aarch64/boot.S
|
||||
@@ -177,10 +177,14 @@ ASM_FUNC(jump_kernel)
|
||||
ldr x0, =SCTLR_EL1_KERNEL
|
||||
msr sctlr_el1, x0
|
||||
|
||||
+ mrs x0, CurrentEL
|
||||
+ cmp x0, #CURRENTEL_EL2
|
||||
+ b.lt 1f
|
||||
+
|
||||
ldr x0, =SCTLR_EL2_KERNEL
|
||||
msr sctlr_el2, x0
|
||||
|
||||
- cpuid x0, x1
|
||||
+1: cpuid x0, x1
|
||||
bl find_logical_id
|
||||
bl setup_stack // Reset stack pointer
|
||||
|
||||
diff --git a/arch/aarch64/include/asm/cpu.h b/arch/aarch64/include/asm/cpu.h
|
||||
index 49d3f86..3767da3 100644
|
||||
--- a/arch/aarch64/include/asm/cpu.h
|
||||
+++ b/arch/aarch64/include/asm/cpu.h
|
||||
@@ -11,6 +11,7 @@
|
||||
|
||||
#define MPIDR_ID_BITS 0xff00ffffff
|
||||
|
||||
+#define CURRENTEL_EL2 (2 << 2)
|
||||
#define CURRENTEL_EL3 (3 << 2)
|
||||
|
||||
/*
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
From 252cbd36e51414b60ab68306f9c38e358709494d Mon Sep 17 00:00:00 2001
|
||||
From: Jaxson Han <jaxson.han@arm.com>
|
||||
Date: Tue, 25 May 2021 07:25:00 +0100
|
||||
Subject: [PATCH] aarch64: Prepare for lower EL booting
|
||||
|
||||
Save SPSR_KERNEL into spsr_to_elx during el3_init.
|
||||
The jump_kernel will load spsr_to_elx into spsr_el3.
|
||||
|
||||
This change will make it easier to control whether drop to lower EL
|
||||
before jumping to the kernel.
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Jaxson Han <jaxson.han@arm.com>
|
||||
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
|
||||
---
|
||||
arch/aarch64/boot.S | 15 +++++++++++++--
|
||||
1 file changed, 13 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/arch/aarch64/boot.S b/arch/aarch64/boot.S
|
||||
index 5105b41..243198d 100644
|
||||
--- a/arch/aarch64/boot.S
|
||||
+++ b/arch/aarch64/boot.S
|
||||
@@ -151,7 +151,16 @@ el3_init:
|
||||
mov x0, #ZCR_EL3_LEN_MAX // SVE: Enable full vector len
|
||||
msr ZCR_EL3, x0 // for EL2.
|
||||
|
||||
-1:
|
||||
+ /*
|
||||
+ * Save SPSR_KERNEL into spsr_to_elx.
|
||||
+ * The jump_kernel will load spsr_to_elx into spsr_el3
|
||||
+ */
|
||||
+1: mov w0, #SPSR_KERNEL
|
||||
+ ldr x1, =spsr_to_elx
|
||||
+ str w0, [x1]
|
||||
+ b el_max_init
|
||||
+
|
||||
+el_max_init:
|
||||
ldr x0, =COUNTER_FREQ
|
||||
msr cntfrq_el0, x0
|
||||
|
||||
@@ -199,7 +208,7 @@ ASM_FUNC(jump_kernel)
|
||||
b.eq 1f
|
||||
br x19 // Keep current EL
|
||||
|
||||
-1: mov x4, #SPSR_KERNEL
|
||||
+1: ldr w4, spsr_to_elx
|
||||
|
||||
/*
|
||||
* If bit 0 of the kernel address is set, we're entering in AArch32
|
||||
@@ -217,3 +226,5 @@ ASM_FUNC(jump_kernel)
|
||||
.align 3
|
||||
flag_keep_el:
|
||||
.long 0
|
||||
+spsr_to_elx:
|
||||
+ .long 0
|
||||
+105
@@ -0,0 +1,105 @@
|
||||
From bff110a95a5e4c9db2d61e629b4aa4b84530201e Mon Sep 17 00:00:00 2001
|
||||
From: Jaxson Han <jaxson.han@arm.com>
|
||||
Date: Tue, 25 May 2021 07:25:00 +0100
|
||||
Subject: [PATCH] gic-v3: Prepare for gicv3 with EL2
|
||||
|
||||
This is a preparation for allowing boot-wrapper configuring the gicv3
|
||||
with EL2.
|
||||
|
||||
When confiuring with EL2, since there is no ICC_CTLR_EL2, the
|
||||
ICC_CTLR_EL3 cannot be replaced with ICC_CTLR_EL2 simply.
|
||||
See [https://developer.arm.com/documentation/ihi0069/latest/].
|
||||
|
||||
As the caller, gic_secure_init expects the ICC_CTLR to be written,
|
||||
we change the function into gic_init_icc_ctlr(). In the GIC spec,
|
||||
the r/w bits in this register ([6:0]) either affect EL3 IRQ routing
|
||||
(not applicable since no EL3), non-secure IRQ handling (not applicable
|
||||
since only secure state in Armv8-R aarch64), or are aliased to
|
||||
ICC_CTLR_EL1 bits.
|
||||
So, based on this, the new gic_init_icc_ctlr() would be:
|
||||
When currentEL is EL3, init ICC_CTLR_EL3 as before.
|
||||
When currentEL is not EL3, init ICC_CTLR_EL1 with ICC_CTLR_EL1_RESET.
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Jaxson Han <jaxson.han@arm.com>
|
||||
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
|
||||
---
|
||||
arch/aarch32/include/asm/gic-v3.h | 7 +++++++
|
||||
arch/aarch64/include/asm/gic-v3.h | 23 ++++++++++++++++++++---
|
||||
common/gic-v3.c | 2 +-
|
||||
3 files changed, 28 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/arch/aarch32/include/asm/gic-v3.h b/arch/aarch32/include/asm/gic-v3.h
|
||||
index 65f38de..11e7bc7 100644
|
||||
--- a/arch/aarch32/include/asm/gic-v3.h
|
||||
+++ b/arch/aarch32/include/asm/gic-v3.h
|
||||
@@ -9,6 +9,8 @@
|
||||
#ifndef __ASM_AARCH32_GICV3_H
|
||||
#define __ASM_AARCH32_GICV3_H
|
||||
|
||||
+#define ICC_CTLR_RESET (0UL)
|
||||
+
|
||||
static inline void gic_write_icc_sre(uint32_t val)
|
||||
{
|
||||
asm volatile ("mcr p15, 6, %0, c12, c12, 5" : : "r" (val));
|
||||
@@ -19,4 +21,9 @@ static inline void gic_write_icc_ctlr(uint32_t val)
|
||||
asm volatile ("mcr p15, 6, %0, c12, c12, 4" : : "r" (val));
|
||||
}
|
||||
|
||||
+static inline void gic_init_icc_ctlr()
|
||||
+{
|
||||
+ gic_write_icc_ctlr(ICC_CTLR_RESET);
|
||||
+}
|
||||
+
|
||||
#endif
|
||||
diff --git a/arch/aarch64/include/asm/gic-v3.h b/arch/aarch64/include/asm/gic-v3.h
|
||||
index 5b32380..090ab0b 100644
|
||||
--- a/arch/aarch64/include/asm/gic-v3.h
|
||||
+++ b/arch/aarch64/include/asm/gic-v3.h
|
||||
@@ -15,14 +15,31 @@
|
||||
#define ICC_CTLR_EL3 "S3_6_C12_C12_4"
|
||||
#define ICC_PMR_EL1 "S3_0_C4_C6_0"
|
||||
|
||||
+#define ICC_CTLR_EL3_RESET (0UL)
|
||||
+#define ICC_CTLR_EL1_RESET (0UL)
|
||||
+
|
||||
+static inline uint32_t current_el(void)
|
||||
+{
|
||||
+ uint32_t val;
|
||||
+
|
||||
+ asm volatile ("mrs %0, CurrentEL" : "=r" (val));
|
||||
+ return val;
|
||||
+}
|
||||
+
|
||||
static inline void gic_write_icc_sre(uint32_t val)
|
||||
{
|
||||
- asm volatile ("msr " ICC_SRE_EL3 ", %0" : : "r" (val));
|
||||
+ if (current_el() == CURRENTEL_EL3)
|
||||
+ asm volatile ("msr " ICC_SRE_EL3 ", %0" : : "r" (val));
|
||||
+ else
|
||||
+ asm volatile ("msr " ICC_SRE_EL2 ", %0" : : "r" (val));
|
||||
}
|
||||
|
||||
-static inline void gic_write_icc_ctlr(uint32_t val)
|
||||
+static inline void gic_init_icc_ctlr()
|
||||
{
|
||||
- asm volatile ("msr " ICC_CTLR_EL3 ", %0" : : "r" (val));
|
||||
+ if (current_el() == CURRENTEL_EL3)
|
||||
+ asm volatile ("msr " ICC_CTLR_EL3 ", %0" : : "r" (ICC_CTLR_EL3_RESET));
|
||||
+ else
|
||||
+ asm volatile ("msr " ICC_CTLR_EL1 ", %0" : : "r" (ICC_CTLR_EL1_RESET));
|
||||
}
|
||||
|
||||
#endif
|
||||
diff --git a/common/gic-v3.c b/common/gic-v3.c
|
||||
index 6207007..a0fe564 100644
|
||||
--- a/common/gic-v3.c
|
||||
+++ b/common/gic-v3.c
|
||||
@@ -117,6 +117,6 @@ void gic_secure_init(void)
|
||||
gic_write_icc_sre(ICC_SRE_Enable | ICC_SRE_DIB | ICC_SRE_DFB | ICC_SRE_SRE);
|
||||
isb();
|
||||
|
||||
- gic_write_icc_ctlr(0);
|
||||
+ gic_init_icc_ctlr();
|
||||
isb();
|
||||
}
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
From ba955efb35ce1d41b562190d7c2fbcbcf8ef97ff Mon Sep 17 00:00:00 2001
|
||||
From: Jaxson Han <jaxson.han@arm.com>
|
||||
Date: Tue, 25 May 2021 07:25:00 +0100
|
||||
Subject: [PATCH] aarch64: Prepare for booting with EL2
|
||||
|
||||
Prepare for allowing boot-wrapper to be entered in EL2.
|
||||
Detect current EL and set the corresponding EL registers.
|
||||
|
||||
Upstream-Status: Pending
|
||||
Signed-off-by: Jaxson Han <jaxson.han@arm.com>
|
||||
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
|
||||
---
|
||||
arch/aarch64/boot.S | 8 ++++++++
|
||||
arch/aarch64/utils.S | 10 +++++++++-
|
||||
2 files changed, 17 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/aarch64/boot.S b/arch/aarch64/boot.S
|
||||
index 243198d..3593ca5 100644
|
||||
--- a/arch/aarch64/boot.S
|
||||
+++ b/arch/aarch64/boot.S
|
||||
@@ -216,10 +216,18 @@ ASM_FUNC(jump_kernel)
|
||||
*/
|
||||
bfi x4, x19, #5, #1
|
||||
|
||||
+ mrs x5, CurrentEL
|
||||
+ cmp x5, #CURRENTEL_EL2
|
||||
+ b.eq 1f
|
||||
+
|
||||
msr elr_el3, x19
|
||||
msr spsr_el3, x4
|
||||
eret
|
||||
|
||||
+1: msr elr_el2, x19
|
||||
+ msr spsr_el2, x4
|
||||
+ eret
|
||||
+
|
||||
.ltorg
|
||||
|
||||
.data
|
||||
diff --git a/arch/aarch64/utils.S b/arch/aarch64/utils.S
|
||||
index 85c7f8a..f02a249 100644
|
||||
--- a/arch/aarch64/utils.S
|
||||
+++ b/arch/aarch64/utils.S
|
||||
@@ -34,10 +34,18 @@ ASM_FUNC(find_logical_id)
|
||||
ret
|
||||
|
||||
/*
|
||||
- * Setup EL3 vectors
|
||||
+ * Setup EL3/EL2 vectors
|
||||
* x0: vector address
|
||||
*/
|
||||
ASM_FUNC(setup_vector)
|
||||
+ mrs x1, CurrentEL
|
||||
+ cmp x1, #CURRENTEL_EL2
|
||||
+ b.eq 1f
|
||||
+
|
||||
msr VBAR_EL3, x0
|
||||
isb
|
||||
ret
|
||||
+
|
||||
+1: msr VBAR_EL2, x0
|
||||
+ isb
|
||||
+ ret
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user