meta-arm.lists.yoctoproject.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/2] arm-bsp/fvp-baser-aemv8r64: Use master as kas default refspec
@ 2021-07-28  7:58 Hugo L'Hostis
  2021-07-28  7:58 ` [PATCH 2/2] arm-bsp/fvp-baser-aemv8r64: Add support for runfvp Hugo L'Hostis
  0 siblings, 1 reply; 2+ messages in thread
From: Hugo L'Hostis @ 2021-07-28  7:58 UTC (permalink / raw)
  To: meta-arm; +Cc: nd

the default refspec for the repos used by kas is now master.

Issue-Id: SCM-2953
Signed-off-by: Hugo L'Hostis <hugo.lhostis@arm.com>
Change-Id: I9a68ca36f107e0b72c97b7a402829fec850d8acc
---
 kas/fvp-baser-aemv8r64-bsp.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kas/fvp-baser-aemv8r64-bsp.yml b/kas/fvp-baser-aemv8r64-bsp.yml
index b08e1a9..bb1e473 100644
--- a/kas/fvp-baser-aemv8r64-bsp.yml
+++ b/kas/fvp-baser-aemv8r64-bsp.yml
@@ -6,7 +6,7 @@ machine: fvp-baser-aemv8r64
 
 defaults:
   repos:
-    refspec: hardknott
+    refspec: master
 
 repos:
   meta-arm:
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* [PATCH 2/2] arm-bsp/fvp-baser-aemv8r64: Add support for runfvp
  2021-07-28  7:58 [PATCH 1/2] arm-bsp/fvp-baser-aemv8r64: Use master as kas default refspec Hugo L'Hostis
@ 2021-07-28  7:58 ` Hugo L'Hostis
  0 siblings, 0 replies; 2+ messages in thread
From: Hugo L'Hostis @ 2021-07-28  7:58 UTC (permalink / raw)
  To: meta-arm; +Cc: nd

This patch adds support for runfvp to fvp-base-r:
- Add necessary parameter to the fvp-baser-aemv8r64.conf
- Add fvp-base-r-aem bb file
- Add kas support

Issue-Id: SCM-2953
Signed-off-by: Hugo L'Hostis <hugo.lhostis@arm.com>
Change-Id: I252b445297f2d61a90e3cd8f0ec1816890cf733b
---
 kas/fvp-baser-aemv8r64-bsp.yml                |  6 ++
 .../conf/machine/fvp-baser-aemv8r64.conf      | 33 +++++++
 .../documentation/fvp-baser-aemv8r64.md       | 87 ++++++++++---------
 .../recipes-devtools/fvp/fvp-base-r-aem.bb    | 27 ++++++
 4 files changed, 113 insertions(+), 40 deletions(-)
 create mode 100644 meta-arm/recipes-devtools/fvp/fvp-base-r-aem.bb

diff --git a/kas/fvp-baser-aemv8r64-bsp.yml b/kas/fvp-baser-aemv8r64-bsp.yml
index bb1e473..47aae84 100644
--- a/kas/fvp-baser-aemv8r64-bsp.yml
+++ b/kas/fvp-baser-aemv8r64-bsp.yml
@@ -21,12 +21,18 @@ repos:
       meta:
       meta-poky:
 
+env:
+  FVP_BASE_R_AEM_TARBALL_URI: ""
+  FVP_BASE_R_ARM_EULA_ACCEPT: "False"
+
 local_conf_header:
   base: |
     CONF_VERSION = "1"
     PACKAGE_CLASSES = "package_ipk"
     PACKAGECONFIG_remove_pn-qemu-system-native = "gtk+ sdl"
     EXTRA_IMAGE_FEATURES_append = " debug-tweaks"
+    IMAGE_CLASSES_append = " ${@oe.utils.ifelse(d.getVar('FVP_BASE_R_AEM_TARBALL_URI'), 'fvpboot', '')}"
+    LICENSE_FLAGS_WHITELIST_append = " ${@oe.utils.vartrue('FVP_BASE_R_ARM_EULA_ACCEPT', 'Arm-FVP-EULA', '', d)}"
 
 target:
   - core-image-minimal
