blob: c4aca1b31e57e7af0edba8fa55a7e99d135c50cc [file] [log] [blame]
# This file needs to be provided to the TFTP client when it requests the file
# "gfrg200-mfg/bootstrap".
#
# Boot strap script for manufacturing
# Phase 1:
# Pre-programmed barebox loads gfrg200-mfg/bootstrap and executes it. This
# script then turns on the red LED, upgrades the uloader and barebox, downloads
# gfrg200-mfg/pre-init and stores it in /env/bin/pre-init.
#
# Phase 1.5:
# New barebox boots up and executes /env/bin/pre-init which downloads and
# executes gfrg200-mfg/flash_image
#
# Phase 2:
# flash_image downloads and flashes the kernel and rootfs. It finally wipes the
# env partition to remove /env/bin/pre-init.
#
echo "+++++++++++++++++++++++++++++++++++++++++"
echo "Manufacturing bootstrap script -- Phase 1"
echo " - Upgrading uloader and bootloader"
echo "+++++++++++++++++++++++++++++++++++++++++"
# Turn on red LED
mw 0x90470000 0x0800e000
nor_parts="128k(uloader)ro,512k(loader0)ro,512k(loader1)ro,128k(env),2M(hnvram),8M(kernel),8M(initrd)"
nor_device="comcertoflash.0"
delpart /dev/nor0.*
addpart /dev/nor0 $nor_parts
# Download helper script
tftp gfrg200-mfg/failure || reset
# Download and store a script named pre-init in /env/bin/.
# This script will download and flash the kernel and rootfs on the next reboot.
# How this works: The new boot loader will check for /env/bin/pre-init. If this
# file exist, it will execute it before it attempts to boot into Linux.
[ -d /env/bin ] || mkdir -p /env/bin
tftp gfrg200-mfg/pre-init /env/bin/pre-init || /failure || exit 1
saveenv || /failure || exit 1
echo "Upgrading uloader and boot loader"
tftp gfrg200-mfg/uloader.bin || /failure || exit 1
crc32 -f uloader.bin -v 0xe3a10461 || /failure || exit 1
tftp gfrg200-mfg/barebox.bin || /failure || exit 1
crc32 -f barebox.bin -v 0x9f6302df || /failure || exit 1
# The hush shell does not support functions which is why we have to duplicate
# code here.
erase /dev/nor0.uloader || /failure || exit 1
cp uloader.bin /dev/nor0.uloader || /failure || exit 1
crc32 -f uloader.bin -F /dev/nor0.uloader || /failure || exit 1
erase /dev/nor0.loader0 || /failure || exit 1
cp barebox.bin /dev/nor0.loader0 || /failure || exit 1
crc32 -f barebox.bin -F /dev/nor0.loader0 || /failure || exit 1
erase /dev/nor0.loader1 || /failure || exit 1
cp barebox.bin /dev/nor0.loader1 || /failure || exit 1
crc32 -f barebox.bin -F /dev/nor0.loader1 || /failure || exit 1
reset || /failure || exit 1