zaurus-updater: revert tosa one to standard working one
authorMarcin Juszkiewicz <hrw@openembedded.org>
Wed, 31 Oct 2007 10:37:03 +0000 (10:37 +0000)
committerMarcin Juszkiewicz <hrw@openembedded.org>
Wed, 31 Oct 2007 10:37:03 +0000 (10:37 +0000)
packages/zaurus-updater/tosa/updater.sh
packages/zaurus-updater/zaurus-updater.bb

index 1d4030a..6d30aba 100644 (file)
@@ -1,27 +1,11 @@
 #!/bin/sh
 
-#
-# One updater.sh to rule them all
-#
-# 2006.10.24 Marcin 'Hrw' Juszkiewicz
-# 2007.10.08 Marcin 'Hrw' Juszkiewicz
-# - do not allow to flash files bigger then partition size
-# - created functions for common stuff
-#
-# Totally untested!!!
-# 
-
-/bin/sh
 
 DATAPATH=$1
-
 TMPPATH=/tmp/update
 TMPDATA=$TMPPATH/tmpdata.bin
 TMPHEAD=$TMPPATH/tmphead.bin
 
-FLASHED_KERNEL=0
-FLASHED_ROOTFS=0
-UNPACKED_ROOTFS=0   # spitz only
 
 RO_MTD_LINE=`cat /proc/mtd | grep "root" | tail -n 1`
 if [ "$RO_MTD_LINE" = "" ]; then
@@ -30,6 +14,18 @@ fi
 RO_MTD_NO=`echo $RO_MTD_LINE | cut -d: -f1 | cut -dd -f2`
 RO_MTD_SIZE_HEX=`echo $RO_MTD_LINE | cut -d" " -f2`
 RO_MTD=/dev/mtd$RO_MTD_NO
+RO_MTDBLK=/dev/mtdblock$RO_MTD_NO
+RO_MTD_SIZE=`dc 0x$RO_MTD_SIZE_HEX 1024 /`
+
+RW_MTD_LINE=`cat /proc/mtd | grep "home" | tail -n 1`
+if [ "$RW_MTD_LINE" = "" ]; then
+    RW_MTD_LINE=`cat /proc/mtd | grep "\<NAND\>.*\<2\>" | tail -n 1`
+fi
+RW_MTD_NO=`echo $RW_MTD_LINE | cut -d: -f1 | cut -dd -f2`
+RW_MTD_SIZE_HEX=`echo $RW_MTD_LINE | cut -d" " -f2`
+RW_MTD=/dev/mtd$RW_MTD_NO
+RW_MTDBLK=/dev/mtdblock$RW_MTD_NO
+RW_MTD_SIZE=`dc 0x$RW_MTD_SIZE_HEX 1024 /`
 
 LOGOCAL_MTD=/dev/mtd1
 
@@ -38,326 +34,208 @@ MVRBLOCK=0x70000
 
 RESULT=0
 
