summaryrefslogtreecommitdiffstats
path: root/defaultenv/defaultenv-1/bin/update
diff options
context:
space:
mode:
Diffstat (limited to 'defaultenv/defaultenv-1/bin/update')
-rw-r--r--defaultenv/defaultenv-1/bin/update82
1 files changed, 82 insertions, 0 deletions
diff --git a/defaultenv/defaultenv-1/bin/update b/defaultenv/defaultenv-1/bin/update
new file mode 100644
index 0000000000..1578789a56
--- /dev/null
+++ b/defaultenv/defaultenv-1/bin/update
@@ -0,0 +1,82 @@
+#!/bin/sh
+
+type=""
+device_type=""
+check=n
+mode=tftp
+
+. /env/config
+
+while getopt "ht:d:f:m:c" Option
+do
+if [ ${Option} = t ]; then
+ type=${OPTARG}
+elif [ ${Option} = d ]; then
+ device_type=${OPTARG}
+elif [ ${Option} = f ]; then
+ imagename=${OPTARG}
+elif [ ${Option} = c ]; then
+ check=y
+elif [ ${Option} = m ]; then
+ mode=${OPTARG}
+else
+ . /env/bin/_update_help
+ exit 0
+fi
+done
+
+if [ x${type} = xkernel ]; then
+ image=$kernelimage
+ disk_part=$kernel_part
+elif [ x${type} = xrootfs ]; then
+ image=$rootfsimage
+ type=root
+elif [ x${type} = xbarebox ]; then
+ image=$bareboximage
+ if [ -z ${image} ]; then
+ image=barebox.bin
+ fi
+elif [ x${type} = xoftree ]; then
+ image=$oftreeimage
+ if [ -z ${image} ]; then
+ image=oftree.bin
+ fi
+elif [ x${type} = xbareboxenv ]; then
+ image=$bareboxenvimage
+ if [ -z ${image} ]; then
+ image=bareboxenv.bin
+ fi
+elif [ x${type} = xxload ]; then
+ image=$xloadimage
+else
+ . /env/bin/_update_help
+ exit 1
+fi
+
+if [ -n ${imagename} ]; then
+ image=${imagename}
+fi
+
+if [ x${device_type} = xnand ]; then
+ part=/dev/nand0.${type}.bb
+elif [ x${device_type} = xnor ]; then
+ part=/dev/nor0.${type}
+elif [ x${device_type} = xdisk ]; then
+ part=/dev/${disk_part}
+else
+ . /env/bin/_update_help
+ exit 1
+fi
+
+if [ x${mode} != xtftp -a x${mode} != xxmodem -a x${mode} != xnfs ]; then
+ echo "unsupported mode ${mode}."
+ . /env/bin/_update_help
+ exit 1
+fi
+
+. /env/bin/_update || exit 1
+if [ x${check} = xy ]; then
+ crc32 -f $image -F $part
+else
+ true
+fi