Madhukar Pappireddy | 2f284e1 | 2021-08-30 16:06:14 -0500 | [diff] [blame] | 1 | #!/usr/bin/env bash |
| 2 | # |
Chris Kay | 4e8aaf1 | 2022-09-01 15:21:55 +0100 | [diff] [blame] | 3 | # Copyright (c) 2019-2022, Arm Limited. All rights reserved. |
Madhukar Pappireddy | 2f284e1 | 2021-08-30 16:06:14 -0500 | [diff] [blame] | 4 | # |
| 5 | # SPDX-License-Identifier: BSD-3-Clause |
| 6 | # |
| 7 | |
| 8 | fetch_tf_resource() { |
| 9 | kernel_type="fvp-tc-kernel" get_kernel |
| 10 | initrd_type="fvp-tc-ramdisk" get_initrd |
Madhukar Pappireddy | 2f284e1 | 2021-08-30 16:06:14 -0500 | [diff] [blame] | 11 | |
Madhukar Pappireddy | 2f284e1 | 2021-08-30 16:06:14 -0500 | [diff] [blame] | 12 | # Use SCP binary from SCP build if it exists, or fetch pre-built ones. |
Nicola Mazzucato | d15f713 | 2021-10-27 14:56:34 +0100 | [diff] [blame] | 13 | if [ ! -f "$archive/scp_rom.bin" ]; then |
Madhukar Pappireddy | 2f284e1 | 2021-08-30 16:06:14 -0500 | [diff] [blame] | 14 | # Pick the appropriate binary based on target platform variant |
Jayanth Dodderi Chidanand | 4063699 | 2022-04-06 18:21:55 +0100 | [diff] [blame] | 15 | url="$scp_prebuilts/tc$plat_variant/release/tc$plat_variant-bl1.bin" saveas="scp_rom.bin" fetch_file |
Nicola Mazzucato | d15f713 | 2021-10-27 14:56:34 +0100 | [diff] [blame] | 16 | archive_file "scp_rom.bin" |
Madhukar Pappireddy | 2f284e1 | 2021-08-30 16:06:14 -0500 | [diff] [blame] | 17 | fi |
| 18 | |
Rupinderjit Singh | 8d4e1e4 | 2022-08-18 14:51:41 +0100 | [diff] [blame] | 19 | |
| 20 | # RSS is applicable to TC2 |
| 21 | if [ $plat_variant -eq 2 ]; then |
| 22 | |
Sandrine Bailleux | 67bf650 | 2022-09-07 15:41:18 +0200 | [diff] [blame] | 23 | # Hold RSS terminal_uart_ap |
| 24 | uart="2" file="hold_uart.exp" track_expect |
| 25 | |
Rupinderjit Singh | 8d4e1e4 | 2022-08-18 14:51:41 +0100 | [diff] [blame] | 26 | 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 |
| 45 | enum image_attributes { |
| 46 | RE_IMAGE_LOAD_ADDRESS = $2, |
| 47 | RE_SIGN_BIN_SIZE = $3, |
| 48 | }; |
| 49 | EOF |
| 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 Pappireddy | 2f284e1 | 2021-08-30 16:06:14 -0500 | [diff] [blame] | 109 | } |
Chris Kay | 4e8aaf1 | 2022-09-01 15:21:55 +0100 | [diff] [blame] | 110 | |
| 111 | generate_lava_job_template() { |
| 112 | # Hold scp terminal_s0 |
Chris Kay | 4943746 | 2022-11-23 12:53:30 +0000 | [diff] [blame] | 113 | 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 Kay | 4e8aaf1 | 2022-09-01 15:21:55 +0100 | [diff] [blame] | 119 | |
| 120 | payload_type="linux" gen_fvp_yaml_template |
| 121 | } |