blob: c4109c43bbec35ae7924f0ca93ee0e4c4b8172b7 [file] [log] [blame]
Madhukar Pappireddy2f284e12021-08-30 16:06:14 -05001#!/usr/bin/env bash
2#
Chris Kay4e8aaf12022-09-01 15:21:55 +01003# Copyright (c) 2019-2022, Arm Limited. All rights reserved.
Madhukar Pappireddy2f284e12021-08-30 16:06:14 -05004#
5# SPDX-License-Identifier: BSD-3-Clause
6#
7
8fetch_tf_resource() {
9 kernel_type="fvp-tc-kernel" get_kernel
10 initrd_type="fvp-tc-ramdisk" get_initrd
Madhukar Pappireddy2f284e12021-08-30 16:06:14 -050011
Madhukar Pappireddy2f284e12021-08-30 16:06:14 -050012 # Use SCP binary from SCP build if it exists, or fetch pre-built ones.
Nicola Mazzucatod15f7132021-10-27 14:56:34 +010013 if [ ! -f "$archive/scp_rom.bin" ]; then
Madhukar Pappireddy2f284e12021-08-30 16:06:14 -050014 # Pick the appropriate binary based on target platform variant
Jayanth Dodderi Chidanand40636992022-04-06 18:21:55 +010015 url="$scp_prebuilts/tc$plat_variant/release/tc$plat_variant-bl1.bin" saveas="scp_rom.bin" fetch_file
Nicola Mazzucatod15f7132021-10-27 14:56:34 +010016 archive_file "scp_rom.bin"
Madhukar Pappireddy2f284e12021-08-30 16:06:14 -050017 fi
18
Rupinderjit Singh8d4e1e42022-08-18 14:51:41 +010019
20 # RSS is applicable to TC2
21 if [ $plat_variant -eq 2 ]; then
22
Sandrine Bailleux67bf6502022-09-07 15:41:18 +020023 # Hold RSS terminal_uart_ap
24 uart="2" file="hold_uart.exp" track_expect
25
Rupinderjit Singh8d4e1e42022-08-18 14:51:41 +010026 sign_image() {
27 # $1 ... host binary name to sign
28 # $2 ... image load address
29 # $3 ... signed bin size
30
31 local tmpdir="$(mktempdir)"
32 host_bin="`basename ${1}`"
33 signed_bin="signed_`basename ${1}`"
34 host_binary_layout="`basename -s .bin ${1}`_ns"
35
36 # development PEM containing a key - use same key which is used for SCP BL1 in pre-built image
37 url="$tc_prebuilts/tc$plat_variant/root-RSA-3072.pem" saveas="root-RSA-3072.pem" fetch_file
38 archive_file "root-RSA-3072.pem"
39
40 RSS_SIGN_PRIVATE_KEY=$archive/root-RSA-3072.pem
41 RSS_SEC_CNTR_INIT_VAL=1
42 RSS_LAYOUT_WRAPPER_VERSION="1.5.0"
43
44 cat << EOF > $tmpdir/$host_binary_layout
45enum image_attributes {
46 RE_IMAGE_LOAD_ADDRESS = $2,
47 RE_SIGN_BIN_SIZE = $3,
48};
49EOF
50
51 if [ ! -f $archive/$host_bin ]; then
52 echo "$archive/$host_bin does not exist. Aborting...!"
53 exit 1
54 fi
55
56 echo "Signing `basename ${1}`"
57 # Get mcuboot
58 git clone "https://github.com/mcu-tools/mcuboot.git" $tmpdir/mcuboot
59 # Fetch wrapper script
60 saveas="$tmpdir" url="$tc_prebuilts/tc$plat_variant/wrapper_scripts" fetch_directory
61
62 echo "Installing dependencies..."
63 pip3 install cryptography cbor2 intelhex
64
65 pushd $tmpdir/mcuboot/scripts
66 python3 $tmpdir/wrapper_scripts/wrapper/wrapper.py \
67 -v $RSS_LAYOUT_WRAPPER_VERSION \
68 --layout $tmpdir/$host_binary_layout \
69 -k $RSS_SIGN_PRIVATE_KEY \
70 --public-key-format full \
71 --align 1 \
72 --pad \
73 --pad-header \
74 -H 0x1000 \
75 -s $RSS_SEC_CNTR_INIT_VAL \
76 $archive/$host_bin \
77 $tmpdir/$signed_bin
78
79 echo "created signed_`basename ${1}`"
80 url="$tmpdir/$signed_bin" saveas="$signed_bin" fetch_file
81 archive_file "$signed_bin"
82 popd
83 }
84
85 inject_bl1() {
86 # Get pre-built rss rom
87 if [ ! -f "$archive/rss_rom.bin" ]; then
88 url="$tc_prebuilts/tc$plat_variant/rss_rom.bin" fetch_file
89 archive_file "rss_rom.bin"
90 fi
91
92 # Get pre-built rss flash
93 if [ ! -f "$archive/rss_flash.bin" ]; then
94 url="$tc_prebuilts/tc$plat_variant/rss_flash.bin" fetch_file
95 archive_file "rss_flash.bin"
96 fi
97
98 # Inject signed AP bl1 into pre-built rss flash image bundle - both at primary and secondary locations.
99 dd if=$archive/$signed_bin of=$archive/rss_flash.bin bs=1 seek=$((0x240000)) conv=notrunc status=progress
100 dd if=$archive/$signed_bin of=$archive/rss_flash.bin bs=1 seek=$((0x340000)) conv=notrunc status=progress
101 }
102
103 # sign AP bl1
104 sign_image bl1.bin $ap_bl1_flash_load_addr $ap_bl1_flash_size
105
106 # Inject signed bl1 to pre-built rss flash image
107 inject_bl1
108 fi
Madhukar Pappireddy2f284e12021-08-30 16:06:14 -0500109}
Chris Kay4e8aaf12022-09-01 15:21:55 +0100110
111generate_lava_job_template() {
112 # Hold scp terminal_s0
Chris Kay49437462022-11-23 12:53:30 +0000113 uart="0" port="5002" file="hold_uart.exp" track_expect
114 uart="1" port="5003" file="linux-rd-busybox.exp" set_primary="1" \
115 track_expect
116
117 set_uart_port "${archive:?}" 2 5000
118 set_uart_port "${archive:?}" 3 5001
Chris Kay4e8aaf12022-09-01 15:21:55 +0100119
120 payload_type="linux" gen_fvp_yaml_template
121}