-Cleanup()
-{
-    rm -f $VTMPNAME > /dev/null 2>&1
-    rm -f $MTMPNAME > /dev/null 2>&1
-    exit $1
+Cleanup(){
+       rm -f $VTMPNAME > /dev/null 2>&1
+       rm -f $MTMPNAME > /dev/null 2>&1
+       rm $CTRLPATH/* > /dev/null 2>&1
+       rm $DATAPATH/* > /dev/null 2>&1
+       exit $1
 }
-
 trap 'Cleanup 1' 1 15
 trap '' 2 3
 
-get_dev_pcmcia()
-{
-    while read SOCKET CLASS DRIVER INSTANCE DEVS MAJOR MINOR;
-    do
-        echo $DEVS
-    done
-}
-
-get_dev_pcmcia_slot()
-{
-    grep "^$1" /var/lib/pcmcia/stab | get_dev_pcmcia
-}
-
-check_for_hdd()
-{
-    IDE1=`get_dev_pcmcia_slot 1`
-    if [ "$IDE1" = "" ]; then
-        echo "Error!! There is no microdrive. Retrying..."
-        while [ "$IDE1" = "" ]; do
-            IDE1=`get_dev_pcmcia_slot 1`
-        done
-        echo "Microdrive found."
-    fi
-
-    LINUXFMT=ext3
-    MKE2FSOPT=-j
-}
-
-check_for_tar()
-{
-    ### Check that we have a valid tar
-    for TARNAME in gnu-tar GNU-TAR
-    do
-        if [ -e $DATAPATH/$TARNAME ]
-        then
-            TARBIN=$DATAPATH/$TARNAME
-        fi
-    done
-
-    if [ ! -e $TARBIN ]; then
-        echo 'ERRROR: Please place a valid copy of tar as "gnu-tar" on your card.'
-        echo 'Please reset'
-        while true
-        do
-        done
-    fi
-}
-
-do_rootfs_extraction()
-{
-    UNPACKED_ROOTFS=1
-    echo 'HDD root file system'
-    if [ ! -f /hdd1/NotAvailable ]; then
-       umount /hdd1
-    fi
-    echo 'Now formatting...'
-    mke2fs $MKE2FSOPT /dev/${IDE1}1 > /dev/null 2>&1
-    e2fsck -p /dev/${IDE1}1 > /dev/null
-    if [ "$?" != "0" ]; then
-       echo "ERROR: Unable to create filesystem on microdrive!"
-       exit "$?"
-    fi
-
-    mount -t $LINUXFMT -o noatime /dev/${IDE1}1 /hdd1
-    if [ "$?" != "0" ]; then
-       echo "ERROR: Unable to mount microdrive!"
-       exit "$?"
-    fi
-
-    cd /hdd1
-    echo 'Now extracting...'
-    gzip -dc $DATAPATH/$TARGETFILE | $TARBIN xf -
-    if [ "$?" != "0" ]; then
-       echo "ERROR: Unable to extract root filesystem archive!"
-       exit "$?"
-    fi
-
-    echo 'Done.'
-
-    # remount as RO
-    cd /
-    umount /hdd1
-    mount -t $LINUXFMT -o ro,noatime /dev/${IDE1}1 /hdd1
-}
-
-do_flashing()
-{
-    if [ $DATASIZE > $MTD_PART_SIZE ]
-    then
-       echo "ERROR: File is too big to flash!"
-       return
-    fi
-
-    if [ $ISFORMATTED = 0 ]
-    then
-       echo -n 'Flash erasing...'
-       /sbin/eraseall $TARGET_MTD > /dev/null 2>&1
-       echo 'done'
-       ISFORMATTED=1
-    fi
-
-    echo ''
-    echo '0%                   100%'
-    PROGSTEP=`expr $DATASIZE / $ONESIZE + 1`
-    PROGSTEP=`expr 25 / $PROGSTEP`
-    if [ $PROGSTEP = 0 ]
-    then
-       PROGSTEP=1
-    fi
-
-    if [ -e $TMPHEAD ]
-    then
-       VTMPNAME=$TMPPATH'/vtmp'`date '+%s'`'.tmp'
-       MTMPNAME=$TMPPATH'/mtmp'`date '+%s'`'.tmp'
-       /sbin/nandlogical $LOGOCAL_MTD READ $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1
-       /sbin/nandlogical $LOGOCAL_MTD READ $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1
-
-       /sbin/verchg -v $VTMPNAME $TMPHEAD $MODULEID $MTD_PART_SIZE > /dev/null 2>&1
-       /sbin/verchg -m $MTMPNAME $TMPHEAD $MODULEID $MTD_PART_SIZE > /dev/null 2>&1
-    fi
-
-    #loop
-    while [ $DATAPOS -lt $DATASIZE ]
-    do
-       #data create
-       bcut -a $DATAPOS -s $ONESIZE -o $TMPDATA $TARGETFILE
-       TMPSIZE=`wc -c $TMPDATA`
-       TMPSIZE=`echo $TMPSIZE | cut -d' ' -f1`
-       DATAPOS=`expr $DATAPOS + $TMPSIZE`
-
-       #handle data file
-       if [ $ISLOGICAL = 0 ]
-       then
-           next_addr=`/sbin/nandcp -a $ADDR $TMPDATA $TARGET_MTD  2>/dev/null | fgrep "mtd address" | cut -d- -f2 | cut -d\( -f1`
-           if [ "$next_addr" = "" ]; then
-               echo "ERROR: flash write"
-               rm $TMPDATA > /dev/null 2>&1
-               RESULT=3
-               break;
-           fi
-           ADDR=$next_addr
-       else
-           /sbin/nandlogical $LOGOCAL_MTD WRITE $ADDR $DATASIZE $TMPDATA > /dev/null 2>&1
-           ADDR=`expr $ADDR + $TMPSIZE`
-       fi
-
-       rm $TMPDATA > /dev/null 2>&1
-
-       #progress
-       SPNUM=0
-       while [ $SPNUM -lt $PROGSTEP ]
-       do
-           echo -n '.'
-           SPNUM=`expr $SPNUM + 1`
-       done
-    done
-
-    echo ''
-
-    #finish
-    rm -f $TMPPATH/*.bin > /dev/null 2>&1
-
-    if [ $RESULT = 0 ]
-    then
-       if [ -e $VTMPNAME ]
-       then
-           /sbin/nandlogical $LOGOCAL_MTD WRITE $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1
-           rm -f $VTMPNAME > /dev/null 2>&1
-       fi
-       if [ -e $MTMPNAME ]
-       then
-           /sbin/nandlogical $LOGOCAL_MTD WRITE $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1
-           rm -f $MTMPNAME > /dev/null 2>&1
-       fi
-       echo 'Done.'
-    else
-       echo 'Error!'
-    fi
-}
 
 ### Check model ###
 /sbin/writerominfo
 MODEL=`cat /proc/deviceinfo/product`
-case "$MODEL" in
-    SL-B500|SL-5600) 
-        ZAURUS='poodle'
-        ROOTFS_SIZE=0x1600000
-        ;;
-    SL-6000)
-        ZAURUS='tosa'
-        ROOTFS_SIZE=0x1E00000
-        ;;
-    SL-C1000) 
-        ZAURUS='akita'
-        ROOTFS_SIZE=0x1900000
-        ;;
-    SL-C700|SL-C750|SL-C760|SL-C860|SL-7500)
-        ZAURUS='c7x0'
-        ROOTFS_SIZE=0x1900000
-        ;;
-    SL-C3000|SL-C3100|SL-C3200)
-        ZAURUS='c3x00'
-        ROOTFS_SIZE=0x0500000
-        check_for_hdd
-        check_for_tar
-        ;;
-    *)
-        echo 'MODEL: '$MODEL 'is unsupported'
-        echo ''
-        echo 'Please reset'
-        while true
-        do
-        done
-        ;;
-esac
-
-echo 'MODEL: '$MODEL' ('$ZAURUS')'
+if [ "$MODEL" != "SL-6000" ] > /dev/null 2>&1
+then
+       echo 'MODEL:'$MODEL
+       echo 'ERROR:Invalid model!'
+       echo 'Please reset'
+       while true
+       do
+       done
+fi
 
 mkdir -p $TMPPATH > /dev/null 2>&1
 
 cd $DATAPATH/
 
-for TARGETFILE in zimage zImage zImage.bin zimage.bin ZIMAGE ZIMAGE.BIN initrd.bin INITRD.BIN hdimage1.tgz HDIMAGE1.TGZ
-do
-    if [ ! -e $TARGETFILE ]
-    then
-       continue
-    done
-
-    rm -f $TMPPATH/*.bin > /dev/null 2>&1
-    DATASIZE=`wc -c $TARGETFILE`
-    DATASIZE=`echo $DATASIZE | cut -d' ' -f1`
-
-    # make TARGETFILE lowercase
-    TARGETFILE=`echo $TERGETFILE|tr A-Z a-z`
-
-    case "$TARGETFILE" in
-
-    zimage|zimage.bin)
-        if [ $FLASHED_KERNEL != 0 ]
-        then
-            continue
-        fi
-        echo 'kernel'
-        FLASHED_KERNEL=1
-        ISLOGICAL=1
-        MODULEID=5
-        MTD_PART_SIZE=0x13C000
-        ADDR=`dc 0xE0000`
-        ISFORMATTED=1
-        DATAPOS=0
-        ONESIZE=524288
-        HDTOP=`expr $DATASIZE - 16`
-        /sbin/bcut -a $HDTOP -s 16 -o $TMPHEAD $TARGETFILE
-        do_flashing
-        ;;
-
-    initrd.bin)
-        if [ $FLASHED_ROOTFS != 0 ]
-        then
-            continue
-        fi
-        echo 'root file system'
-        FLASHED_ROOTFS=1
-        ISLOGICAL=0
-        MODULEID=6
-        MTD_PART_SIZE=$ROOTFS_SIZE
-        ADDR=0
-        ISFORMATTED=0
-        TARGET_MTD=$RO_MTD
-        DATAPOS=0
-        ONESIZE=1048576
-        DATAPOS=16
-        /sbin/bcut -s 16 -o $TMPHEAD $TARGETFILE
-        do_flashing
-        ;;
-
-    hdimage1.tgz)
-        if [ $UNPACKED_ROOTFS = 0 ]
-        then
-       do_rootfs_extraction
-        fi
-        ;;
+if [ -e consolescroll ]
+then
+       ./consolescroll
+fi
 
-    *)
-        ;;
-    esac
+for TARGETFILE in zImage zImage.bin zimage.bin ZIMAGE ZIMAGE.BIN initrd.bin INITRD.BIN mversion.bin MVERSION.BIN
+do
+       if [ -e $TARGETFILE ]
+       then
+               rm -f $TMPPATH/*.bin > /dev/null 2>&1
+               DATASIZE=`wc -c $TARGETFILE`
+               DATASIZE=`echo $DATASIZE | cut -d' ' -f1`
+
+               #echo $TARGETFILE':'$DATASIZE'bytes'
+               TARGETTYPE=Invalid
+               case "$TARGETFILE" in
+               zImage) TARGETTYPE=Kernel;;
+               zimage.bin) TARGETTYPE=Kernel;;
+               ZIMAGE) TARGETTYPE=Kernel;;
+               initrd.bin) TARGETTYPE=RoFs;;
+               INITRD.BIN) TARGETTYPE=RoFs;;
+               mversion.bin) TARGETTYPE=MasterVer;;
+               MVERSION.BIN) TARGETTYPE=MasterVer;;
+               *)
+                       continue
+                       ;;
+               esac
+               case "$TARGETTYPE" in
+               Kernel)
+                       echo 'kernel'
+                       ISLOGICAL=1
+                       MODULEID=5
+                       MODULESIZE=0x13C000
+                       ADDR=`dc 0xE0000`
+                       ISFORMATTED=1
+                       DATAPOS=0
+                       ONESIZE=524288
+                       HDTOP=`expr $DATASIZE - 16`
+                       /sbin/bcut -a $HDTOP -s 16 -o $TMPHEAD $TARGETFILE
+                       ;;
+               RoFs)
+                       echo 'RO file system'
+                       ISLOGICAL=0
+                       MODULEID=6
+                       MODULESIZE=0x1E00000
+                       ADDR=0
+                       ISFORMATTED=0
+                       TARGET_MTD=$RO_MTD
+                       DATAPOS=16
+                       ONESIZE=1048576
+                       /sbin/bcut -s 16 -o $TMPHEAD $TARGETFILE
+                       ;;
+               MasterVer)
+                       echo 'Maser version'
+                       MTMPNAME=$TMPPATH'/mtmp'`date '+%s'`'.tmp'
+                       /sbin/nandlogical $LOGOCAL_MTD READ $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1
+                       /sbin/verchg -m $MTMPNAME $TARGETFILE 0 0 > /dev/null 2>&1
+                       /sbin/nandlogical $LOGOCAL_MTD WRITE $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1
+                       rm -f $MTMPNAME > /dev/null 2>&1
+                       echo 'Success!'
+                       continue
+                       ;;
+               *)
+                       continue;
+                       ;;
+               esac
+
+               #check version
+               /sbin/bcut -s 6 -o $TMPDATA $TMPHEAD
+               if [ `cat $TMPDATA` != "SHARP!" ] > /dev/null 2>&1
+               then
+                       #no version info...
+                       rm -f $TMPHEAD > /dev/null 2>&1
+                       DATAPOS=0
+               fi
+
+               #format?
+               if [ $ISFORMATTED = 0 ]
+               then
+                       echo -n 'Flash erasing...'
+                       /sbin/eraseall $TARGET_MTD 2> /dev/null > /dev/null
+                       #/sbin/eraseall $TARGET_MTD 2
+                       echo 'done'
+                       ISFORMATTED=1
+               fi
+
+               echo ''
+               echo '0%                      100%'
+               PROGSTEP=`expr $DATASIZE / $ONESIZE + 1`
+               PROGSTEP=`expr 28 / $PROGSTEP`
+               if [ $PROGSTEP = 0 ]
+               then
+                       PROGSTEP=1
+               fi
+
+               #header information
+               if [ -e $TMPHEAD ]
+               then
+                       VTMPNAME=$TMPPATH'/vtmp'`date '+%s'`'.tmp'
+                       MTMPNAME=$TMPPATH'/mtmp'`date '+%s'`'.tmp'
+                       /sbin/nandlogical $LOGOCAL_MTD READ $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1
+                       /sbin/nandlogical $LOGOCAL_MTD READ $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1
+
+                       #echo 'found header'
+                       /sbin/verchg -v $VTMPNAME $TMPHEAD $MODULEID $MODULESIZE > /dev/null 2>&1
+                       /sbin/verchg -m $MTMPNAME $TMPHEAD $MODULEID $MODULESIZE > /dev/null 2>&1
+               fi
+
+               #loop
+               while [ $DATAPOS -lt $DATASIZE ]
+               do
+                       #data create
+                       bcut -a $DATAPOS -s $ONESIZE -o $TMPDATA $TARGETFILE
+                       TMPSIZE=`wc -c $TMPDATA`
+                       TMPSIZE=`echo $TMPSIZE | cut -d' ' -f1`
+                       DATAPOS=`expr $DATAPOS + $TMPSIZE`
+
+                       #handle data file
+                       #echo 'ADDR='$ADDR
+                       #echo 'SIZE='$TMPSIZE
+                       if [ $ISLOGICAL = 0 ]
+                       then
+                               next_addr=`/sbin/nandcp -a $ADDR $TMPDATA $TARGET_MTD  2>/dev/null | fgrep "mtd address" | cut -d- -f2 | cut -d\( -f1`
+                               if [ "$next_addr" = "" ]; then
+                                       echo "ERROR:flash write"
+                                       rm $TMPDATA > /dev/null 2>&1
+                                       RESULT=3
+                                       break;
+                               fi
+                               ADDR=$next_addr
+                       else
+                               /sbin/nandlogical $LOGOCAL_MTD WRITE $ADDR $DATASIZE $TMPDATA > /dev/null 2>&1
+                               ADDR=`expr $ADDR + $TMPSIZE`
+                       fi
+
+                       rm $TMPDATA > /dev/null 2>&1
+
+                       #progress
+                       SPNUM=0
+                       while [ $SPNUM -lt $PROGSTEP ]
+                       do
+                               echo -n '.'
+                               SPNUM=`expr $SPNUM + 1`
+                       done
+               done
+
+               echo ''
+
+#finish
+               rm -f $TMPPATH/*.bin > /dev/null 2>&1
+
+               if [ $RESULT = 0 ]
+               then
+                       if [ -e $VTMPNAME ]
+                       then
+                               /sbin/nandlogical $LOGOCAL_MTD WRITE $VERBLOCK 0x4000 $VTMPNAME > /dev/null 2>&1
+                               rm -f $VTMPNAME > /dev/null 2>&1
+                       fi
+                       if [ -e $MTMPNAME ]
+                       then
+                               /sbin/nandlogical $LOGOCAL_MTD WRITE $MVRBLOCK 0x4000 $MTMPNAME > /dev/null 2>&1
+                               rm -f $MTMPNAME > /dev/null 2>&1
+                       fi
+                       echo 'Success!'
+               else
+                       echo 'Error!'
+#                      exit $RESULT
+               fi
+       fi
 done
 
-# starting shell to test -- remove this from final release
-/bin/sh
-
-# reboot
-exit 0
-
-# bcut usage: bcut [OPTION] <input file>
+#exit 0
 
-# -a: start position
-# -s: cut size
-# -o: output file
-
-# ModuleId informations used by verchg Sharp binary:
-#
-# 0 - master
-# 1 - Maintaince
-# 2 - Diagnostics
-# 3 - rescue kernel
-# 4 - rescue rootfs
-# 5 - normal kernel
-# 6 - normal rootfs
-# 7 - /home/
-# 8 - parameter (whatever it means)
-#
+echo 'Please reset'
+while true
+do
+done
index 05c7a9c..c4e0d87 100644 (file)
@@ -1,7 +1,7 @@
 DESCRIPTION = "Encrypted shellscript for the Zaurus ROM update"
 DEPENDS = "encdec-updater-native"
 LICENSE = "zaurus-updater"
-PR = "r6"
+PR = "r7"
 
 PACKAGES = ""
 PACKAGE_ARCH = "${MACHINE_ARCH}"