blob: e0dd44c71d437f31dfd4d592050c1eed0f127042 [file] [log] [blame]
#!/usr/bin/env bash
#
# Copyright (c) 2019-2022 Arm Limited. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#
set -u
# Pre-built SCP/MCP binaries
scp_bl1_url="$scp_mcp_downloads/juno/release/juno-bl1-bypass.bin"
scp_bl2_url="$scp_mcp_downloads/juno/release/juno-bl2.bin"
psci_reset2_scp_bl2_url="$tfa_downloads/psci_reset2/scp_bl2.bin"
uboot_bl33_url="$linaro_release/juno-latest-oe-uboot/SOFTWARE/bl33-uboot.bin"
ml_uboot_bl33_url="$tfa_downloads/linux_boot/u-boot-juno.bin"
uboot_env_url="$tfa_downloads/linux_boot/u-boot-env.bin"
optee_fip_url="$linaro_release/juno-ack-android-uboot/SOFTWARE/fip.bin"
linux_image_url="$tfa_downloads/linux_boot/Image.gz"
# Busybox based initrd
linux_busybox_initrd_url="$tfa_downloads/linux_boot/initbb.img"
juno_recovery_root="$linaro_release/juno-latest-oe-uboot"
uboot32_fip_url="$linaro_release/juno32-latest-oe-uboot/SOFTWARE/fip.bin"
juno32_recovery_root="$linaro_release/juno32-latest-busybox-uboot"
juno32_recovery_root_oe="$linaro_release/juno32-latest-oe-uboot"
juno_rootfs_url="${juno_rootfs_url:-$linaro_release/linaro-image-minimal-genericarmv8-20170127-888.rootfs.tar.gz}"
juno32_rootfs_url="${juno32_rootfs_url:-$linaro_release/linaro-image-alip-genericarmv7a-20150710-336.rootfs.tar.gz}"
get_optee_bin() {
local tmpdir="$(mktempdir)"
pushd "$tmpdir"
extract_fip "$optee_fip_url"
mv "tos-fw.bin" "bl32.bin"
archive_file "bl32.bin"
popd
}
get_scp_bl2_bin() {
url="$scp_bl2_url" saveas="scp_bl2.bin" fetch_file
archive_file "scp_bl2.bin"
}
get_psci_reset2_scp_bl2_bin() {
url="$psci_reset2_scp_bl2_url" saveas="scp_bl2.bin" fetch_file
archive_file "scp_bl2.bin"
}
get_uboot32_bin() {
local tmpdir="$(mktempdir)"
pushd "$tmpdir"
extract_fip "$uboot32_fip_url"
mv "nt-fw.bin" "uboot.bin"
archive_file "uboot.bin"
popd
}
get_uboot_bin() {
url="$uboot_bl33_url" saveas="uboot.bin" fetch_file
archive_file "uboot.bin"
}
get_ml_uboot_bin() {
url="$ml_uboot_bl33_url" saveas="uboot.bin" fetch_file
archive_file "uboot.bin"
url="$uboot_env_url" saveas="blank.img" fetch_file
archive_file "blank.img"
}
get_linux_image() {
url="$linux_image_url" saveas="Image" fetch_file
archive_file "Image"
url="$linux_busybox_initrd_url" saveas="ramdisk.img" fetch_file
archive_file "ramdisk.img"
}
gen_recovery_image32() {
url="$juno32_recovery_root" gen_recovery_image "$@"
}
gen_recovery_image32_oe() {
url="$juno32_recovery_root_oe" gen_recovery_image "$@"
}
gen_recovery_image() {
local zip_dir="$workspace/juno_recovery"
local zip_file="${zip_dir}.zip"
local url="${url:-$juno_recovery_root}"
saveas="$zip_dir" url="$url" fetch_directory
if [ "$*" ]; then
# Replace files needed for this test. Copying them first so
# that the subsequent copy can replace it if necessary.
url="$scp_bl1_url" saveas="$zip_dir/SOFTWARE/scp_bl1.bin" fetch_file
cp -f "$@" "$zip_dir/SOFTWARE"
fi
# The Linaro recovery image has a bug in the images.txt files, which
# puts the U-Boot environment in the wrong place (the address is
# relative to the beginning of NOR flash, it's not an absolute MMIO
# address). Fix that up so that we can update the environment.
sed -ie "s/0x0BFC0000/0x03FC0000/" "$zip_dir"/SITE1/HBI0262?/images.txt
# If an image.txt file was specified, replace all image.txt file inside
# the recovery with the specified one.
if upon "$image_txt"; then
find "$zip_dir" -name images.txt -exec cp -f "$image_txt" {} \;
fi
(cd "$zip_dir" && zip -rq "$zip_file" -- *)
archive_file "$zip_file"
}
gen_juno_yaml() {
local yaml_file="$workspace/juno.yaml"
local job_file="$workspace/job.yaml"
local payload_type="${payload_type:?}"
bin_mode="$mode" juno_revision="$juno_revision" \
"$ci_root/script/gen_juno_${payload_type}_yaml.sh" > "$yaml_file"
cp "$yaml_file" "$job_file"
archive_file "$yaml_file"
archive_file "$job_file"
}
juno_aarch32_runtime() {
echo "Building BL32 in AArch32 for Juno:"
sed 's/^/\t/' < "${config_file:?}"
# Build BL32 for Juno in AArch32. Since build_tf does a realclean, we'll
# lose the tools binaries. Build that again for later use.
if upon "$(get_tf_opt TRUSTED_BOARD_BOOT)"; then
tf_build_targets="fiptool certtool bl32"
else
tf_build_targets="fiptool bl32"
fi
tf_build_config="$config_file" tf_build_targets="$tf_build_targets" \
build_tf
# Copy BL32 to a temporary directoy, and update it in the FIP
local tmpdir="$(mktempdir)"
from="$tf_root/build/juno/$mode" to="$tmpdir" collect_build_artefacts
bin_name="tos-fw" src="$tmpdir/bl32.bin" fip_update
}
set +u