diff options
Diffstat (limited to 'defaultenv/defaultenv-1/bin/update')
-rw-r--r-- | defaultenv/defaultenv-1/bin/update | 82 |
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 |