arm-trusted-firmware/tools/fiptool/fip_create.sh
dp-arm 819281ee23 Replace fip_create with fiptool
fiptool provides a more consistent and intuitive interface compared to
the fip_create program.  It serves as a better base to build on more
features in the future.

fiptool supports various subcommands.  Below are the currently
supported subcommands:

1) info   - List the images contained in a FIP file.
2) create - Create a new FIP file with the given images.
3) update - Update an existing FIP with the given images.
4) unpack - Extract a selected set or all the images from a FIP file.
5) remove - Remove images from a FIP file.  This is a new command that
   was not present in fip_create.

To create a new FIP file, replace "fip_create" with "fiptool create".

To update a FIP file, replace "fip_create" with "fiptool update".

To dump the contents of a FIP file, replace "fip_create --dump" with
"fiptool info".

A compatibility script that emulates the basic functionality of
fip_create is provided.  Existing scripts might or might not work with
the compatibility script.  Users are strongly encouraged to migrate to
fiptool.

Fixes ARM-Software/tf-issues#87
Fixes ARM-Software/tf-issues#108
Fixes ARM-Software/tf-issues#361

Change-Id: I7ee4da7ac60179cc83cf46af890fd8bc61a53330
2016-07-29 10:38:46 +01:00

149 lines
4.5 KiB
Bash

#!/bin/sh
#
# Copyright (c) 2016, ARM Limited and Contributors. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
# Redistributions of source code must retain the above copyright notice, this
# list of conditions and the following disclaimer.
#
# Redistributions in binary form must reproduce the above copyright notice,
# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
#
# Neither the name of ARM nor the names of its contributors may be used
# to endorse or promote products derived from this software without specific
# prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
# This script implements the old fip_create tool on top of
# the new fiptool.
usage() {
cat << EOF
This tool is used to create a Firmware Image Package.
Usage:
fip_create [options] FIP_FILENAME
Options:
-h,--help: Print this help message and exit
-d,--dump: Print contents of FIP after update
-u,--unpack: Unpack images from an existing FIP
-f,--force: Overwrite existing files when unpacking images
Components that can be added/updated:
--scp-fwu-cfg FILENAME SCP Firmware Updater Configuration FWU SCP_BL2U
--ap-fwu-cfg FILENAME AP Firmware Updater Configuration BL2U
--fwu FILENAME Firmware Updater NS_BL2U
--fwu-cert FILENAME Non-Trusted Firmware Updater certificate
--tb-fw FILENAME Trusted Boot Firmware BL2
--scp-fw FILENAME SCP Firmware SCP_BL2
--soc-fw FILENAME EL3 Runtime Firmware BL31
--tos-fw FILENAME Secure Payload BL32 (Trusted OS)
--nt-fw FILENAME Non-Trusted Firmware BL33
--rot-cert FILENAME Root Of Trust key certificate
--trusted-key-cert FILENAME Trusted key certificate
--scp-fw-key-cert FILENAME SCP Firmware key certificate
--soc-fw-key-cert FILENAME SoC Firmware key certificate
--tos-fw-key-cert FILENAME Trusted OS Firmware key certificate
--nt-fw-key-cert FILENAME Non-Trusted Firmware key certificate
--tb-fw-cert FILENAME Trusted Boot Firmware BL2 certificate
--scp-fw-cert FILENAME SCP Firmware content certificate
--soc-fw-cert FILENAME SoC Firmware content certificate
--tos-fw-cert FILENAME Trusted OS Firmware content certificate
--nt-fw-cert FILENAME Non-Trusted Firmware content certificate
EOF
exit
}
echo "!! The fip_create tool is deprecated. Use the new fiptool. !!"
basedir="$(dirname $0)/../fiptool"
fiptool_args=
while :; do
case "$1" in
-h | --help )
usage
break ;;
-d | --dump )
fiptool_args="info $fiptool_args"
shift ;;
-u | --unpack )
fiptool_args="unpack $fiptool_args"
shift ;;
-f | --force )
fiptool_args="$fiptool_args --force"
shift ;;
--scp-fwu-cfg | \
--ap-fwu-cfg | \
--fwu | \
--fwu-cert | \
--tb-fw | \
--scp-fw | \
--soc-fw | \
--tos-fw | \
--nt-fw | \
--rot-cert | \
--trusted-key-cert | \
--scp-fw-key-cert | \
--soc-fw-key-cert | \
--tos-fw-key-cert | \
--nt-fw-key-cert | \
--tb-fw-cert | \
--scp-fw-cert | \
--soc-fw-cert | \
--tos-fw-cert | \
--nt-fw-cert )
fiptool_args="$fiptool_args $1"
shift
if test -z $1; then
usage
fi
fiptool_args="$fiptool_args $1"
shift ;;
* )
break ;;
esac
done
# expect a FIP filename
if test -z $1; then
usage
fi
is_pack_cmd=1
for arg in $fiptool_args; do
case "$arg" in
unpack )
is_pack_cmd=0
break ;;
info )
is_pack_cmd=0
break ;;
* )
esac
done
# if --unpack and --dump were not specified
# the default action is to pack
if test "$is_pack_cmd" -eq 1; then
fiptool_args="update $fiptool_args"
fi
# append FIP filename
fiptool_args="$fiptool_args $1"
echo "Invoking fiptool with args: $fiptool_args"
"$basedir/fiptool" $fiptool_args