From ffc393b1721afc8e679fb0f22a9b05b17a6f7181 Mon Sep 17 00:00:00 2001 From: pitts-mo Date: Thu, 6 Mar 2025 19:49:15 -0500 Subject: [PATCH 1/6] Prevent update from bricking goggle --- mkapp/app/script/update_goggle.sh | 76 ++++++++++++++++----- mkapp/app/script/write_flashes.sh | 107 +++++++++++++++++++++--------- 2 files changed, 137 insertions(+), 46 deletions(-) diff --git a/mkapp/app/script/update_goggle.sh b/mkapp/app/script/update_goggle.sh index ee98c634..0c101be1 100755 --- a/mkapp/app/script/update_goggle.sh +++ b/mkapp/app/script/update_goggle.sh @@ -22,8 +22,41 @@ gpio_export() echo "258">/sys/class/gpio/export echo "out">/sys/class/gpio/gpio258/direction fi + if [ ! -f /sys/class/gpio/gpio131/direction ] + then + echo "131">/sys/class/gpio/export + echo "out">/sys/class/gpio/gpio131/direction + fi } +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 +} + + +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 +} + + gpio_set_reset() { echo "0">/sys/class/gpio/gpio224/value @@ -68,6 +101,23 @@ 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 +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() { @@ -76,12 +126,13 @@ update_rx() 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 @@ -96,9 +147,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 +174,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 +188,3 @@ else echo "repeat" fi fi - diff --git a/mkapp/app/script/write_flashes.sh b/mkapp/app/script/write_flashes.sh index b337cf9f..7fbd2ad5 100755 --- a/mkapp/app/script/write_flashes.sh +++ b/mkapp/app/script/write_flashes.sh @@ -2,14 +2,28 @@ 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 - echo "out">/sys/class/gpio/gpio228/direction - echo "out">/sys/class/gpio/gpio131/direction - echo "out">/sys/class/gpio/gpio258/direction + if [ ! -f /sys/class/gpio/gpio224/direction ] + then + echo "224">/sys/class/gpio/export + echo "out">/sys/class/gpio/gpio224/direction + fi + + if [ ! -f /sys/class/gpio/gpio228/direction ] + then + echo "228">/sys/class/gpio/export + echo "out">/sys/class/gpio/gpio228/direction + fi + + if [ ! -f /sys/class/gpio/gpio258/direction ] + then + echo "258">/sys/class/gpio/export + echo "out">/sys/class/gpio/gpio258/direction + fi + if [ ! -f /sys/class/gpio/gpio131/direction ] + then + echo "131">/sys/class/gpio/export + echo "out">/sys/class/gpio/gpio131/direction + fi } function beep_on() @@ -29,6 +43,34 @@ function beep() echo "0">/sys/class/gpio/gpio131/value } +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 +} + + +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,6 +100,25 @@ 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 +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 +} + + + echo "<<<<-------------------------------------------------------------------->>>>" @@ -73,8 +134,9 @@ then touch /tmp/update.ing - mtd_debug erase /dev/mtd10 0 16777216 - mtd_debug write /dev/mtd10 0 $filesize2 /mnt/extsd/HDZGOGGLE_VA.bin + # check_mtd_write /dev/mtd8 16M 16777216 $filesize2 ${TMP_DIR}/HDZGOGGLE_VA.bin + # check_mtd_write /dev/mtd9 16M 16777216 $filesize2 ${TMP_DIR}/HDZGOGGLE_VA.bin + check_mtd_write /dev/mtd10 16M 16777216 $filesize2 ${TMP_DIR}/HDZGOGGLE_VA.bin rm /tmp/update.ing -rf if [ ! -f /mnt/extsd/DONOTREMOVE.txt ] @@ -100,26 +162,9 @@ then 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 + check_mtd_write /dev/mtd8 1M 65536 $filesize ${TMP_DIR}/HDZGOGGLE_RX.bin + check_mtd_write /dev/mtd9 1M 65536 $filesize ${TMP_DIR}/HDZGOGGLE_RX.bin + # check_mtd_write /dev/mtd10 1M 65536 $filesize ${TMP_DIR}/HDZGOGGLE_RX.bin if [ ! -f /mnt/extsd/DONOTREMOVE.txt ] then @@ -136,4 +181,4 @@ else echo "no update file,skip" fi -echo "<<<<-------------------------------------------------------------------->>>>" +echo "<<<<-------------------------------------------------------------------->>>>" \ No newline at end of file From 07dcd6e16c086ccab59d62bdc29ca5ee0fb4b637 Mon Sep 17 00:00:00 2001 From: pitts-mo Date: Sun, 9 Mar 2025 06:38:39 -0400 Subject: [PATCH 2/6] Update update_goggle.sh -always set gpio directions Moved setting of gpio direction out of export condition to clear potentially conflicting prior states. --- mkapp/app/script/update_goggle.sh | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/mkapp/app/script/update_goggle.sh b/mkapp/app/script/update_goggle.sh index 0c101be1..51f088bb 100755 --- a/mkapp/app/script/update_goggle.sh +++ b/mkapp/app/script/update_goggle.sh @@ -8,25 +8,23 @@ 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 - if [ ! -f /sys/class/gpio/gpio131/direction ] + echo "out">/sys/class/gpio/gpio258/direction + if [ ! -f /sys/class/gpio/gpio131/direction ] then echo "131">/sys/class/gpio/export - echo "out">/sys/class/gpio/gpio131/direction fi + echo "out">/sys/class/gpio/gpio131/direction } beep_success() From cbcace8d1711803ca9ae934b46c1217109515ae4 Mon Sep 17 00:00:00 2001 From: pitts-mo Date: Sun, 9 Mar 2025 06:40:21 -0400 Subject: [PATCH 3/6] Update write_flashes.sh -always set gpio directions Moved setting of gpio direction out of export condition to clear potentially conflicting prior states. --- mkapp/app/script/write_flashes.sh | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/mkapp/app/script/write_flashes.sh b/mkapp/app/script/write_flashes.sh index 7fbd2ad5..b03767d1 100755 --- a/mkapp/app/script/write_flashes.sh +++ b/mkapp/app/script/write_flashes.sh @@ -5,25 +5,23 @@ 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 - if [ ! -f /sys/class/gpio/gpio131/direction ] + echo "out">/sys/class/gpio/gpio258/direction + if [ ! -f /sys/class/gpio/gpio131/direction ] then echo "131">/sys/class/gpio/export - echo "out">/sys/class/gpio/gpio131/direction fi + echo "out">/sys/class/gpio/gpio131/direction } function beep_on() @@ -181,4 +179,4 @@ else echo "no update file,skip" fi -echo "<<<<-------------------------------------------------------------------->>>>" \ No newline at end of file +echo "<<<<-------------------------------------------------------------------->>>>" From e54b87ebe5f7b09baa3a486276d55f1c7967fe81 Mon Sep 17 00:00:00 2001 From: pitts-mo Date: Mon, 10 Mar 2025 18:33:51 -0400 Subject: [PATCH 4/6] Update write_flashes.sh -fix path and persist .bin after failure -fixed the .bin paths -count 1 VA update before removal of VA.bin -count 2 RX updates before removal of RX.bin -Added notes for normal VA / RX mount points --- mkapp/app/script/write_flashes.sh | 70 ++++++++++++++++++++----------- 1 file changed, 45 insertions(+), 25 deletions(-) diff --git a/mkapp/app/script/write_flashes.sh b/mkapp/app/script/write_flashes.sh index b03767d1..5878b6df 100755 --- a/mkapp/app/script/write_flashes.sh +++ b/mkapp/app/script/write_flashes.sh @@ -1,5 +1,12 @@ #!/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() { if [ ! -f /sys/class/gpio/gpio224/direction ] @@ -41,7 +48,7 @@ function beep() echo "0">/sys/class/gpio/gpio131/value } -beep_success() +function beep_success() { echo "1">/sys/class/gpio/gpio131/value sleep 0.1 @@ -53,7 +60,7 @@ beep_success() } -beep_failure() +function beep_failure() { echo "1">/sys/class/gpio/gpio131/value sleep 1 @@ -108,7 +115,15 @@ check_mtd_write() echo "$1 size is ($2)" mtd_debug erase $1 0 $3 mtd_debug write $1 0 $4 $5 - beep_success + 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 @@ -120,10 +135,10 @@ check_mtd_write() 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 @@ -132,51 +147,56 @@ then touch /tmp/update.ing - # check_mtd_write /dev/mtd8 16M 16777216 $filesize2 ${TMP_DIR}/HDZGOGGLE_VA.bin - # check_mtd_write /dev/mtd9 16M 16777216 $filesize2 ${TMP_DIR}/HDZGOGGLE_VA.bin - check_mtd_write /dev/mtd10 16M 16777216 $filesize2 ${TMP_DIR}/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 - - check_mtd_write /dev/mtd8 1M 65536 $filesize ${TMP_DIR}/HDZGOGGLE_RX.bin - check_mtd_write /dev/mtd9 1M 65536 $filesize ${TMP_DIR}/HDZGOGGLE_RX.bin - # check_mtd_write /dev/mtd10 1M 65536 $filesize ${TMP_DIR}/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 "<<<<-------------------------------------------------------------------->>>>" From 5b0a111807da805702bd9e015a8dc92b8b74024d Mon Sep 17 00:00:00 2001 From: pitts-mo Date: Mon, 10 Mar 2025 18:36:18 -0400 Subject: [PATCH 5/6] Update update_goggle.sh -prefix functions --- mkapp/app/script/update_goggle.sh | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/mkapp/app/script/update_goggle.sh b/mkapp/app/script/update_goggle.sh index 51f088bb..196a2833 100755 --- a/mkapp/app/script/update_goggle.sh +++ b/mkapp/app/script/update_goggle.sh @@ -3,7 +3,7 @@ GOGGLE_BIN="$1" TMP_DIR=/tmp/goggle_update -gpio_export() +function gpio_export() { if [ ! -f /sys/class/gpio/gpio224/direction ] then @@ -27,7 +27,7 @@ gpio_export() echo "out">/sys/class/gpio/gpio131/direction } -beep_success() +function beep_success() { echo "1">/sys/class/gpio/gpio131/value sleep 0.1 @@ -39,7 +39,7 @@ beep_success() } -beep_failure() +function beep_failure() { echo "1">/sys/class/gpio/gpio131/value sleep 1 @@ -55,35 +55,35 @@ beep_failure() } -gpio_set_reset() +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" @@ -101,7 +101,7 @@ untar_file() } # eg: check_mtd_write /dev/mtdX check-size erase-size file-size bin-file -check_mtd_write() +function check_mtd_write() { mtd_info=`mtd_debug info $1` echo "$mtd_info" @@ -117,7 +117,7 @@ check_mtd_write() fi } -update_rx() +function update_rx() { echo "find RX update file, start update" filesize=`ls -l ${TMP_DIR}/HDZGOGGLE_RX*.bin| awk '{print $5}'` @@ -137,7 +137,7 @@ update_rx() 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}'` From 4699dabba77ae6fdcc7dafc1fd2cf89f157936bc Mon Sep 17 00:00:00 2001 From: pitts-mo Date: Mon, 10 Mar 2025 18:37:00 -0400 Subject: [PATCH 6/6] Update write_flashes.sh -prefix functions --- mkapp/app/script/write_flashes.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mkapp/app/script/write_flashes.sh b/mkapp/app/script/write_flashes.sh index 5878b6df..da4d41ef 100755 --- a/mkapp/app/script/write_flashes.sh +++ b/mkapp/app/script/write_flashes.sh @@ -106,7 +106,7 @@ function gpio_set_send() } # eg: check_mtd_write /dev/mtdX check-size erase-size file-size bin-file -check_mtd_write() +function check_mtd_write() { mtd_info=`mtd_debug info $1` echo "$mtd_info"