The fvp-baser-aemv8r64 Yocto MACHINE supports the following BSP components on the Yocto hardknott release branch, where a standard Linux kernel can be built and run (instructions below):
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/3.3.1/singleindex.html#required-packages-for-the-build-host
Install the kas setup tool for bitbake based projects:
$ pip3 install --user kas
For more details on kas, see https://kas.readthedocs.io/
Note: The host machine should have at least 50 GBytes of free disk space for the next steps to work correctly.
Fetch sources
Fetch the meta-arm repository into a build directory:
$ mkdir -p ~/fvp-baser-aemv8r64-build$ cd ~/fvp-baser-aemv8r64-build$ git clone –-branch hardknott https://git.yoctoproject.org/git/meta-arm
Build
Building with the standard Linux kernel:
$ cd ~/fvp-baser-aemv8r64-build$ kas build meta-arm/kas/fvp-baser-aemv8r64-bsp.yml
Networking
To enable networking on the FVP via a host network interface, you will need to install the following package(s):
Ubuntu 18.04:
$ sudo apt-get install libvirt-bin
Ubuntu 20.04:
$ sudo apt-get install libvirt-dev libvirt-daemon qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils
Once that is installed for your OS version, setup tap0 using the following commands:
$ sudo virsh net-start default$ sudo ip tuntap add dev tap0 mode tap user $(whoami)$ sudo ifconfig tap0 0.0.0.0 promisc up$ sudo brctl addif virbr0 tap0
To clean up the tap0 interface on the host use the following commands:
$ sudo brctl delif virbr0 tap0$ sudo ip link set virbr0 down$ sudo brctl delbr virbr0$ sudo virsh net-destroy default$ sudo ip link delete tap0
Run
To Run the Fixed Virtual Platform simulation tool you must download "Armv8-R AEM FVP" 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/arm-ecosystem-models
and install it on your host PC.
To run an image after the build is done:
$ export YOCTO_DEPLOY_IMGS_DIR="~/fvp-baser-aemv8r64-bsp/build/tmp/deploy/images/fvp-baser-aemv8r64/"$ cd <path-to-AEMv8R_base_pkg>/models/Linux64_GCC-6.4/$ ./FVP_BaseR_AEMv8R \ -C bp.dram_metadata.init_value=0 \ -C bp.dram_metadata.is_enabled=true \ -C bp.dram_size=8 \ -C bp.exclusive_monitor.monitor_access_level=1 \ -C bp.pl011_uart0.unbuffered_output=1 \ -C bp.pl011_uart0.untimed_fifos=true \ -C bp.refcounter.non_arch_start_at_default=1 \ -C bp.smsc_91c111.enabled=0 \ -C bp.ve_sysregs.mmbSiteDefault=0 \ -C cache_state_modelled=true \ -C cluster0.gicv3.cpuintf-mmap-access-level=2 \ -C cluster0.gicv3.SRE-enable-action-on-mmap=2 \ -C cluster0.gicv3.SRE-EL2-enable-RAO=1 \ -C cluster0.gicv3.extended-interrupt-range-support=1 \ -C cluster0.has_aarch64=1 \ -C cluster0.NUM_CORES=4 \ -C cluster0.stage12_tlb_size=512 \ -C gic_distributor.GICD_CTLR-DS-1-means-secure-only=1 \ -C gic_distributor.GITS_BASER0-type=1 \ -C gic_distributor.ITS-count=1 \ -C gic_distributor.ITS-hardware-collection-count=1 \ -C gic_distributor.has-two-security-states=0 \ -C pctl.startup=0.0.0.* \ -C bp.virtio_net.enabled=1 \ -C cache_state_modelled=0 \ -C bp.vis.rate_limit-enable=0 \ -C bp.virtio_net.hostbridge.interfaceName=tap0 \ -a cluster0*=${YOCTO_DEPLOY_IMGS_DIR}/linux-system.axf \ -C bp.virtioblockdevice.image_path=${YOCTO_DEPLOY_IMGS_DIR}/core-image-minimal-fvp-baser-aemv8r64.wic
Note: The terminal console login is `root` without password.
Devices supported in the kernel
Devices not supported or not functional