]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - processor-sdk/pdk.git/blob - packages/ti/drv/sciclient/tools/firmwareHeaderGen.sh
Migratiing to SYSFW version v2019.12
[processor-sdk/pdk.git] / packages / ti / drv / sciclient / tools / firmwareHeaderGen.sh
1 #!/bin/bash
2 #
3 # Copyright (c) 2018, Texas Instruments Incorporated
4 # All rights reserved.
5 #
6 # Redistribution and use in source and binary forms, with or without
7 # modification, are permitted provided that the following conditions
8 # are met:
9 #
10 # *  Redistributions of source code must retain the above copyright
11 #    notice, this list of conditions and the following disclaimer.
12 #
13 # *  Redistributions in binary form must reproduce the above copyright
14 #    notice, this list of conditions and the following disclaimer in the
15 #    documentation and/or other materials provided with the distribution.
16 #
17 # *  Neither the name of Texas Instruments Incorporated nor the names of
18 #    its contributors may be used to endorse or promote products derived
19 #    from this software without specific prior written permission.
20 #
21 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22 # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
23 # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
24 # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
25 # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
26 # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
27 # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
28 # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
29 # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
30 # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
31 # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 #
33 # Usage : For AM65XX    : ./firmwareHeaderGen.sh am65xx
34 #         For AM65XX-HS : ./firmwareHeaderGen.sh am65xx-hs
35 #         For J721E     : ./firmwareHeaderGen.sh j721e
36 #         For J721E-HS  : ./firmwareHeaderGen.sh j721e-hs
37 export RM=rm
38 export MV=mv
39 export MAKE=gcc
40 export ECHO=echo
41 export CHMOD=chmod
42 export COPY=cp
43 export CAT=cat
44 #Default SOC is am65xx .This can be changed by using first parameter
45 # as ,for example, "j721e". Assumes device type is GP by default.
46 export SOC=am65xx
47 export SOC_TYPE=gp
49 if [[ $OS == 'Windows_NT' ]]; then
50 export BIN2C_EXE=bin2c.exe
51 else
52 export BIN2C_EXE=bin2c.out
53 fi
55 # Specify paths relative to script
56 export SCRIPT_DIR=$(cd "$( dirname "${BASH_SOURCE[0]}")" && pwd )
57 echo $SCRIPT_DIR
58 export SCI_CLIENT_DIR=$(cd "$SCRIPT_DIR/.." && pwd )
60 # Keeping everything within SCI client folder
61 export BIN2C_GEN=$SCI_CLIENT_DIR/tools/bin2c/$BIN2C_EXE
63 # ROOTDIR is used by x509CertificateGen.sh
64 # If not defined, try to get it relative to
65 # script location. This flexibility is useful
66 # when running this script from a git repo, outside
67 # PRSDK.
68 if [ "$#" -gt 1 ]; then
69 export ROOTDIR=$2
70 export SOC=$1
71 elif [ "$#" -gt 0 ]; then
72 export ROOTDIR=$(cd "$SCI_CLIENT_DIR/../../.." && pwd )
73 export SOC=$1
74 else
75 export ROOTDIR=$(cd "$SCI_CLIENT_DIR/../../.." && pwd )
76 fi
78 # Pickup correct sysfw binary
79 if [[ $SOC == *"hs"* ]]; then
80   SOC_TYPE=hs-enc
81   SOC=${SOC%-hs}
82 fi
84 export SCI_CLIENT_IN_SOC_DIR=$SCI_CLIENT_DIR/soc/sysfw/binaries
86 if [ "$SOC" = "am65xx" ]; then
87 export SCI_CLIENT_OUT_SOC_DIR=$SCI_CLIENT_DIR/soc/V0
88 export FIRMWARE_SILICON=$SCI_CLIENT_IN_SOC_DIR/ti-sci-firmware-am65x-$SOC_TYPE.bin
89 export SYSFW_SE_INNER_CERT=$SCI_CLIENT_OUT_SOC_DIR/ti-sci-firmware-am65x-hs-cert.bin
90 export SCICLIENT_FIRMWARE_HEADER=sciclient_firmware_V0.h
91 fi
93 if [ "$SOC" = "j721e" ]; then
94 export SCI_CLIENT_OUT_SOC_DIR=$SCI_CLIENT_DIR/soc/V1
95 export FIRMWARE_SILICON=$SCI_CLIENT_IN_SOC_DIR/ti-sci-firmware-j721e-$SOC_TYPE.bin
96 export SYSFW_SE_INNER_CERT=$SCI_CLIENT_OUT_SOC_DIR/ti-sci-cert-j721e-$SOC_TYPE.bin
97 export SCICLIENT_FIRMWARE_HEADER=sciclient_firmware_V1.h
98 fi
100 export SYSFW_SE_CUST_CERT=$SCI_CLIENT_OUT_SOC_DIR/sysfw_cert.bin
101 export SYSFW_SE_SIGNED=$SCI_CLIENT_OUT_SOC_DIR/sysfw.bin
103 # SBL_CERT_GEN may already be depending on how this is called
104 export SBL_CERT_GEN="${SBL_CERT_GEN:-$ROOTDIR/ti/build/makerules/x509CertificateGen.sh}"
106 # Confirm ROOTDIR is correct, if not error out.
107 if [ ! -f $SBL_CERT_GEN ]; then
108     echo "Error: $SBL_CERT_GEN not found!"
109     echo "       Usage $0 <pdk-install-path>"
110     exit 1
111 fi
113 $ECHO "Building the bin2c generation c tool"
114 cd $SCI_CLIENT_DIR/tools/bin2c/
115 $RM -f $BIN2C_EXE
116 $MAKE bin2c.c -o $BIN2C_EXE
117 cd -
119 $CHMOD a+x $SBL_CERT_GEN
120 $CHMOD a+x $BIN2C_GEN
122 if [ "$SOC_TYPE" == "gp" ]; then
123 $ECHO "Generating the Header file for " $FIRMWARE_SILICON
124 export SBL_CERT_KEY=$ROOTDIR/ti/build/makerules/rom_degenerateKey.pem
125 $SBL_CERT_GEN -b $FIRMWARE_SILICON -o $SYSFW_SE_SIGNED -c DMSC_I -l 0x40000 -k $SBL_CERT_KEY
126 else
127 $ECHO "Generating outer certificate for " $SYSFW_SE_INNER_CERT
128 export SBL_CERT_KEY=$ROOTDIR/ti/build/makerules/k3_dev_mpk.pem
129 $SBL_CERT_GEN -b $SYSFW_SE_INNER_CERT -o $SYSFW_SE_CUST_CERT -c DMSC_O -l 0x40000 -k $SBL_CERT_KEY
131 $ECHO "Generating the Header file for " $FIRMWARE_SILICON
132 $CAT $SYSFW_SE_CUST_CERT $FIRMWARE_SILICON > $SYSFW_SE_SIGNED
133 $RM -f $SYSFW_SE_CUST_CERT
134 fi
136 $BIN2C_GEN $SYSFW_SE_SIGNED $SCICLIENT_FIRMWARE_HEADER SCICLIENT_FIRMWARE > $SCI_CLIENT_OUT_SOC_DIR/$SCICLIENT_FIRMWARE_HEADER
138 $ECHO "Done."