diff --git a/meta-arm-bsp/conf/machine/fvp-baser-aemv8r64.conf b/meta-arm-bsp/conf/machine/fvp-baser-aemv8r64.conf
index b937286..29dd662 100644
--- a/meta-arm-bsp/conf/machine/fvp-baser-aemv8r64.conf
+++ b/meta-arm-bsp/conf/machine/fvp-baser-aemv8r64.conf
@@ -24,3 +24,36 @@ WKS_FILE ?= "fvp-base.wks"
 # initialise) and install the pre-generated keys.
 PACKAGECONFIG_remove_pn-openssh = "rng-tools"
 MACHINE_EXTRA_RRECOMMENDS += "ssh-pregen-hostkeys"
+
+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.virtioblockdevice.image_path] ?= "${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.wic"
+FVP_CONFIG[bp.dram_metadata.init_value] ?= "0"
+FVP_CONFIG[bp.dram_metadata.is_enabled] ?= "true"
+FVP_CONFIG[bp.dram_size] ?= "8"
+FVP_CONFIG[bp.exclusive_monitor.monitor_access_level] ?= "1"
+FVP_CONFIG[bp.pl011_uart0.unbuffered_output] ?= "1"
+FVP_CONFIG[bp.pl011_uart0.untimed_fifos] ?= "true"
+FVP_CONFIG[bp.refcounter.non_arch_start_at_default] ?= "1"
+FVP_CONFIG[bp.smsc_91c111.enabled] ?= "0"
+FVP_CONFIG[bp.ve_sysregs.mmbSiteDefault] ?= "0"
+FVP_CONFIG[cache_state_modelled] ?= "0"
+FVP_CONFIG[cluster0.gicv3.cpuintf-mmap-access-level] ?= "2"
+FVP_CONFIG[cluster0.gicv3.SRE-enable-action-on-mmap] ?= "2"
+FVP_CONFIG[cluster0.gicv3.SRE-EL2-enable-RAO] ?= "1"
+FVP_CONFIG[cluster0.gicv3.extended-interrupt-range-support] ?= "1"
+FVP_CONFIG[cluster0.has_aarch64] ?= "1"
+FVP_CONFIG[cluster0.NUM_CORES] ?= "4"
+FVP_CONFIG[cluster0.stage12_tlb_size] ?= "512"
+FVP_CONFIG[gic_distributor.GICD_CTLR-DS-1-means-secure-only] ?= "1"
+FVP_CONFIG[gic_distributor.GITS_BASER0-type] ?= "1"
+FVP_CONFIG[gic_distributor.ITS-count] ?= "1"
+FVP_CONFIG[gic_distributor.ITS-hardware-collection-count] ?= "1"
+FVP_CONFIG[gic_distributor.has-two-security-states] ?= "0"
+FVP_CONFIG[pctl.startup] ?= "0.0.0.*"
+FVP_CONFIG[bp.virtio_net.enabled] ?= "1"
+FVP_CONFIG[bp.vis.rate_limit-enable] ?= "0"
\ No newline at end of file
diff --git a/meta-arm-bsp/documentation/fvp-baser-aemv8r64.md b/meta-arm-bsp/documentation/fvp-baser-aemv8r64.md
index 580e890..53fdca7 100644
--- a/meta-arm-bsp/documentation/fvp-baser-aemv8r64.md
+++ b/meta-arm-bsp/documentation/fvp-baser-aemv8r64.md
@@ -50,6 +50,22 @@ Install the kas setup tool for bitbake based projects:
 
 For more details on kas, see https://kas.readthedocs.io/.
 
