mirror of
https://git.yoctoproject.org/meta-arm
synced 2026-06-01 13:10:04 +00:00
Add support for arm Foundation ARMv8 FVP simulator
Add recipes and configuration files to add Yocto support for Foundation armv8 simulator from arm. The following components are supported: - trusted-firmware-a - linux kernel (with specific kernel configuration) - xen (with meta-virtualization layer) - unpacking and starting the generated image directly in Foundation simulator (package must be download from www.arm.com website and put in the directory downloads/licensed/silver.arm.com). After building, the following command can be used to start a generated image in foundation: ./tmp/deploy/tools/start-foundation-armv8.sh Change-Id: Iade343c38f0799ee8523434d555cb3ca42068a86 Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
This commit is contained in:
@@ -0,0 +1,155 @@
|
|||||||
|
# Defines the disk.img image type
|
||||||
|
|
||||||
|
#
|
||||||
|
# Add an image type 'disk.img' which creates a disk image
|
||||||
|
# with up to 4 partitions
|
||||||
|
#
|
||||||
|
# For partition 1 (replace 1 by 2 for partition 2, and so on for 3 and 4):
|
||||||
|
#
|
||||||
|
# * DISK_IMG_PARTITION1_SIZE is the partition size in MB (1024 is 1 GB)
|
||||||
|
#
|
||||||
|
# * DISK_IMG_PARTITION1_FSTYPE is the file system to format the partition with.
|
||||||
|
# We support only ext files systems (ext2, ext3 and ext4)
|
||||||
|
# If this is empty, the partition will not be formated.
|
||||||
|
#
|
||||||
|
# * DISK_IMG_PARTITION1_CONTENT is the content to put in the filesystem.
|
||||||
|
# Only 'rootfs' is supported and will create a partition with the Yocto
|
||||||
|
# root filesystem.
|
||||||
|
#
|
||||||
|
|
||||||
|
# Default values for partition 1
|
||||||
|
DISK_IMG_PARTITION1_SIZE ??= "2048"
|
||||||
|
DISK_IMG_PARTITION1_FSTYPE ??= "ext4"
|
||||||
|
DISK_IMG_PARTITION1_CONTENT ??= "rootfs"
|
||||||
|
|
||||||
|
# Default values for partition 2
|
||||||
|
DISK_IMG_PARTITION2_SIZE ??= "0"
|
||||||
|
DISK_IMG_PARTITION2_FSTYPE ??= "ext2"
|
||||||
|
DISK_IMG_PARTITION2_CONTENT ??= ""
|
||||||
|
|
||||||
|
# Default values for partition 3
|
||||||
|
DISK_IMG_PARTITION3_SIZE ??= "0"
|
||||||
|
DISK_IMG_PARTITION3_FSTYPE ??= "ext4"
|
||||||
|
DISK_IMG_PARTITION3_CONTENT ??= ""
|
||||||
|
|
||||||
|
# Default values for partition 4
|
||||||
|
DISK_IMG_PARTITION4_SIZE ??= "0"
|
||||||
|
DISK_IMG_PARTITION4_FSTYPE ??= "ext4"
|
||||||
|
DISK_IMG_PARTITION4_CONTENT ??= ""
|
||||||
|
|
||||||
|
# Default disk sector size
|
||||||
|
DISK_IMG_SECTOR_SIZE ??= "512"
|
||||||
|
|
||||||
|
# We need mkfs.ext and parted tools to create our image (dd is always there)
|
||||||
|
do_image_disk_img[depends] += " e2fsprogs-native:do_populate_sysroot \
|
||||||
|
parted-native:do_populate_sysroot"
|
||||||
|
|
||||||
|
DISK_IMG_FILE = "${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.disk.img"
|
||||||
|
|
||||||
|
# Create one disk partition
|
||||||
|
disk_img_createpart() {
|
||||||
|
local imagefile="$1"
|
||||||
|
local start="$2"
|
||||||
|
local size="$3"
|
||||||
|
local fstype="${4:-ext4}"
|
||||||
|
local content="${5:-}"
|
||||||
|
local formatargs=""
|
||||||
|
|
||||||
|
set -x
|
||||||
|
|
||||||
|
rm -f $imagefile
|
||||||
|
|
||||||
|
# Create the partition image
|
||||||
|
dd if=/dev/zero of=$imagefile bs=${DISK_IMG_SECTOR_SIZE} count=0 \
|
||||||
|
seek=$(expr $size / ${DISK_IMG_SECTOR_SIZE})
|
||||||
|
|
||||||
|
if [ -n "$fstype" ]; then
|
||||||
|
case $content in
|
||||||
|
rootfs)
|
||||||
|
formatargs=" -d ${IMAGE_ROOTFS}"
|
||||||
|
;;
|
||||||
|
boot)
|
||||||
|
echo "Unsupported"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Create the file system (with content if needed)
|
||||||
|
mkfs.$fstype -F $imagefile $formatargs
|
||||||
|
fi
|
||||||
|
|
||||||
|
cat $imagefile >> ${DISK_IMG_FILE}
|
||||||
|
|
||||||
|
# Add the partition to the partition table
|
||||||
|
parted -s ${DISK_IMG_FILE} unit B mkpart primary $start \
|
||||||
|
$(expr $start + $realsize - 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
disk_img_create () {
|
||||||
|
local currpos
|
||||||
|
local realsize
|
||||||
|
|
||||||
|
set -x
|
||||||
|
|
||||||
|
currpos=${DISK_IMG_SECTOR_SIZE}
|
||||||
|
|
||||||
|
# Create reserved part for partition table (1MB)
|
||||||
|
dd if=/dev/zero of=${DISK_IMG_FILE} bs=${DISK_IMG_SECTOR_SIZE} count=0 \
|
||||||
|
seek=1
|
||||||
|
|
||||||
|
parted -s ${DISK_IMG_FILE} mklabel msdos
|
||||||
|
|
||||||
|
if [ ${DISK_IMG_PARTITION1_SIZE} -ne 0 ]; then
|
||||||
|
|
||||||
|
# Reduce the first block size of one sector to make space
|
||||||
|
# for the partition table
|
||||||
|
realsize=$(expr ${DISK_IMG_PARTITION1_SIZE} \* 1024 \* 1024 \
|
||||||
|
- ${DISK_IMG_SECTOR_SIZE})
|
||||||
|
|
||||||
|
# Create the partition
|
||||||
|
disk_img_createpart ${WORKDIR}/part1.img $currpos $realsize \
|
||||||
|
"${DISK_IMG_PARTITION1_FSTYPE}" "${DISK_IMG_PARTITION1_CONTENT}"
|
||||||
|
|
||||||
|
currpos=$(expr $currpos + $realsize)
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ${DISK_IMG_PARTITION2_SIZE} -ne 0 ]; then
|
||||||
|
# Partition size
|
||||||
|
realsize=$(expr ${DISK_IMG_PARTITION2_SIZE} \* 1024 \* 1024)
|
||||||
|
|
||||||
|
# Create the partition
|
||||||
|
disk_img_createpart ${WORKDIR}/part2.img $currpos $realsize \
|
||||||
|
"${DISK_IMG_PARTITION2_FSTYPE}" "${DISK_IMG_PARTITION2_CONTENT}"
|
||||||
|
|
||||||
|
currpos=$(expr $currpos + $realsize)
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ${DISK_IMG_PARTITION3_SIZE} -ne 0 ]; then
|
||||||
|
# Partition size
|
||||||
|
realsize=$(expr ${DISK_IMG_PARTITION3_SIZE} \* 1024 \* 1024)
|
||||||
|
|
||||||
|
# Create the partition
|
||||||
|
disk_img_createpart ${WORKDIR}/part3.img $currpos $realsize \
|
||||||
|
"${DISK_IMG_PARTITION3_FSTYPE}" "${DISK_IMG_PARTITION3_CONTENT}"
|
||||||
|
|
||||||
|
currpos=$(expr $currpos + $realsize)
|
||||||
|
|
||||||
|
fi
|
||||||
|
if [ ${DISK_IMG_PARTITION4_SIZE} -ne 0 ]; then
|
||||||
|
# Partition size
|
||||||
|
realsize=$(expr ${DISK_IMG_PARTITION4_SIZE} \* 1024 \* 1024)
|
||||||
|
|
||||||
|
# Create the partition
|
||||||
|
disk_img_createpart ${WORKDIR}/part4.img $currpos $realsize \
|
||||||
|
"${DISK_IMG_PARTITION4_FSTYPE}" "${DISK_IMG_PARTITION4_CONTENT}"
|
||||||
|
|
||||||
|
currpos=$(expr $currpos + $realsize)
|
||||||
|
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
IMAGE_CMD_disk.img = "disk_img_create"
|
||||||
|
IMAGE_TYPES += "disk.img"
|
||||||
|
|
||||||
@@ -11,3 +11,8 @@ BBFILE_PRIORITY_meta-arm-bsp = "6"
|
|||||||
|
|
||||||
LAYERDEPENDS_meta-arm-bsp = "core"
|
LAYERDEPENDS_meta-arm-bsp = "core"
|
||||||
LAYERSERIES_COMPAT_meta-arm-bsp = "warrior zeus"
|
LAYERSERIES_COMPAT_meta-arm-bsp = "warrior zeus"
|
||||||
|
|
||||||
|
# We have patches for xen but meta-virtualization might not be there so filter
|
||||||
|
# out recipes-extended/xen unless xen is activated in the features
|
||||||
|
BBMASK += " ${@bb.utils.contains('DISTRO_FEATURES', 'xen', '', \
|
||||||
|
'${LAYERDIR}/recipes-extended/xen/', d)}"
|
||||||
|
|||||||
@@ -0,0 +1,10 @@
|
|||||||
|
# Configuration for Armv8-A Foundation
|
||||||
|
|
||||||
|
#@TYPE: Machine
|
||||||
|
#@NAME: Armv8-A Foundation Platform machine
|
||||||
|
#@DESCRIPTION: Machine configuration for Armv8-A Foundation Platform model
|
||||||
|
|
||||||
|
require conf/machine/fvp-common/fvp.inc
|
||||||
|
|
||||||
|
KERNEL_DEVICETREE = "arm/foundation-v8-gicv3-psci.dtb"
|
||||||
|
EXTRA_IMAGEDEPENDS += "foundation-armv8-native"
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
# FVP common parameters
|
||||||
|
|
||||||
|
#
|
||||||
|
# Capturing FVP common configurations (Armv8-A Base Platform FVP and
|
||||||
|
# Armv8-A Foundation Platform).
|
||||||
|
#
|
||||||
|
|
||||||
|
TUNE_FEATURES = "aarch64"
|
||||||
|
|
||||||
|
require conf/machine/include/arm/arch-armv8a.inc
|
||||||
|
|
||||||
|
MACHINE_FEATURES = "optee"
|
||||||
|
|
||||||
|
KERNEL_IMAGETYPE = "Image"
|
||||||
|
|
||||||
|
IMAGE_CLASSES += "image_types_disk_img"
|
||||||
|
IMAGE_FSTYPES += "disk.img"
|
||||||
|
|
||||||
|
# Disk image configuration
|
||||||
|
# We don't use the first partition
|
||||||
|
DISK_IMG_PARTITION1_SIZE = "128"
|
||||||
|
DISK_IMG_PARTITION1_FSTYPE = ""
|
||||||
|
DISK_IMG_PARTITION1_CONTENT = ""
|
||||||
|
|
||||||
|
# Second partition is used for rootfs
|
||||||
|
DISK_IMG_PARTITION2_SIZE = "2048"
|
||||||
|
DISK_IMG_PARTITION2_FSTYPE = "ext4"
|
||||||
|
DISK_IMG_PARTITION2_CONTENT = "rootfs"
|
||||||
|
|
||||||
|
SERIAL_CONSOLES = "115200;ttyAMA0"
|
||||||
|
|
||||||
|
PREFERRED_PROVIDER_virtual/kernel = "linux-yocto"
|
||||||
|
PREFERRED_VERSION_linux-yocto ?= "4.19%"
|
||||||
|
|
||||||
|
EXTRA_IMAGEDEPENDS += "virtual/trusted-firmware-a u-boot"
|
||||||
|
|
||||||
|
# FVP u-boot configuration
|
||||||
|
UBOOT_MACHINE = "vexpress_aemv8a_dram_defconfig"
|
||||||
|
|
||||||
|
# Xen configuration
|
||||||
|
XEN_CONFIG_EARLY_PRINTK = "fastmodel"
|
||||||
|
|
||||||
|
# parameters for xen dtb generation in meta-auto
|
||||||
|
XEN_DOM0_BOOTARGS_append = " root=/dev/vda2"
|
||||||
|
XEN_XEN_BOOTARGS_append = " console=dtuart dtuart=serial0 bootscrub=0"
|
||||||
|
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
# Armv8-A Base Platform Support in meta-arm-platforms
|
||||||
|
|
||||||
|
## Howto Build and Run
|
||||||
|
|
||||||
|
### Configuration:
|
||||||
|
In the local.conf file, MACHINE should be set as follow:
|
||||||
|
MACHINE ?= "foundation-v8"
|
||||||
|
|
||||||
|
### Build:
|
||||||
|
```bash$ bitbake core-image-minimal```
|
||||||
|
|
||||||
|
### Run:
|
||||||
|
The layer provides a recipe to install the Armv8-A Foundation Platform in your
|
||||||
|
environment. You must download Armv8-A Foundation Platform from Arm developer
|
||||||
|
(This might require the user to register) from this address:
|
||||||
|
https://developer.arm.com/tools-and-software/simulation-models/fixed-virtual-platforms
|
||||||
|
and put the downloaded tar file in 'downloads/licensed/silver.arm.com/'
|
||||||
|
directory of your project (or of your Pre-Mirror if you have one).
|
||||||
|
|
||||||
|
Once done, do the following to build and run an image:
|
||||||
|
```bash$ bitbake core-image-minimal```
|
||||||
|
```bash$ ./tmp/deploy/tools/start-foundation-armv8.sh```
|
||||||
|
|
||||||
|
If you have built a configuration without a ramdisk, you can use the following
|
||||||
|
command in U-boot to start Linux:
|
||||||
|
```VExpress64# booti 0x80080000 - 0x83000000```
|
||||||
|
|
||||||
|
## Devices supported in the kernel
|
||||||
|
- serial
|
||||||
|
- virtio disk
|
||||||
|
- network
|
||||||
|
- watchdog
|
||||||
|
- rtc
|
||||||
|
|
||||||
|
## Devices not supported or not functional
|
||||||
|
None
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
# FVP specific TFA parameters
|
||||||
|
|
||||||
|
#
|
||||||
|
# Armv8-A Base Platform FVP and Armv8-A Foundation Platform uses the same
|
||||||
|
# TFAs.
|
||||||
|
#
|
||||||
|
|
||||||
|
COMPATIBLE_MACHINE = "fvp-base|foundation-armv8"
|
||||||
|
TFA_PLATFORM = "fvp"
|
||||||
|
TFA_DEBUG = "1"
|
||||||
|
TFA_MBEDTLS = "1"
|
||||||
|
TFA_UBOOT = "1"
|
||||||
|
TFA_BUILD_TARGET = "bl1 bl2 bl31 dtbs fiptool"
|
||||||
|
|
||||||
|
do_deploy[depends] += "virtual/kernel:do_deploy"
|
||||||
|
|
||||||
|
do_deploy_append() {
|
||||||
|
./tools/fiptool/fiptool create \
|
||||||
|
--tb-fw ${S}/${TFA_BUILD_DIR}/bl2.bin \
|
||||||
|
--soc-fw ${S}/${TFA_BUILD_DIR}/bl31.bin \
|
||||||
|
--tb-fw-config ${S}/${TFA_BUILD_DIR}/fdts/fvp_tb_fw_config.dtb \
|
||||||
|
--soc-fw-config ${S}/${TFA_BUILD_DIR}/fdts/fvp_soc_fw_config.dtb \
|
||||||
|
--hw-config ${DEPLOY_DIR_IMAGE}/$(basename ${KERNEL_DEVICETREE}) \
|
||||||
|
--nt-fw ${DEPLOY_DIR_IMAGE}/u-boot.bin \
|
||||||
|
fip.bin
|
||||||
|
|
||||||
|
./tools/fiptool/fiptool info fip.bin
|
||||||
|
|
||||||
|
install -m 0644 ${S}/fip.bin ${DEPLOYDIR}/fip-fvp.bin
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
# Machine specific TFAs
|
||||||
|
|
||||||
|
MACHINE_TFA_REQUIRE ?= ""
|
||||||
|
|
||||||
|
MACHINE_TFA_REQUIRE_foundation-armv8 = "trusted-firmware-a-fvp.inc"
|
||||||
|
|
||||||
|
require ${MACHINE_TFA_REQUIRE}
|
||||||
@@ -0,0 +1,238 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# Script to start a build image using FVP Foundation Platform
|
||||||
|
#
|
||||||
|
set -u
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Get parameters from bitbake configuration
|
||||||
|
source <(bitbake -e foundation-armv8-native | grep \
|
||||||
|
-e "^STAGING_.*_NATIVE=" \
|
||||||
|
-e "^DEPLOY_DIR.*=")
|
||||||
|
|
||||||
|
|
||||||
|
# Bitbake image to run
|
||||||
|
IMAGE_NAME="$(cd $DEPLOY_DIR_IMAGE; ls *-foundation-armv8.manifest | \
|
||||||
|
sed -e "s/-foundation-armv8\.manifest//")"
|
||||||
|
|
||||||
|
# BL1 and FIP files
|
||||||
|
BL1_FILE="bl1-fvp.bin"
|
||||||
|
BL1_ADDR="0x0"
|
||||||
|
FIP_FILE="fip-fvp.bin"
|
||||||
|
FIP_ADDR="0x8000000"
|
||||||
|
|
||||||
|
# Linux kernel file in deploy_dir and load address
|
||||||
|
KERNEL_FILE="Image"
|
||||||
|
KERNEL_ADDR="0x80080000"
|
||||||
|
|
||||||
|
# DTB file in deploy_dir and load address
|
||||||
|
DTB_FILE="foundation-v8-gicv3-psci.dtb"
|
||||||
|
DTB_ADDR="0x83000000"
|
||||||
|
|
||||||
|
# Xen file in deploy_dir and load address
|
||||||
|
XEN_FILE="xen-foundation-armv8"
|
||||||
|
XEN_ADDR="0x84000000"
|
||||||
|
|
||||||
|
# Disk file in deploy_dir
|
||||||
|
DISK_FILE=""
|
||||||
|
|
||||||
|
# Foundation Platform Executable (Extracted from
|
||||||
|
# FM000-KT-00035-r11p8-61rel0.tgz from silver.arm.com)
|
||||||
|
FOUNDATION_PLAT_EXE="Foundation_Platform"
|
||||||
|
|
||||||
|
# Foundation Platform arguments
|
||||||
|
FOUNDATION_PLAT_ARGS=" \
|
||||||
|
--cores=4 \
|
||||||
|
--secure-memory \
|
||||||
|
--use-real-time \
|
||||||
|
--gicv3"
|
||||||
|
|
||||||
|
# Foundation Platform user arguments
|
||||||
|
EXTRA_ARGS=""
|
||||||
|
|
||||||
|
# Help function
|
||||||
|
usage() {
|
||||||
|
cat <<EOF
|
||||||
|
Usage $0 [OPTION] [IMAGE_NAME] [FOUNDATION_PLATFORM_ARGS]
|
||||||
|
Start a generated Yocto Image using Armv8-A Foundation Platform.
|
||||||
|
This script will execute Foundation_Platform from the PATH.
|
||||||
|
|
||||||
|
IMAGE_NAME should be the name of the image to start, this is what you did
|
||||||
|
build with bitbake, default is 'core-image-minimal' if none is auto-detected.
|
||||||
|
All extra arguments are passed to Foundation Platform after the IMAGE_NAME.
|
||||||
|
|
||||||
|
OPTIONs:
|
||||||
|
-h, --help displays this help message
|
||||||
|
--deploy=[DIR] use DIR as deploy directory, default is:
|
||||||
|
$DEPLOY_DIR_IMAGE
|
||||||
|
--no-bl1 Don't load a BL1
|
||||||
|
--bl1=[NAME] File name in DEPLOY_DIR_IMAGE to be used for BL1,
|
||||||
|
default is $BL1_FILE.
|
||||||
|
This adds the following argument to the
|
||||||
|
Foundation Platform:
|
||||||
|
--data=$DEPLOY_DIR_IMAGE/NAME@$BL1_ADDR
|
||||||
|
--no-fip Don't load a FIP
|
||||||
|
--fip=[NAME] File name in DEPLOY_DIR_IMAGE to be used for FIP,
|
||||||
|
default is $FIP_FILE.
|
||||||
|
This adds the following argument to the
|
||||||
|
Foundation Platform:
|
||||||
|
--data=$DEPLOY_DIR_IMAGE/NAME@$FIP_ADDR
|
||||||
|
--linux=[NAME] File name in DEPLOY_DIR_IMAGE to be used
|
||||||
|
as Linux kernel
|
||||||
|
default is $KERNEL_FILE
|
||||||
|
--linux-addr=[ADDR] Address at which Linux kernel should be loaded
|
||||||
|
default is $KERNEL_ADDR
|
||||||
|
--dtb=[NAME] File name in DEPLOY_DIR_IMAGE to be used as DTB
|
||||||
|
default is $DTB_FILE
|
||||||
|
--dtb-addr=[ADDR] Address at which DTB should be loaded
|
||||||
|
default is $DTB_ADDR
|
||||||
|
--xen=[NAME] File name in DEPLOY_DIR_IMAGE to be used as Xen
|
||||||
|
It is only loaded if the file actually exists.
|
||||||
|
default is $XEN_FILE
|
||||||
|
--xen-addr=[ADDR] Address at which Xen should be loaded
|
||||||
|
default is $XEN_ADDR
|
||||||
|
--disk=[NAME] File name in DEPLOY_DIR_IMAGE to be used as disk.
|
||||||
|
It is only loaded if the file actually exists.
|
||||||
|
default is IMAGE_NAME-foundation-armv8.disk.img
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|
||||||
|
# Process command line arguments
|
||||||
|
for arg in "$@"; do
|
||||||
|
case $arg in
|
||||||
|
--*=*)
|
||||||
|
optarg=$(echo $arg | sed -e "s/.*=//")
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
optarg=""
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case $arg in
|
||||||
|
-h|-?|--help)
|
||||||
|
usage
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
--deploy=*)
|
||||||
|
if [ ! -f $optarg/Image ]
|
||||||
|
then
|
||||||
|
echo "Invalid argument" >&2
|
||||||
|
echo "$optarg is not a valid deploy directory" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
DEPLOY_DIR_IMAGE=$optarg
|
||||||
|
;;
|
||||||
|
--no-bl1)
|
||||||
|
BL1_FILE=""
|
||||||
|
;;
|
||||||
|
--bl1=*)
|
||||||
|
BL1_FILE="$optarg"
|
||||||
|
;;
|
||||||
|
--no-fip)
|
||||||
|
FIP_FILE=""
|
||||||
|
;;
|
||||||
|
--fip=*)
|
||||||
|
FIP_FILE="$optarg"
|
||||||
|
;;
|
||||||
|
--linux=*)
|
||||||
|
LINUX_FILE="$optarg"
|
||||||
|
;;
|
||||||
|
--linux-addr=*)
|
||||||
|
LINUX_ADDR="$optarg"
|
||||||
|
;;
|
||||||
|
--dtb=*)
|
||||||
|
DTB_FILE="$optarg"
|
||||||
|
;;
|
||||||
|
--dtb-addr=*)
|
||||||
|
DTB_ADDR="$optarg"
|
||||||
|
;;
|
||||||
|
--xen=*)
|
||||||
|
XEN_FILE="$optarg"
|
||||||
|
;;
|
||||||
|
--xen-addr=*)
|
||||||
|
XEN_ADDR="$optarg"
|
||||||
|
;;
|
||||||
|
--disk=*)
|
||||||
|
DISK_FILE="$optarg"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
if [ -z "$IMAGE_NAME" ]
|
||||||
|
then
|
||||||
|
IMAGE_NAME="$arg"
|
||||||
|
else
|
||||||
|
EXTRA_ARGS="$EXTRA_ARGS $arg"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ -z "${BUILDDIR:-}" ]; then
|
||||||
|
echo "We are not in a Yocto build project." >&2
|
||||||
|
echo "Please source oe-init-build-env first." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "${IMAGE_NAME:-}" ]; then
|
||||||
|
IMAGE_NAME="core-image-minimal"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "${DISK_FILE:-}" ]; then
|
||||||
|
DISK_FILE="${IMAGE_NAME}-foundation-armv8.disk.img"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Add bl1 arg
|
||||||
|
if [ -n "$BL1_FILE" ]; then
|
||||||
|
if [ ! -f $DEPLOY_DIR_IMAGE/$BL1_FILE ]; then
|
||||||
|
echo "Could not find bl1 ($BL1_FILE) in $DEPLOY_DIR_IMAGE" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
FOUNDATION_PLAT_ARGS="$FOUNDATION_PLAT_ARGS \
|
||||||
|
--data=$DEPLOY_DIR_IMAGE/$BL1_FILE@$BL1_ADDR"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Add fip arg
|
||||||
|
if [ -n "$FIP_FILE" ]; then
|
||||||
|
if [ ! -f $DEPLOY_DIR_IMAGE/$FIP_FILE ]; then
|
||||||
|
echo "Could not find fip ($FIP_FILE) in $DEPLOY_DIR_IMAGE" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
FOUNDATION_PLAT_ARGS="$FOUNDATION_PLAT_ARGS \
|
||||||
|
--data=$DEPLOY_DIR_IMAGE/$FIP_FILE@$FIP_ADDR"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Add Linux kernel
|
||||||
|
if [ -n "$KERNEL_FILE" ]; then
|
||||||
|
if [ ! -f $DEPLOY_DIR_IMAGE/$KERNEL_FILE ]; then
|
||||||
|
echo "Could not find Linux kernel ($KERNEL_FILE) in \
|
||||||
|
$DEPLOY_DIR_IMAGE" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
FOUNDATION_PLAT_ARGS="$FOUNDATION_PLAT_ARGS \
|
||||||
|
--data=$DEPLOY_DIR_IMAGE/$KERNEL_FILE@$KERNEL_ADDR"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Add DTB
|
||||||
|
if [ -n "$DTB_FILE" ]; then
|
||||||
|
if [ ! -f $DEPLOY_DIR_IMAGE/$DTB_FILE ]; then
|
||||||
|
echo "Could not find the DTB ($DTB_FILE) in $DEPLOY_DIR_IMAGE" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
FOUNDATION_PLAT_ARGS="$FOUNDATION_PLAT_ARGS \
|
||||||
|
--data=$DEPLOY_DIR_IMAGE/$DTB_FILE@$DTB_ADDR"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Add xen if present
|
||||||
|
if [ -n "$XEN_FILE" -a -f $DEPLOY_DIR_IMAGE/$XEN_FILE ]; then
|
||||||
|
FOUNDATION_PLAT_ARGS="$FOUNDATION_PLAT_ARGS \
|
||||||
|
--data=$DEPLOY_DIR_IMAGE/$XEN_FILE@$XEN_ADDR"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Add disk if present
|
||||||
|
if [ -n "$DISK_FILE" -a -f $DEPLOY_DIR_IMAGE/$DISK_FILE ]; then
|
||||||
|
FOUNDATION_PLAT_ARGS="$FOUNDATION_PLAT_ARGS \
|
||||||
|
--block-device=$DEPLOY_DIR_IMAGE/$DISK_FILE"
|
||||||
|
fi
|
||||||
|
|
||||||
|
FOUNDATION_PLAT_EXE="${STAGING_BINDIR_NATIVE}/${FOUNDATION_PLAT_EXE}"
|
||||||
|
|
||||||
|
echo "$FOUNDATION_PLAT_EXE $FOUNDATION_PLAT_ARGS $EXTRA_ARGS"
|
||||||
|
$FOUNDATION_PLAT_EXE $FOUNDATION_PLAT_ARGS $EXTRA_ARGS
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
# Armv8-A Foundation Platform build recipe
|
||||||
|
|
||||||
|
#
|
||||||
|
# Download and install recipe specific for Armv8-A Foundation Platform build are
|
||||||
|
# captured in the file.
|
||||||
|
#
|
||||||
|
|
||||||
|
# The tar file required to build this package must be downloaded from
|
||||||
|
# https://developer.arm.com/tools-and-software/simulation-models/fixed-virtual-platforms
|
||||||
|
# and put in the sub-directory 'licensed/silver.arm.com' of one of the
|
||||||
|
# following locations:
|
||||||
|
# - in the directory 'files' of this file directory
|
||||||
|
# - in your Yocto project download directory (DL_DIR parameter of local.conf)
|
||||||
|
# - in your Download mirror if you have one
|
||||||
|
SRC_URI = "file://licensed/silver.arm.com/FM000-KT-00035-${PV}.tgz"
|
||||||
|
SRC_URI += "file://start-foundation-armv8.sh"
|
||||||
|
|
||||||
|
S = "${WORKDIR}/Foundation_Platformpkg"
|
||||||
|
|
||||||
|
# Checksums to compare against downloaded package files' checksums
|
||||||
|
LIC_FILES_CHKSUM = " \
|
||||||
|
file://license_terms/license_agreement.txt;md5=ae7b47c67a033995c6b4510476a50f03 \
|
||||||
|
file://license_terms/redistributables.txt;md5=f9fafcaf37ce6c9427568b9dbdbaabe5 \
|
||||||
|
file://license_terms/supplementary_terms.txt;md5=26e4b214f639a22c8e7e207abc10eccb \
|
||||||
|
file://license_terms/third_party_licenses.txt;md5=6394c171d6657fc195573c4d239341c4 \
|
||||||
|
"
|
||||||
|
|
||||||
|
require fvp-native.inc
|
||||||
|
|
||||||
|
do_install_append() {
|
||||||
|
cp -a --no-preserve=ownership -rf doc license_terms models plugins \
|
||||||
|
${D}/${datadir}/fvp/.
|
||||||
|
|
||||||
|
cat <<EOF > ${D}${bindir}/Foundation_Platform
|
||||||
|
#!/bin/bash
|
||||||
|
basedir=\$(cd \$(dirname \$0)/../../; pwd)
|
||||||
|
export LD_LIBRARY_PATH="\$basedir/lib:\$basedir/usr/lib"
|
||||||
|
\$basedir/usr/share/fvp/models/Linux64_GCC-6.4/Foundation_Platform "\$@"
|
||||||
|
EOF
|
||||||
|
chmod 755 ${D}${bindir}/Foundation_Platform
|
||||||
|
}
|
||||||
|
|
||||||
|
do_deploy_append() {
|
||||||
|
install -m 755 ${WORKDIR}/start-foundation-armv8.sh ${DEPLOYDIR}/.
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
# Fixed Virtual Platform (FVP) executable installation recipe
|
||||||
|
|
||||||
|
#
|
||||||
|
# Package specific information like checksums and source information captured
|
||||||
|
# in specific bb files.
|
||||||
|
#
|
||||||
|
|
||||||
|
SUMMARY = "Arm Fixed Virtual Platform"
|
||||||
|
HOMEPAGE = "https://developer.arm.com/tools-and-software/simulation-models/fixed-virtual-platforms"
|
||||||
|
LICENSE = "Proprietary & GPL & Apache"
|
||||||
|
|
||||||
|
|
||||||
|
inherit native deploy
|
||||||
|
|
||||||
|
do_configure[noexec] = "1"
|
||||||
|
do_compile[noexec] = "1"
|
||||||
|
|
||||||
|
do_install() {
|
||||||
|
install -d ${D}/${datadir}/fvp
|
||||||
|
install -d ${D}${bindir}
|
||||||
|
}
|
||||||
|
FILES_${PN} = "${datadir}/fvp/* ${bindir}/*"
|
||||||
|
INSANE_SKIP_${PN}_append = "already-stripped"
|
||||||
|
|
||||||
|
# This is required so that our binaries are in the sysroot. We need this
|
||||||
|
# to have both fvp required libraries and fvp in the same sysroot.
|
||||||
|
addtask addto_recipe_sysroot after do_populate_sysroot before do_build
|
||||||
|
|
||||||
|
do_deploy[sstate-outputdirs] = "${DEPLOY_DIR_TOOLS}"
|
||||||
|
do_deploy() {
|
||||||
|
install -d ${DEPLOYDIR}
|
||||||
|
}
|
||||||
|
addtask deploy before do_build after do_compile
|
||||||
|
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
From 0dcd945a675cd12d283121e9b7f1626104b60bcc Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jan Beulich <jbeulich@suse.com>
|
||||||
|
Date: Tue, 4 Jun 2019 15:32:55 +0200
|
||||||
|
Subject: [PATCH] trace: fix build with gcc9
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
While I've not observed this myself, gcc 9 (imo validly) reportedly may
|
||||||
|
complain
|
||||||
|
|
||||||
|
trace.c: In function '__trace_hypercall':
|
||||||
|
trace.c:826:19: error: taking address of packed member of 'struct <anonymous>' may result in an unaligned pointer value [-Werror=address-of-packed-member]
|
||||||
|
826 | uint32_t *a = d.args;
|
||||||
|
|
||||||
|
and the fix is rather simple - remove the __packed attribute. Introduce
|
||||||
|
a BUILD_BUG_ON() as replacement, for the unlikely case that Xen might
|
||||||
|
get ported to an architecture where array alignment higher that that of
|
||||||
|
its elements.
|
||||||
|
|
||||||
|
Reported-by: Martin Liška <martin.liska@suse.com>
|
||||||
|
Signed-off-by: Jan Beulich <jbeulich@suse.com>
|
||||||
|
Acked-by: George Dunlap <george.dunlap@citrix.com>
|
||||||
|
master commit: 3fd3b266d4198c06e8e421ca515d9ba09ccd5155
|
||||||
|
master date: 2019-05-13 09:51:23 +0200
|
||||||
|
---
|
||||||
|
xen/common/trace.c | 8 +++++++-
|
||||||
|
1 file changed, 7 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/xen/common/trace.c b/xen/common/trace.c
|
||||||
|
index cc294fc384..d1ef81407b 100644
|
||||||
|
--- a/xen/common/trace.c
|
||||||
|
+++ b/xen/common/trace.c
|
||||||
|
@@ -819,12 +819,18 @@ unlock:
|
||||||
|
void __trace_hypercall(uint32_t event, unsigned long op,
|
||||||
|
const xen_ulong_t *args)
|
||||||
|
{
|
||||||
|
- struct __packed {
|
||||||
|
+ struct {
|
||||||
|
uint32_t op;
|
||||||
|
uint32_t args[6];
|
||||||
|
} d;
|
||||||
|
uint32_t *a = d.args;
|
||||||
|
|
||||||
|
+ /*
|
||||||
|
+ * In lieu of using __packed above, which gcc9 legitimately doesn't
|
||||||
|
+ * like in combination with the address of d.args[] taken.
|
||||||
|
+ */
|
||||||
|
+ BUILD_BUG_ON(offsetof(typeof(d), args) != sizeof(d.op));
|
||||||
|
+
|
||||||
|
#define APPEND_ARG32(i) \
|
||||||
|
do { \
|
||||||
|
unsigned i_ = (i); \
|
||||||
|
--
|
||||||
|
2.17.1
|
||||||
|
|
||||||
@@ -0,0 +1,73 @@
|
|||||||
|
#
|
||||||
|
# Automatically generated file; DO NOT EDIT.
|
||||||
|
# Xen/arm 4.12.0 Configuration
|
||||||
|
#
|
||||||
|
CONFIG_64BIT=y
|
||||||
|
CONFIG_ARM_64=y
|
||||||
|
CONFIG_ARM=y
|
||||||
|
CONFIG_ARCH_DEFCONFIG="arch/arm/configs/arm64_defconfig"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Architecture Features
|
||||||
|
#
|
||||||
|
CONFIG_NR_CPUS=128
|
||||||
|
CONFIG_GICV3=y
|
||||||
|
CONFIG_HVM=y
|
||||||
|
# CONFIG_NEW_VGIC is not set
|
||||||
|
CONFIG_SBSA_VUART_CONSOLE=y
|
||||||
|
CONFIG_ARM_SSBD=y
|
||||||
|
CONFIG_HARDEN_BRANCH_PREDICTOR=y
|
||||||
|
|
||||||
|
#
|
||||||
|
# ARM errata workaround via the alternative framework
|
||||||
|
#
|
||||||
|
CONFIG_ARM64_ERRATUM_827319=y
|
||||||
|
CONFIG_ARM64_ERRATUM_824069=y
|
||||||
|
CONFIG_ARM64_ERRATUM_819472=y
|
||||||
|
CONFIG_ARM64_ERRATUM_832075=y
|
||||||
|
CONFIG_ARM64_ERRATUM_834220=y
|
||||||
|
CONFIG_ARM64_HARDEN_BRANCH_PREDICTOR=y
|
||||||
|
CONFIG_ALL_PLAT=y
|
||||||
|
# CONFIG_QEMU is not set
|
||||||
|
# CONFIG_RCAR3 is not set
|
||||||
|
# CONFIG_MPSOC is not set
|
||||||
|
# CONFIG_NO_PLAT is not set
|
||||||
|
CONFIG_ALL64_PLAT=y
|
||||||
|
# CONFIG_ALL32_PLAT is not set
|
||||||
|
CONFIG_MPSOC_PLATFORM=y
|
||||||
|
|
||||||
|
#
|
||||||
|
# Common Features
|
||||||
|
#
|
||||||
|
CONFIG_HAS_ALTERNATIVE=y
|
||||||
|
CONFIG_HAS_DEVICE_TREE=y
|
||||||
|
CONFIG_MEM_ACCESS=y
|
||||||
|
CONFIG_HAS_PDX=y
|
||||||
|
# CONFIG_XSM is not set
|
||||||
|
CONFIG_SCHED_CREDIT=y
|
||||||
|
CONFIG_SCHED_CREDIT2=y
|
||||||
|
CONFIG_SCHED_RTDS=y
|
||||||
|
# CONFIG_SCHED_ARINC653 is not set
|
||||||
|
CONFIG_SCHED_NULL=y
|
||||||
|
CONFIG_SCHED_DEFAULT="credit2"
|
||||||
|
# CONFIG_LIVEPATCH is not set
|
||||||
|
CONFIG_SUPPRESS_DUPLICATE_SYMBOL_WARNINGS=y
|
||||||
|
CONFIG_CMDLINE=""
|
||||||
|
CONFIG_DOM0_MEM=""
|
||||||
|
|
||||||
|
#
|
||||||
|
# Device Drivers
|
||||||
|
#
|
||||||
|
CONFIG_HAS_NS16550=y
|
||||||
|
CONFIG_HAS_CADENCE_UART=y
|
||||||
|
CONFIG_HAS_MVEBU=y
|
||||||
|
CONFIG_HAS_PL011=y
|
||||||
|
CONFIG_HAS_SCIF=y
|
||||||
|
CONFIG_HAS_PASSTHROUGH=y
|
||||||
|
CONFIG_ARM_SMMU=y
|
||||||
|
CONFIG_DEFCONFIG_LIST="arch/arm/configs/arm64_defconfig"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Debugging Options
|
||||||
|
#
|
||||||
|
# CONFIG_DEBUG is not set
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
# xen settings
|
||||||
|
|
||||||
|
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Define early console based on board parameters
|
||||||
|
#
|
||||||
|
|
||||||
|
# This should be set in board.conf or local.conf to enable early printk in xen
|
||||||
|
XEN_CONFIG_EARLY_PRINTK ??= "disable"
|
||||||
|
|
||||||
|
EXTRA_OEMAKE += "${@bb.utils.contains('XEN_CONFIG_EARLY_PRINTK', 'disable', \
|
||||||
|
'', ' CONFIG_DEBUG=y CONFIG_EARLY_PRINTK=${XEN_CONFIG_EARLY_PRINTK}',d)}"
|
||||||
|
|
||||||
|
# Foundation-armv8 support
|
||||||
|
COMPATIBLE_MACHINE_foundation-armv8 = "foundation-armv8"
|
||||||
|
|
||||||
|
SRC_URI_append_foundation-armv8 = " file://fvp/defconfig"
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
# xen version specific patch information
|
||||||
|
|
||||||
|
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
|
||||||
|
|
||||||
|
# Solve trace.c compilation error on 4.12.0
|
||||||
|
# This should only be applied for 4.12.0 (solved in greater versions)
|
||||||
|
SRC_URI += "file://4.12.0/0001-trace-fix-build-with-gcc9.patch"
|
||||||
|
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
Arm platforms BSPs
|
||||||
|
==================
|
||||||
|
|
||||||
|
This directory contains Arm platforms definitions and configuration for Linux.
|
||||||
+11
@@ -0,0 +1,11 @@
|
|||||||
|
define KMACHINE fvp
|
||||||
|
define KTYPE standard
|
||||||
|
define KARCH arm64
|
||||||
|
|
||||||
|
include ktypes/standard/standard.scc
|
||||||
|
|
||||||
|
include fvp.scc
|
||||||
|
|
||||||
|
# default policy for standard kernels
|
||||||
|
#include features/latencytop/latencytop.scc
|
||||||
|
#include features/profiling/profiling.scc
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
include features/input/input.scc
|
||||||
|
include features/net/net.scc
|
||||||
|
include cfg/timer/no_hz.scc
|
||||||
|
|
||||||
|
kconf hardware fvp/fvp-board.cfg
|
||||||
|
kconf hardware fvp/fvp-net.cfg
|
||||||
|
kconf hardware fvp/fvp-rtc.cfg
|
||||||
|
kconf hardware fvp/fvp-serial.cfg
|
||||||
|
kconf hardware fvp/fvp-virtio.cfg
|
||||||
|
kconf hardware fvp/fvp-cfi.cfg
|
||||||
|
kconf hardware fvp/fvp-drm.cfg
|
||||||
|
kconf hardware fvp/fvp-timer.cfg
|
||||||
|
kconf hardware fvp/fvp-virtio.cfg
|
||||||
|
kconf hardware fvp/fvp-watchdog.cfg
|
||||||
+16
@@ -0,0 +1,16 @@
|
|||||||
|
CONFIG_ARM64=y
|
||||||
|
CONFIG_ARCH_VEXPRESS=y
|
||||||
|
CONFIG_SMP=y
|
||||||
|
CONFIG_NR_CPUS=8
|
||||||
|
CONFIG_HOTPLUG_CPU=y
|
||||||
|
|
||||||
|
CONFIG_REGULATOR=y
|
||||||
|
CONFIG_REGULATOR_FIXED_VOLTAGE=y
|
||||||
|
|
||||||
|
CONFIG_CPU_IDLE=y
|
||||||
|
CONFIG_ARM_CPUIDLE=y
|
||||||
|
|
||||||
|
# We need to turn off SVE support in the Linux kernel otherwise Xen is stopping
|
||||||
|
# Linux kernel with a coredump while trying to access ZEN bit of CPACR1 core
|
||||||
|
# register.
|
||||||
|
# CONFIG_ARM64_SVE is not set
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
# CFI Flash
|
||||||
|
CONFIG_MTD=y
|
||||||
|
CONFIG_MTD_CFI=y
|
||||||
+5
@@ -0,0 +1,5 @@
|
|||||||
|
# DRM CLCD
|
||||||
|
CONFIG_DRM=y
|
||||||
|
CONFIG_DRM_PL111=y
|
||||||
|
CONFIG_FB=y
|
||||||
|
CONFIG_FB_ARMCLCD=y
|
||||||
+2
@@ -0,0 +1,2 @@
|
|||||||
|
CONFIG_SMSC911X=y
|
||||||
|
CONFIG_SMC91X=y
|
||||||
+2
@@ -0,0 +1,2 @@
|
|||||||
|
CONFIG_RTC_CLASS=y
|
||||||
|
CONFIG_RTC_DRV_PL031=y
|
||||||
+2
@@ -0,0 +1,2 @@
|
|||||||
|
CONFIG_SERIAL_AMBA_PL011=y
|
||||||
|
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
# Dual timer module
|
||||||
|
CONFIG_ARM_TIMER_SP804=y
|
||||||
|
CONFIG_CLK_SP810=y
|
||||||
+4
@@ -0,0 +1,4 @@
|
|||||||
|
CONFIG_VIRTIO=y
|
||||||
|
CONFIG_VIRTIO_MMIO=y
|
||||||
|
CONFIG_BLOCK=y
|
||||||
|
CONFIG_VIRTIO_BLK=y
|
||||||
+3
@@ -0,0 +1,3 @@
|
|||||||
|
# Watchdog
|
||||||
|
CONFIG_WATCHDOG=y
|
||||||
|
CONFIG_ARM_SP805_WATCHDOG=y
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
# Kernel configuration and dts specific information
|
||||||
|
|
||||||
|
#
|
||||||
|
# Kernel configurations and dts (If not using Linux provided ones) are captured
|
||||||
|
# in this file. Update SRC_URI and do_patch for building images with custom dts
|
||||||
|
#
|
||||||
|
|
||||||
|
FILESEXTRAPATHS_prepend := "${THISDIR}:${THISDIR}/files:"
|
||||||
|
|
||||||
|
# Arm platforms kmeta
|
||||||
|
SRC_URI_append = " file://arm-platforms-kmeta;type=kmeta;name=arm-platforms-kmeta;destsuffix=arm-platforms-kmeta"
|
||||||
|
|
||||||
|
#
|
||||||
|
# FVP FOUNDATION KMACHINE
|
||||||
|
#
|
||||||
|
COMPATIBLE_MACHINE_foundation-armv8 = "foundation-armv8"
|
||||||
|
KMACHINE_foundation-armv8 = "fvp"
|
||||||
|
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
# Add support for Arm Platforms (boards or simulators)
|
||||||
|
|
||||||
|
require linux-yocto-arm-platforms.inc
|
||||||
Reference in New Issue
Block a user