CHIP-tools/chip-update-firmware.sh

126 lines
2.6 KiB
Bash
Raw Normal View History

#!/bin/bash
SCRIPTDIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
source $SCRIPTDIR/common.sh
2016-10-27 18:40:12 -04:00
DL_DIR=".dl"
IMAGESDIR=".new/firmware/images"
2016-06-23 22:44:39 -04:00
DL_URL="http://opensource.nextthing.co/chip/images"
2016-10-27 18:40:12 -04:00
FLAVOR=server
2015-12-29 18:37:48 -05:00
BRANCH=stable
2015-09-12 20:16:25 -04:00
2016-10-27 18:40:12 -04:00
PROBES=(spl-40000-1000-100.bin
spl-400000-4000-500.bin
spl-400000-4000-680.bin
sunxi-spl.bin
u-boot-dtb.bin
uboot-40000.bin
uboot-400000.bin)
UBI_PREFIX="chip"
UBI_SUFFIX="ubi.sparse"
UBI_TYPE="400000-4000"
while getopts "sgpbhB:" opt; do
case $opt in
2016-06-23 22:44:39 -04:00
s)
echo "server selected"
2016-10-27 18:40:12 -04:00
FLAVOR=server
;;
2016-10-27 18:40:12 -04:00
g)
echo "gui selected"
FLAVOR=gui
2015-09-12 20:16:25 -04:00
;;
p)
2016-06-23 22:44:39 -04:00
echo "pocketchip selected"
2016-10-27 18:40:12 -04:00
FLAVOR=pocketchip
2016-06-23 22:44:39 -04:00
;;
b)
2016-10-27 18:40:12 -04:00
echo "buildroot selected"
FLAVOR=buildroot
;;
B)
2016-06-23 22:44:39 -04:00
BRANCH="$OPTARG"
echo "${BRANCH} branch selected"
;;
2016-10-27 18:40:12 -04:00
h)
echo ""
echo "Help"
echo ""
echo " -s -- Server [Debian + Headless]"
echo " -g -- GUI [Debian + XFCE]"
echo " -p -- PocketCHIP"
echo " -b -- Buildroot"
echo " -B -- Branch(optional) [eg. -B testing]"
echo ""
echo ""
exit 0
;;
\?)
echo "Invalid option: -$OPTARG" >&2
exit 1
;;
esac
done
2016-06-23 22:44:39 -04:00
function require_directory {
if [[ ! -d "${1}" ]]; then
mkdir -p "${1}"
fi
}
2016-10-27 18:40:12 -04:00
function dl_probe {
2016-06-23 22:44:39 -04:00
CACHENUM=$(curl $DL_URL/$BRANCH/$FLAVOR/latest)
2016-10-27 18:40:12 -04:00
if [[ ! -d "$DL_DIR/$BRANCH-$FLAVOR-b${CACHENUM}" ]]; then
2016-06-23 22:44:39 -04:00
echo "New image available"
2016-10-27 18:40:12 -04:00
rm -rf $DL_DIR/$BRANCH-$FLAVOR*
mkdir -p $DL_DIR/${BRANCH}-${FLAVOR}-b${CACHENUM}
pushd $DL_DIR/${BRANCH}-${FLAVOR}-b${CACHENUM}
2016-06-23 22:44:39 -04:00
echo "Downloading.."
2016-10-27 18:40:12 -04:00
for FILE in ${PROBES[@]}; do
if ! wget $DL_URL/$BRANCH/$FLAVOR/${CACHENUM}/$FILE; then
echo "download of $BRANCH-$FLAVOR-$METHOD-b${CACHENUM} failed!"
exit $?
fi
done
popd
else
echo "Cached probe files located"
fi
echo "Staging for NAND probe"
ln -s ../../$DL_DIR/${BRANCH}-${FLAVOR}-b${CACHENUM}/ $IMAGESDIR
rm ${IMAGESDIR}/ubi_type
detect_nand
if [[ ! -f "$DL_DIR/$BRANCH-$FLAVOR-b${CACHENUM}/$UBI_PREFIX-$UBI_TYPE.$UBI_SUFFIX" ]]; then
echo "Downloading new UBI, this will be cached for future flashes."
pushd $DL_DIR/${BRANCH}-${FLAVOR}-b${CACHENUM}
if ! wget $DL_URL/$BRANCH/$FLAVOR/${CACHENUM}/$UBI_PREFIX-$UBI_TYPE.$UBI_SUFFIX; then
2016-06-23 22:44:39 -04:00
echo "download of $BRANCH-$FLAVOR-$METHOD-b${CACHENUM} failed!"
exit $?
fi
popd
else
2016-10-27 18:40:12 -04:00
echo "Cached UBI located"
2016-06-23 22:44:39 -04:00
fi
}
2016-10-27 18:40:12 -04:00
echo == preparing images ==
require_directory "$IMAGESDIR"
rm -rf ${IMAGESDIR}
require_directory "$DL_DIR"
dl_probe
2015-10-21 17:26:59 -04:00
2016-10-27 18:40:12 -04:00
flash_images
rm ${IMAGESDIR}/ubi_type
2015-10-21 17:26:59 -04:00
ready_to_roll