[coreboot] New patch to review for coreboot: 41b3717 armv7: Add temporary build script for CrOS devs

David Hendricks (dhendrix@chromium.org) gerrit at coreboot.org
Fri Jan 11 00:12:27 CET 2013


David Hendricks (dhendrix at chromium.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/2134

-gerrit

commit 41b3717b980ca7ba480dbf7019389e64a7280ecb
Author: David Hendricks <dhendrix at chromium.org>
Date:   Thu Jan 10 15:07:59 2013 -0800

    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 at chromium.org>
    Signed-off-by: David Hendricks <dhendrix at chromium.org>
---
 cros/build | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 82 insertions(+)

diff --git a/cros/build b/cros/build
new file mode 100755
index 0000000..13f7d92
--- /dev/null
+++ b/cros/build
@@ -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 "$@"



More information about the coreboot mailing list