FVP: Update scripts to run GPT image
Updated scripts to:
1. Build FIP with GPT support enabled
2. Create GPT image with FIP binary inside it as a partition
3. Run GPT image on FVP base platform
Change-Id: Ia43c5e20bd0f4127b8bbd3ef488b683191d21b62
Signed-off-by: Manish V Badarkhe <Manish.Badarkhe@arm.com>
diff --git a/fvp_utils.sh b/fvp_utils.sh
index 25bf8b3..1318385 100644
--- a/fvp_utils.sh
+++ b/fvp_utils.sh
@@ -620,4 +620,40 @@
echo "$docker_registry"
}
+# generate GPT image and archive it
+gen_gpt_bin() {
+ raw_image="fip_gpt.bin"
+ img_uuid="FB90808A-BA9A-4D42-B9A2-A7A937144AEE"
+ img_bank_uuid=`uuidgen`
+ disk_uuid=`uuidgen`
+ bin="${1:?}"
+
+ # maximum FIP size 2MB
+ fip_max_size=2097152
+ start_sector=34
+ sector_size=512
+ num_sectors=$(($fip_max_size/$sector_size))
+ bin_size=$(stat -c %s $bin)
+
+ if [[ $fip_max_size -lt $bin_size ]]
+ then
+ echo "FIP binary ($bin_size bytes) larger than max partition 1"
+ "size ($fip_max_size byte)"
+ return
+ fi
+
+ # create raw 5MB image
+ dd if=/dev/zero of=$raw_image bs=5M count=1
+
+ # create GPT image
+ sgdisk -a 1 -U $disk_uuid -n 1:$start_sector:+$num_sectors \
+ -c 1:FIP_A -t 1:$img_uuid $raw_image -u $img_bank_uuid
+
+ echo "write binary $bin at sector $start_sector"
+ dd if=$bin of=$raw_image bs=$sector_size seek=$start_sector \
+ count=$num_sectors conv=notrunc
+
+ archive_file "fip_gpt.bin"
+}
+
set +u
diff --git a/group/tftf-l2-fvp/fvp-gpt,fvp-default:fvp-tftf.gpt-aemv8a.gpt-debug b/group/tftf-l2-fvp/fvp-gpt,fvp-default:fvp-tftf.gpt-aemv8a.gpt-debug
new file mode 100644
index 0000000..aa57540
--- /dev/null
+++ b/group/tftf-l2-fvp/fvp-gpt,fvp-default:fvp-tftf.gpt-aemv8a.gpt-debug
@@ -0,0 +1,5 @@
+#
+# Copyright (c) 2021, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
diff --git a/model/fvp_common.sh b/model/fvp_common.sh
index 608fc66..e22c8c7 100644
--- a/model/fvp_common.sh
+++ b/model/fvp_common.sh
@@ -25,6 +25,8 @@
if [ "$bl2_at_el3" ]; then
has_fip=1
+elif [ "$fip_as_gpt" ]; then
+ has_bl1=1
elif [ -z "$reset_to_spmin" -a -z "$reset_to_bl31" ]; then
has_bl1=1
has_fip=1
@@ -56,6 +58,7 @@
${has_bl1+-C bp.secureflashloader.fname=$bl1_bin}
${has_fip+-C bp.flashloader0.fname=$fip_bin}
+${fip_as_gpt+-C bp.flashloader0.fname=$fip_gpt_bin}
${dtb_bin+--data ${data_instance}=$dtb_bin@${dtb_addr:?}}
${kernel_bin+--data ${data_instance}=$kernel_bin@${kernel_addr:?}}
diff --git a/run_config/fvp-aemv8a.gpt b/run_config/fvp-aemv8a.gpt
new file mode 100644
index 0000000..c1de759
--- /dev/null
+++ b/run_config/fvp-aemv8a.gpt
@@ -0,0 +1,15 @@
+#!/usr/bin/env bash
+#
+# Copyright (c) 2021 Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+post_fetch_tf_resource() {
+ local model="base-aemv8a"
+
+ fip_as_gpt="1" \
+ model="$model" gen_model_params
+
+ model="$model" gen_fvp_yaml
+}
diff --git a/run_config/fvp-tftf.gpt b/run_config/fvp-tftf.gpt
new file mode 100644
index 0000000..1225062
--- /dev/null
+++ b/run_config/fvp-tftf.gpt
@@ -0,0 +1,21 @@
+#!/usr/bin/env bash
+#
+# Copyright (c) 2021 Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+fetch_tf_resource() {
+ uart="0" file="tftf.exp" track_expect
+ uart="1" file="hold_uart.exp" track_expect
+
+ payload_type="tftf" gen_fvp_yaml_template
+}
+
+post_tf_build() {
+ build_fip BL33="$archive/tftf.bin"
+}
+
+post_tf_archive() {
+ gen_gpt_bin "$archive/fip.bin"
+}
diff --git a/tf_config/fvp-gpt b/tf_config/fvp-gpt
new file mode 100644
index 0000000..0572149
--- /dev/null
+++ b/tf_config/fvp-gpt
@@ -0,0 +1,3 @@
+ARM_GPT_SUPPORT=1
+CROSS_COMPILE=aarch64-none-elf-
+PLAT=fvp