+To build the images for fvp-base machine, you also need to:
+
+ - download the ``FVP_Base_AEMv8R_11.15_14.tgz`` image AEM V8-R FVP Installer
+  (Linux) package from Arm's website:
+  https://silver.arm.com/download/download.tm?pv=4858045&p=4029857. You need
+   to have an account and be logged in to be able to download it
+ - set absolute path to the ``FVP_Base_AEMv8R_11.15_14.tgz`` downloaded
+   package in ``FVP_BASE_R_AEM_TARBALL_URI``
+ - accept EULA in ``FVP_BASE_R_ARM_EULA_ACCEPT``
+
+
+The variables should be set like so:
+
+    FVP_BASE_R_AEM_TARBALL_URI="file:///absolute/path/to/FVP_Base_AEMv8R_11.15_14.tgz"
+    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.
 
@@ -101,49 +117,40 @@ To clean up the tap0 interface on the host use the following commands:
     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
+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 "../meta-arm/scripts/runfvp \
+                --console \
+                -- \
+                    --parameter 'bp.smsc_91c111.enabled=1' \
+                    --parameter 'bp.hostbridge.interfaceName=tap0'"
+
+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 "../meta-arm/scripts/runfvp \
+                --console \
+                -- \
+                    --parameter 'bp.smsc_91c111.enabled=1' \
+                    --parameter 'bp.hostbridge.interfaceName=tap0'"
 
 **Note:** The terminal console login is `root` without password.
 
+To finish the fvp emulation, you need to close the telnet session and stop the
+runfvp script:
+
+1. To close the telnet session:
+
+ - Escape to telnet console with ``ctrl+]``.
+ - Run ``quit`` to close the session.
+
+2. To stop the runfvp:
+
+ - Type ``ctrl+c`` and wait for kas process to finish.
 
 Devices supported in the kernel
 -------------------------------
diff --git a/meta-arm/recipes-devtools/fvp/fvp-base-r-aem.bb b/meta-arm/recipes-devtools/fvp/fvp-base-r-aem.bb
new file mode 100644
index 0000000..53b849a
--- /dev/null
+++ b/meta-arm/recipes-devtools/fvp/fvp-base-r-aem.bb
@@ -0,0 +1,27 @@
+require fvp-common.inc
+
+SUMMARY = "Arm Fixed Virtual Platform - Armv8-R Base Architecture Envelope Model FVP"
+HOMEPAGE = "https://developer.arm.com/tools-and-software/simulation-models/fixed-virtual-platforms/arm-ecosystem-models"
+LIC_FILES_CHKSUM = "file://license_terms/license_agreement.txt;md5=1a33828e132ba71861c11688dbb0bd16 \
+                    file://license_terms/third_party_licenses.txt;md5=3db0c4947b7e3405c40b943672d8de2f"
+
+# This FVP cannot be downloaded directly, so download the Armv8-R Base AEM FVP
+# yourself from the homepage and set FVP_BASE_R_AEM_TARBALL_URI appropriately
+# (for example, file:///home/user/FVP_Base_AEMv8R_11.15_14.tgz).
+FVP_BASE_R_AEM_TARBALL_URI ?= ""
+FVP_BASE_R_ARM_EULA_ACCEPT ?= "False"
+PV = "11.15_14"
+
+SRC_URI = "${FVP_BASE_R_AEM_TARBALL_URI};subdir=${BP}"
+python() {
+    if not d.getVar("FVP_BASE_R_AEM_TARBALL_URI"):
+        raise bb.parse.SkipRecipe("FVP_BASE_R_AEM_TARBALL_URI not set")
+}
+
+do_install() {
+    mkdir --parents ${D}${FVPDIR} ${D}${bindir}
+
+    cp --archive --no-preserve=ownership ${S}/AEMv8R_base_pkg//* ${D}${FVPDIR}/
+
+    fvp_link_binaries
+}
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2021-07-28  7:59 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-28  7:58 [PATCH 1/2] arm-bsp/fvp-baser-aemv8r64: Use master as kas default refspec Hugo L'Hostis
2021-07-28  7:58 ` [PATCH 2/2] arm-bsp/fvp-baser-aemv8r64: Add support for runfvp Hugo L'Hostis

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).