Skip to content
142 changes: 82 additions & 60 deletions mkapp/app/script/update_goggle.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,13 @@
GOGGLE_BIN="$1"
TMP_DIR=/tmp/goggle_update

VAbin=${TMP_DIR}/HDZGOGGLE_VA.bin
VAcount=1
VAwrites=0
RXbin=${TMP_DIR}/HDZGOGGLE_RX.bin
RXcount=2
RXwrites=0

function gpio_export()
{
if [ ! -f /sys/class/gpio/gpio224/direction ]
Expand All @@ -27,31 +34,35 @@ function gpio_export()
echo "out">/sys/class/gpio/gpio131/direction
}

function beep()
{
if [ ! -z "$1" ];then
delay=$1
else
delay=1
fi
echo "1">/sys/class/gpio/gpio131/value
sleep $delay
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
beep 0.1
sleep 0.5
beep 0.05
sleep 1
}


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
beep 1
sleep 0.5
beep 1
sleep 0.5
beep 0.05
sleep 1
}


Expand All @@ -67,12 +78,6 @@ function gpio_clear_reset()
echo "0">/sys/class/gpio/gpio228/value
}

function gpio_set_send()
{
echo "1">/sys/class/gpio/gpio224/value
echo "0">/sys/class/gpio/gpio228/value
}

function disconnect_fpga_flash()
{
echo "1">/sys/class/gpio/gpio258/value
Expand All @@ -83,6 +88,46 @@ function connect_fpga_flash()
echo "0">/sys/class/gpio/gpio258/value
}

function gpio_set_reset()
{
echo "0">/sys/class/gpio/gpio224/value
echo "1">/sys/class/gpio/gpio228/value
}

function gpio_clear_reset()
{
echo "1">/sys/class/gpio/gpio224/value
echo "0">/sys/class/gpio/gpio228/value
}

# eg: check_mtd_write /dev/mtdX required-size bin-file
function check_mtd_write()
{
filesize=`ls -l $3 | awk '{print $5}'`
mtd_info=`mtd_debug info $1`
echo "$mtd_info"
mtdsize=`echo "$mtd_info" | grep mtd.size | grep "($2)"`
if [ ! -z "$mtdsize" ];then
echo "$1 size is ($2)"
mtdsizeB=`echo "$mtdsize" |cut -d " " -f 3`
echo mtd_debug erase $1 0 $mtdsizeB
mtd_debug erase $1 0 $mtdsizeB
echo mtd_debug write $1 0 $filesize $3
mtd_debug write $1 0 $filesize $3
if [ $? == 0 ]; then
# beep_success
if [ "$3" == "$VAbin" ]; then
VAwrites=$((VAwrites + 1))
fi
if [ "$3" == "$RXbin" ]; then
RXwrites=$((RXwrites + 1))
fi
fi
else
echo "$1 size is NOT ($2) !"
beep_failure
fi
}
function untar_file()
{
FILE_TARGET="$1"
Expand All @@ -96,41 +141,20 @@ function untar_file()
fi

tar xf ${FILE_TARGET} -C ${TMP_DIR} 2>&1 > /dev/null
mv ${TMP_DIR}/HDZGOGGLE_RX*.bin ${TMP_DIR}/HDZGOGGLE_RX.bin
mv ${TMP_DIR}/HDZGOGGLE_VA*.bin ${TMP_DIR}/HDZGOGGLE_VA.bin
mv ${TMP_DIR}/HDZGOGGLE_RX*.bin $RXbin
mv ${TMP_DIR}/HDZGOGGLE_VA*.bin $VAbin
}

# 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
}

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
check_mtd_write /dev/mtd8 1M 65536 $filesize ${TMP_DIR}/HDZGOGGLE_RX.bin
echo "5"
echo "5" > /tmp/progress_goggle
check_mtd_write /dev/mtd8 1M $RXbin
sleep 1
check_mtd_write /dev/mtd9 1M 65536 $filesize ${TMP_DIR}/HDZGOGGLE_RX.bin
echo "10"
echo "10" > /tmp/progress_goggle
check_mtd_write /dev/mtd9 1M $RXbin
echo "update finish RX, running"
gpio_clear_reset
sleep 1
Expand All @@ -140,14 +164,11 @@ function update_rx()
function update_fpga()
{
echo "find VA update file, start update"
filesize2=`ls -l ${TMP_DIR}/HDZGOGGLE_VA*.bin| awk '{print $5}'`
gpio_export
gpio_set_reset
disconnect_fpga_flash
insmod /mnt/app/ko/w25q128.ko
check_mtd_write /dev/mtd10 16M 16777216 $filesize2 ${TMP_DIR}/HDZGOGGLE_VA.bin
echo "45"
echo "45" > /tmp/progress_goggle
check_mtd_write /dev/mtd10 16M $VAbin
echo "update finish VA, running"
gpio_clear_reset
sleep 1
Expand All @@ -172,17 +193,18 @@ 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
echo "6"
echo "6" > /tmp/progress_goggle
update_fpga
echo "45"
echo "45" > /tmp/progress_goggle
hdz_upgrade_app.sh
echo "100"
echo "100" > /tmp/progress_goggle
echo "all done"
else
if [ `ls /mnt/extsd/HDZERO_GOGGLE*.bin | grep bin | wc -l` -eq 0 ]
then
echo "skip"
else
echo "repeat"
fi
echo "skip"
fi
101 changes: 41 additions & 60 deletions mkapp/app/script/write_flashes.sh
Original file line number Diff line number Diff line change
Expand Up @@ -31,51 +31,37 @@ function gpio_export()
echo "out">/sys/class/gpio/gpio131/direction
}

