armv7: Add temporary build script for CrOS devs

This build script will:
- Build coreboot.rom
- Download BL1, extract and place it if necessary
- Do a partial flash via Servo, using some flashrom trickery to
  make the process fast.

This probably should not be submitted, unless the intention is to
back it out eventually.

Credit goes to Hung-Te for writing the original version.

Change-Id: Ia7a4bea6077416fc06768a5de5ee07edc973ede2
Signed-off-by: Hung-Te Lin <hungte@chromium.org>
Signed-off-by: David Hendricks <dhendrix@chromium.org>
Reviewed-on: http://review.coreboot.org/2134
Tested-by: build bot (Jenkins)
Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
This commit is contained in:
David Hendricks 2013-01-10 15:07:59 -08:00 committed by Ronald G. Minnich
parent eb5e252ce1
commit ea22796eda
1 changed files with 82 additions and 0 deletions

82
cros/build Executable file
View File

@ -0,0 +1,82 @@
#!/bin/sh
SCRIPT="$0"
SCRIPT_DIR="$(dirname "$(readlink -f "$0")")"
OUTPUT="build/coreboot.rom"
TMP_DIFF="$SCRIPT_DIR/.image-diff.bin"
FLASHROM="/usr/local/sbin/flashrom"
BL1_NAME="E5250.nbl1.bin"
BL1_PATH="3rdparty/cpu/samsung/exynos5250/"
BL1_URL="http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/exynos-pre-boot-0.0.2-r8.tbz2"
die() {
echo "$*" >&2
exit 1
}
create_diff_128k() {
local image_file="$1"
local diff_file="$2"
cp -f "$image_file" "$diff_file"
dd if=/dev/zero of=$diff_file bs=1 count=$((128*1024)) conv=notrunc
}
fast_flash_image() {
local image_file="$1"
local diff_file="$2"
dut-control spi2_buf_en:on spi2_buf_on_flex_en:on spi2_vref:pp1800
sudo ${FLASHROM} -p ft2232_spi:type=servo-v2,port=a -w "$image_file" -V \
--noverify --ignore-fmap --diff "$diff_file"
dut-control spi2_buf_en:off spi2_buf_on_flex_en:off spi2_vref:off
}
get_bl1() {
wget "${BL1_URL}" -O /tmp/bl1.tbz2
tar jxvf /tmp/bl1.tbz2
mkdir -p "${BL1_PATH}"
mv "exynos-pre-boot/firmware/${BL1_NAME}" "${BL1_PATH}"
rm -rf exynos-pre-boot
if [ ! -e "${BL1_PATH}/${BL1_NAME}" ]; then
echo "Error getting BL1"
exit 1
fi
}
merge_bl1() {
local outfile="$1"
local bl1="${BL1_PATH}/${BL1_NAME}"
if [ ! -e "$bl1" ]; then
get_bl1
fi
# use the new BL1 which supports 30KB BL2/SPL/Coreboot
local size="$(stat -c "%s" "$outfile")"
local bl1_size="$(stat -c "%s" "$bl1")"
[ "$bl1_size" = "$((0x2000))" ] || die "Incorrect BL1 input file."
dd if="$bl1" of=${outfile} conv=notrunc
}
is_servod_ready() {
ps -C servod >/dev/null 2>&1
}
main() {
make
merge_bl1 "$OUTPUT"
create_diff_128k "$OUTPUT" "$TMP_DIFF"
echo "OK: Generated image (with BL1) in $OUTPUT"
if is_servod_ready; then
echo "servod detected - flashing into device."
fast_flash_image "$OUTPUT" "$TMP_DIFF"
echo "OK: Generated and flashed 128k of image into device via servo."
else
echo "(servod is not running, flashing into device is skipped)"
fi
}
set -e
main "$@"