diff --git a/mkapp/app/script/update_goggle.sh b/mkapp/app/script/update_goggle.sh index ee98c634..196a2833 100755 --- a/mkapp/app/script/update_goggle.sh +++ b/mkapp/app/script/update_goggle.sh @@ -3,56 +3,87 @@ GOGGLE_BIN="$1" TMP_DIR=/tmp/goggle_update -gpio_export() +function gpio_export() { if [ ! -f /sys/class/gpio/gpio224/direction ] then echo "224">/sys/class/gpio/export - echo "out">/sys/class/gpio/gpio224/direction fi - + echo "out">/sys/class/gpio/gpio224/direction if [ ! -f /sys/class/gpio/gpio228/direction ] then echo "228">/sys/class/gpio/export - echo "out">/sys/class/gpio/gpio228/direction fi - + echo "out">/sys/class/gpio/gpio228/direction if [ ! -f /sys/class/gpio/gpio258/direction ] then echo "258">/sys/class/gpio/export - echo "out">/sys/class/gpio/gpio258/direction fi + echo "out">/sys/class/gpio/gpio258/direction + if [ ! -f /sys/class/gpio/gpio131/direction ] + then + echo "131">/sys/class/gpio/export + fi + echo "out">/sys/class/gpio/gpio131/direction +} + +function beep_success() +{ + echo "1">/sys/class/gpio/gpio131/value + sleep 0.1 + echo "0">/sys/class/gpio/gpio131/value + sleep 0.5 + echo "1">/sys/class/gpio/gpio131/value + sleep 0.05 + echo "0">/sys/class/gpio/gpio131/value } -gpio_set_reset() + +function beep_failure() +{ + echo "1">/sys/class/gpio/gpio131/value + sleep 1 + echo "0">/sys/class/gpio/gpio131/value + sleep 0.5 + echo "1">/sys/class/gpio/gpio131/value + sleep 1 + echo "0">/sys/class/gpio/gpio131/value + sleep 0.5 + echo "1">/sys/class/gpio/gpio131/value + sleep 0.05 + echo "0">/sys/class/gpio/gpio131/value +} + + +function gpio_set_reset() { echo "0">/sys/class/gpio/gpio224/value echo "1">/sys/class/gpio/gpio228/value } -gpio_clear_reset() +function gpio_clear_reset() { echo "1">/sys/class/gpio/gpio224/value echo "0">/sys/class/gpio/gpio228/value } -gpio_set_send() +function gpio_set_send() { echo "1">/sys/class/gpio/gpio224/value echo "0">/sys/class/gpio/gpio228/value } -disconnect_fpga_flash() +function disconnect_fpga_flash() { echo "1">/sys/class/gpio/gpio258/value } -connect_fpga_flash() +function connect_fpga_flash() { echo "0">/sys/class/gpio/gpio258/value } -untar_file() +function untar_file() { FILE_TARGET="$1" @@ -68,27 +99,45 @@ untar_file() mv ${TMP_DIR}/HDZGOGGLE_RX*.bin ${TMP_DIR}/HDZGOGGLE_RX.bin mv ${TMP_DIR}/HDZGOGGLE_VA*.bin ${TMP_DIR}/HDZGOGGLE_VA.bin } + +# eg: check_mtd_write /dev/mtdX check-size erase-size file-size bin-file +function check_mtd_write() +{ + mtd_info=`mtd_debug info $1` + echo "$mtd_info" + value=`echo "$mtd_info" | grep mtd.size | grep "($2)"` + if [ ! -z "$value" ];then + echo "$1 size is ($2)" + mtd_debug erase $1 0 $3 + mtd_debug write $1 0 $4 $5 + beep_success + else + echo "$1 size is NOT ($2) !" + beep_failure + fi +} -update_rx() +function update_rx() { echo "find RX update file, start update" filesize=`ls -l ${TMP_DIR}/HDZGOGGLE_RX*.bin| awk '{print $5}'` gpio_export gpio_set_reset insmod /mnt/app/ko/w25q128.ko - - mtd_debug erase /dev/mtd8 0 65536 - mtd_debug write /dev/mtd8 0 $filesize ${TMP_DIR}/HDZGOGGLE_RX.bin - mtd_debug erase /dev/mtd9 0 65536 - mtd_debug write /dev/mtd9 0 $filesize ${TMP_DIR}/HDZGOGGLE_RX.bin - + check_mtd_write /dev/mtd8 1M 65536 $filesize ${TMP_DIR}/HDZGOGGLE_RX.bin + echo "5" + echo "5" > /tmp/progress_goggle + sleep 1 + check_mtd_write /dev/mtd9 1M 65536 $filesize ${TMP_DIR}/HDZGOGGLE_RX.bin + echo "10" + echo "10" > /tmp/progress_goggle echo "update finish RX, running" gpio_clear_reset sleep 1 rmmod /mnt/app/ko/w25q128.ko } -update_fpga() +function update_fpga() { echo "find VA update file, start update" filesize2=`ls -l ${TMP_DIR}/HDZGOGGLE_VA*.bin| awk '{print $5}'` @@ -96,9 +145,9 @@ update_fpga() gpio_set_reset disconnect_fpga_flash insmod /mnt/app/ko/w25q128.ko - - mtd_debug erase /dev/mtd10 0 16777216 - mtd_debug write /dev/mtd10 0 $filesize2 ${TMP_DIR}/HDZGOGGLE_VA.bin + check_mtd_write /dev/mtd10 16M 16777216 $filesize2 ${TMP_DIR}/HDZGOGGLE_VA.bin + echo "45" + echo "45" > /tmp/progress_goggle echo "update finish VA, running" gpio_clear_reset sleep 1 @@ -123,12 +172,8 @@ then cp -f /mnt/app/setting.ini /mnt/UDISK/ #disable it66021 i2cset -y 3 0x49 0x10 0xff - update_rx - echo "1" - echo "1" > /tmp/progress_goggle + update_rx update_fpga - echo "45" - echo "45" > /tmp/progress_goggle hdz_upgrade_app.sh echo "100" echo "100" > /tmp/progress_goggle @@ -141,4 +186,3 @@ else echo "repeat" fi fi - diff --git a/mkapp/app/script/write_flashes.sh b/mkapp/app/script/write_flashes.sh index b337cf9f..da4d41ef 100755 --- a/mkapp/app/script/write_flashes.sh +++ b/mkapp/app/script/write_flashes.sh @@ -1,15 +1,34 @@ #!/bin/sh +VAbin=/mnt/extsd/HDZGOGGLE_VA.bin +VAcount=1 +VAwrites=0 +RXbin=/mnt/extsd/HDZGOGGLE_RX.bin +RXcount=2 +RXwrites=0 + function gpio_export() { - echo "224">/sys/class/gpio/export - echo "228">/sys/class/gpio/export - echo "131">/sys/class/gpio/export - echo "258">/sys/class/gpio/export - echo "out">/sys/class/gpio/gpio224/direction + if [ ! -f /sys/class/gpio/gpio224/direction ] + then + echo "224">/sys/class/gpio/export + fi + echo "out">/sys/class/gpio/gpio224/direction + if [ ! -f /sys/class/gpio/gpio228/direction ] + then + echo "228">/sys/class/gpio/export + fi echo "out">/sys/class/gpio/gpio228/direction + if [ ! -f /sys/class/gpio/gpio258/direction ] + then + echo "258">/sys/class/gpio/export + fi + echo "out">/sys/class/gpio/gpio258/direction + if [ ! -f /sys/class/gpio/gpio131/direction ] + then + echo "131">/sys/class/gpio/export + fi echo "out">/sys/class/gpio/gpio131/direction - echo "out">/sys/class/gpio/gpio258/direction } function beep_on() @@ -29,6 +48,34 @@ function beep() echo "0">/sys/class/gpio/gpio131/value } +function beep_success() +{ + echo "1">/sys/class/gpio/gpio131/value + sleep 0.1 + echo "0">/sys/class/gpio/gpio131/value + sleep 0.5 + echo "1">/sys/class/gpio/gpio131/value + sleep 0.05 + echo "0">/sys/class/gpio/gpio131/value +} + + +function beep_failure() +{ + echo "1">/sys/class/gpio/gpio131/value + sleep 1 + echo "0">/sys/class/gpio/gpio131/value + sleep 0.5 + echo "1">/sys/class/gpio/gpio131/value + sleep 1 + echo "0">/sys/class/gpio/gpio131/value + sleep 0.5 + echo "1">/sys/class/gpio/gpio131/value + sleep 0.05 + echo "0">/sys/class/gpio/gpio131/value +} + + function disconnect_fpga_flash() { echo "1">/sys/class/gpio/gpio258/value @@ -58,13 +105,40 @@ function gpio_set_send() echo "0">/sys/class/gpio/gpio228/value } +# eg: check_mtd_write /dev/mtdX check-size erase-size file-size bin-file +function check_mtd_write() +{ + mtd_info=`mtd_debug info $1` + echo "$mtd_info" + value=`echo "$mtd_info" | grep mtd.size | grep "($2)"` + if [ ! -z "$value" ];then + echo "$1 size is ($2)" + mtd_debug erase $1 0 $3 + mtd_debug write $1 0 $4 $5 + if [ $? == 0 ]; then + beep_success + if [ "$5" == "$VAbin" ]; then + VAwrites=$((VAwrites + 1)) + fi + if [ "$5" == "$RXbin" ]; then + RXwrites=$((RXwrites + 1)) + fi + fi + else + echo "$1 size is NOT ($2) !" + beep_failure + fi +} + + + echo "<<<<-------------------------------------------------------------------->>>>" -if [ -e /mnt/extsd/HDZGOGGLE_VA.bin ] +if [ -e $VAbin ] then echo "find VA update file, start update" - filesize2=`ls -l /mnt/extsd/HDZGOGGLE_VA.bin| awk '{print $5}'` + filesize2=`ls -l $VAbin| awk '{print $5}'` gpio_export gpio_set_reset disconnect_fpga_flash @@ -73,67 +147,56 @@ then touch /tmp/update.ing - mtd_debug erase /dev/mtd10 0 16777216 - mtd_debug write /dev/mtd10 0 $filesize2 /mnt/extsd/HDZGOGGLE_VA.bin + # normally the VA is mounted at /dev/mtd10 + # check_mtd_write /dev/mtd8 16M 16777216 $filesize2 $VAbin + # check_mtd_write /dev/mtd9 16M 16777216 $filesize2 $VAbin + check_mtd_write /dev/mtd10 16M 16777216 $filesize2 $VAbin rm /tmp/update.ing -rf - if [ ! -f /mnt/extsd/DONOTREMOVE.txt ] - then - rm /mnt/extsd/HDZGOGGLE_VA.bin -rf + if [ "$VAwrites" == "$VAcount" ]; then + if [ ! -f /mnt/extsd/DONOTREMOVE.txt ] + then + rm $VAbin -rf + fi fi - echo "update finish VA, running" + echo "update finish $VAwrites VA, running" gpio_clear_reset sleep 1 rmmod /mnt/app/ko/w25q128.ko else - echo "no update file,skip" + echo "no VA update file,skip" fi -if [ -e /mnt/extsd/HDZGOGGLE_RX.bin ] +if [ -e $RXbin ] then echo "find RX update file, start update" - filesize=`ls -l /mnt/extsd/HDZGOGGLE_RX.bin| awk '{print $5}'` + filesize=`ls -l $RXbin| awk '{print $5}'` gpio_export gpio_set_reset sleep 1 insmod /mnt/app/ko/w25q128.ko - - valude=`mtd_debug info /dev/mtd8 | grep mtd.size | grep 1M` - if [ "$valude" = "" ];then - beep_on - usleep 500 - beep_off - exit 0 - fi - - valude=`mtd_debug info /dev/mtd9 | grep mtd.size | grep 1M` - if [ "$valude" = "" ];then - beep_on - usleep 500 - beep_off - exit 0 - fi - - mtd_debug erase /dev/mtd8 0 65536 - mtd_debug write /dev/mtd8 0 $filesize /mnt/extsd/HDZGOGGLE_RX.bin - mtd_debug erase /dev/mtd9 0 65536 - mtd_debug write /dev/mtd9 0 $filesize /mnt/extsd/HDZGOGGLE_RX.bin - - if [ ! -f /mnt/extsd/DONOTREMOVE.txt ] - then - rm /mnt/extsd/HDZGOGGLE_RX.bin -rf + # normally the RX modules are mounted at /dev/mtd8 and /dev/mtd9 + check_mtd_write /dev/mtd8 1M 65536 $filesize $RXbin + check_mtd_write /dev/mtd9 1M 65536 $filesize $RXbin + # check_mtd_write /dev/mtd10 1M 65536 $filesize $RXbin + + if [ "$RXwrites" == "$RXcount" ]; then + if [ ! -f /mnt/extsd/DONOTREMOVE.txt ] + then + rm $RXbin -rf + fi fi - echo "update finish RX, running" + echo "update finish $RXwrites RX, running" gpio_clear_reset sleep 1 rmmod /mnt/app/ko/w25q128.ko beep else - echo "no update file,skip" + echo "no RX update file,skip" fi echo "<<<<-------------------------------------------------------------------->>>>"