function beep_on()
{
echo "1">/sys/class/gpio/gpio131/value
}

function beep_off()
{
echo "0">/sys/class/gpio/gpio131/value
}

function beep()
{
echo "1">/sys/class/gpio/gpio131/value
sleep 1
if [ ! -z "$1" ];then
delay=$1
else
delay=1
fi
echo "1">/sys/class/gpio/gpio131/value
sleep $delay
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
beep 0.1
sleep 0.5
beep 0.05
sleep 1
}


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
beep 1
sleep 0.5
beep 1
sleep 0.5
beep 0.05
sleep 1
}


function disconnect_fpga_flash()
{
echo "1">/sys/class/gpio/gpio258/value
Expand All @@ -86,7 +72,6 @@ function connect_fpga_flash()
echo "0">/sys/class/gpio/gpio258/value
}


function gpio_set_reset()
{
echo "0">/sys/class/gpio/gpio224/value
Expand All @@ -99,28 +84,26 @@ function gpio_clear_reset()
echo "0">/sys/class/gpio/gpio228/value
}

function gpio_set_send()
{
echo "1">/sys/class/gpio/gpio224/value
echo "0">/sys/class/gpio/gpio228/value
}

# eg: check_mtd_write /dev/mtdX check-size erase-size file-size bin-file
# eg: check_mtd_write /dev/mtdX required-size bin-file
function check_mtd_write()
{
filesize=`ls -l $3 | awk '{print $5}'`
mtd_info=`mtd_debug info $1`
echo "$mtd_info"
value=`echo "$mtd_info" | grep mtd.size | grep "($2)"`
if [ ! -z "$value" ];then
mtdsize=`echo "$mtd_info" | grep mtd.size | grep "($2)"`
if [ ! -z "$mtdsize" ];then
echo "$1 size is ($2)"
mtd_debug erase $1 0 $3
mtd_debug write $1 0 $4 $5
mtdsizeB=`echo "$mtdsize" |cut -d " " -f 3`
echo mtd_debug erase $1 0 $mtdsizeB
mtd_debug erase $1 0 $mtdsizeB
echo mtd_debug write $1 0 $filesize $3
mtd_debug write $1 0 $filesize $3
if [ $? == 0 ]; then
beep_success
if [ "$5" == "$VAbin" ]; then
if [ "$3" == "$VAbin" ]; then
VAwrites=$((VAwrites + 1))
fi
if [ "$5" == "$RXbin" ]; then
if [ "$3" == "$RXbin" ]; then
RXwrites=$((RXwrites + 1))
fi
fi
Expand All @@ -131,26 +114,26 @@ function check_mtd_write()
}




echo "<<<<-------------------------------------------------------------------->>>>"

if [ -e $VAbin ] | [ -e $RXbin ]; then
gpio_export
beep 1
fi

if [ -e $VAbin ]
then
echo "find VA update file, start update"
filesize2=`ls -l $VAbin| awk '{print $5}'`
gpio_export
gpio_set_reset
disconnect_fpga_flash
sleep 1
insmod /mnt/app/ko/w25q128.ko


touch /tmp/update.ing
# 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
# check_mtd_write /dev/mtd8 16M $VAbin
# check_mtd_write /dev/mtd9 16M $VAbin
check_mtd_write /dev/mtd10 16M $VAbin
rm /tmp/update.ing -rf

if [ "$VAwrites" == "$VAcount" ]; then
Expand All @@ -172,15 +155,13 @@ fi
if [ -e $RXbin ]
then
echo "find RX update file, start update"
filesize=`ls -l $RXbin| awk '{print $5}'`
gpio_export
gpio_set_reset
sleep 1
insmod /mnt/app/ko/w25q128.ko
# 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
# normally rx1 is /dev/mtd8 and rx0 is /dev/mtd9
check_mtd_write /dev/mtd8 1M $RXbin
check_mtd_write /dev/mtd9 1M $RXbin
# check_mtd_write /dev/mtd10 1M $RXbin

if [ "$RXwrites" == "$RXcount" ]; then
if [ ! -f /mnt/extsd/DONOTREMOVE.txt ]
Expand All @@ -194,7 +175,7 @@ then
sleep 1
rmmod /mnt/app/ko/w25q128.ko

beep
beep 2
else
echo "no RX update file,skip"
fi
Expand Down
Loading