Chromium Code Reviews| Index: host/cros_sign_bootstub |
| diff --git a/host/cros_sign_bootstub b/host/cros_sign_bootstub |
| new file mode 100755 |
| index 0000000000000000000000000000000000000000..878f45cc5ccb07862898b23c97443dc4b788e3f7 |
| --- /dev/null |
| +++ b/host/cros_sign_bootstub |
| @@ -0,0 +1,88 @@ |
| +#!/bin/bash |
| + |
| +# Copyright (c) 2011 The Chromium OS Authors. All rights reserved. |
| +# Use of this source code is governed by a BSD-style license that can be |
| +# found in the LICENSE file. |
| + |
| +# This utility uses cbootimage to signs a bootstub so that the Tegra boot ROM |
| +# will load and run it. |
| + |
| +# Include common CrOS utilities. |
| +. "/usr/lib/crosutils/common.sh" |
| + |
| +# Command line options |
| +DEFINE_string bct "" "DDR memory timing BCT file." |
| +DEFINE_string flash "" "Boot flash parameter file." |
| +DEFINE_string bootstub "" "Bootstub firmware image to sign." |
| +DEFINE_string output "bootstub.bin" "Signed bootstub + BCT output file." |
| +DEFINE_string text_base "0xe08000" "Load address and entry point for bootstub." |
| +DEFINE_string config "" "Directory for temporary configuration files." |
| + |
| +# Parse command line. |
| +FLAGS "$@" || exit 1 |
| +eval set -- "${FLAGS_ARGV}" |
| + |
| +# Die on errors. |
| +set -e |
| + |
| +CROS_LOG_PREFIX="cros_sign_bootstub" |
| + |
| +function construct_config() { |
| + local flash_file="$1" |
| + local bct_file="$2" |
| + local bootstub="$3" |
| + local text_base="$4" |
| + |
| + # |
| + # First we output the boot flash configuration file. |
| + # |
| + cat ${flash_file} |
| + |
| + # |
| + # The cbootimage config file format is not yet documented. Below is |
| + # a minimal config file that merges a BCT file and bootloader; in |
| + # this case our stub U-Boot image. We do not use the Version, but it |
| + # needs to be set. |
| + # |
| + # Currently a bug in cbootimage prevents us from setting Redundancy to |
| + # 0. Redundancy controls how many instances of the BCT should be |
| + # written to the signed image. A value of 1 causes two instances to |
| + # be written. |
| + # |
| + # The BootLoader parameter specifies the bootloader image to use. It |
| + # also specifies the load address for the bootloader in RAM and the |
| + # entry point of the resulting image. For U-Boot these are the same |
| + # value (TEXT_BASE). |
| + # |
| + echo "" |
| + echo "Bctfile=${bct_file};" |
| + echo "Version=1;" |
| + echo "Redundancy=1;" |
| + echo "BootLoader=${bootstub},${text_base},${text_base},Complete;" |
| +} |
| + |
| +############################################################################### |
| + |
| +check_for_file "boot flash device config" "..." "${FLAGS_flash}" |
| +check_for_file "BCT" "........................" "${FLAGS_bct}" |
| +check_for_file "bootstub image" "............." "${FLAGS_bootstub}" |
| + |
| +check_for_tool "cbootimage" "cbootimage" |
| + |
| +if [ -z "${FLAGS_config}" ]; then |
| + config=$(mktemp -d) |
| + |
| + trap "rm -rf ${config}" EXIT |
| +else |
| + mkdir -p "${FLAGS_config}" |
|
vb
2011/02/28 23:54:44
It would be cleaner to remove the directory on exi
robotboy
2011/03/01 00:03:40
Yup, the intent here is that if you don't specify
|
| + |
| + config=${FLAGS_config} |
| +fi |
| + |
| +construct_config \ |
| + "${FLAGS_flash}" \ |
| + "${FLAGS_bct}" \ |
| + "${FLAGS_bootstub}" \ |
| + "${FLAGS_text_base}" > "${config}/boot.cfg" |
| + |
| +cbootimage "${config}/boot.cfg" "${FLAGS_output}" |