| #!/bin/bash |
| |
| # |
| # Copyright (c) 2020-2022, Arm Limited. All rights reserved. |
| # |
| # SPDX-License-Identifier: BSD-3-Clause |
| # |
| |
| # Generate a JSON file which will be fed to TF-A as SPM_LAYOUT_FILE to package |
| # Secure Partitions as part of FIP. |
| # Note the script will append the partition to the existing layout file. |
| # If you wish to only generate a layout file with this partition first run |
| # "make realclean" to remove the existing file. |
| |
| # $1 = Secure Partition |
| # $2 = Platform built path |
| # $3 = Ivy Shim present |
| # Output = $2/sp_layout.json |
| |
| GENERATED_JSON=$2/sp_layout.json |
| primary_dts="$1.dts" |
| |
| if [ "$1" == "ivy" ]; then |
| if [ "$3" == "1" ]; then |
| primary_dts="ivy-sel1.dts" |
| else |
| primary_dts="ivy-sel0.dts" |
| fi |
| fi |
| |
| # Remove closing bracket and add comma if the dts is already present. |
| if [ ! -f "$GENERATED_JSON" ]; then |
| echo -e "{\n" >> "$GENERATED_JSON" |
| else |
| if [ $(grep "$primary_dts" "$GENERATED_JSON" | wc -l) -eq "0" ]; then |
| sed -i '$d' "$GENERATED_JSON" |
| sed -i '$ s/$/,/' "$GENERATED_JSON" |
| echo -e "\n" >> "$GENERATED_JSON" |
| else |
| exit 0 |
| fi |
| fi |
| |
| # To demonstrate communication between SP's, two cactus S-EL1 instances used. |
| # To also test mapping of the RXTX region a third cactus S-EL1 instance is used. |
| # cactus-primary, cactus-secondary and cactus-tertiary have same binary but |
| # different partition manifests. |
| if [ "$1" == "cactus" ]; then |
| echo -e "\t\"$1-primary\" : {\n \ |
| \t\"image\": {\n \ |
| \t\t\"file\": \"$1.bin\",\n \ |
| \t\t\"offset\":\"0x2000\"\n\ |
| \t},\n \ |
| \t\"pm\": {\n \ |
| \t\t\"file\": \"$1.dts\",\n \ |
| \t\t\"offset\":\"0x1000\"\n\ |
| \t},\n |
| \t\"owner\": \"SiP\"\n\t},\n\n\t\"$1-secondary\" : {\n \ |
| \t\"image\": \"$1.bin\",\n \ |
| \t\"pm\": \"$1-secondary.dts\",\n \ |
| \t\"owner\": \"Plat\"\n\t},\n\n\t\"$1-tertiary\" : {\n \ |
| \t\"image\": \"$1.bin\",\n \ |
| \t\"pm\": \"$1-tertiary.dts\",\n \ |
| \t\"owner\": \"Plat\"\n\t}" \ |
| >> "$GENERATED_JSON" |
| elif [ "$1" == "ivy" ]; then |
| echo -e "\t\"ivy\" : {\n \ |
| \t\"image\": \"ivy.bin\",\n \ |
| \t\"pm\": \"$primary_dts\",\n \ |
| \t\"owner\": \"Plat\"\n\t}" >> "$GENERATED_JSON" |
| else |
| echo -e "\nWarning: Secure Partition not supported\n" |
| fi |
| |
| echo -e "}" >> "$GENERATED_JSON" |