#!/bin/bash PROGRAM=${0##*/} #reset npu /usr/bin/npu_powerctrl -i /usr/bin/npu_powerctrl -o sleep 1 if [ $# -ne 4 ]; then echo 'Usage: '$PROGRAM' loader uboot trust boot' exit fi DIR="/usr/share/npu_fw" UPGRADE_TOOL=/usr/bin/upgrade_tool LOADER=$DIR/$1 UBOOT=$DIR/$2 TRUST=$DIR/$3 BOOT=$DIR/$4 UBOOT_ADDR=0x20000 TRUST_ADDR=0x20800 BOOT_ADDR=0x21000 function download_func() { local RET1=1 echo 'start to download loader...' >> /tmp/npu.log $UPGRADE_TOOL db $LOADER > /dev/null if [ $? -ne 0 ]; then echo 'failed to download loader!' >> /tmp/npu.log return $RET1; fi echo 'download loader ok' >> /tmp/npu.log sleep 1 echo 'start to wait loader...' >> /tmp/npu.log $UPGRADE_TOOL td > /dev/null if [ $? -ne 0 ]; then echo 'failed to wait loader!' >> /tmp/npu.log return $RET1 fi echo 'loader is ready' >> /tmp/npu.log echo 'start to write uboot...' >> /tmp/npu.log $UPGRADE_TOOL wl $UBOOT_ADDR $UBOOT > /dev/null if [ $? -ne 0 ]; then echo 'failed to write uboot!' >> /tmp/npu.log return $RET1 fi echo 'write uboot ok' >> /tmp/npu.log echo 'start to write trust...' $UPGRADE_TOOL wl $TRUST_ADDR $TRUST > /dev/null if [ $? -ne 0 ]; then echo 'failed to write trust!' >> /tmp/npu.log return $RET1 fi echo 'write trust ok' >> /tmp/npu.log echo 'start to write boot...' >> /tmp/npu.log $UPGRADE_TOOL wl $BOOT_ADDR $BOOT > /dev/null if [ $? -ne 0 ]; then echo 'failed to write boot!' >> /tmp/npu.log return $RET1 fi echo 'write boot ok' >> /tmp/npu.log RET1=0 return $RET1 } function check_device_ready_func() { echo 'start to wait device...' > /tmp/npu.log local i=0 local RET=1 while [ $i -lt 10 ]; do $UPGRADE_TOOL ld > /dev/null if [ $? -ne 0 ]; then i=$((i+1)) echo $i sleep 0.1 else sleep 0.1 break fi if [ $i -eq 5 ]; then /usr/bin/npu_powerctrl -o sleep 3 echo 'reset npu to retry!!!' >> /tmp/npu.log fi done if [ $i -ge 10 ]; then echo 'failed to wait device!' >> /tmp/npu.log return $RET fi echo 'device is ready' >> /tmp/npu.log RET=0 return $RET } function poweron_Npu_func() { /usr/bin/npu_powerctrl -i sleep 0.1 /usr/bin/npu_powerctrl -o sleep 1 } if [ ! -f $UPGRADE_TOOL ]; then echo $UPGRADE_TOOL 'is not existed!' exit fi if [ ! -f $LOADER ]; then echo $LOADER 'is not existed!' exit fi if [ ! -f $UBOOT ]; then echo $UBOOT 'is not existed!' exit fi if [ ! -f $TRUST ]; then echo $TRUST 'is not existed!' exit fi if [ ! -f $BOOT ]; then echo $BOOT 'is not existed!' exit fi check_device_ready_func if [ $? = 1 ];then echo "check_device_ready error!!!" >> /tmp/npu.log poweron_Npu_func check_device_ready_func fi download_func if [ $? = 1 ];then echo "reset download_func" poweron_Npu_func check_device_ready_func download_func fi echo 'start to run system...' >> /tmp/npu.log $UPGRADE_TOOL rs $UBOOT_ADDR $TRUST_ADDR $BOOT_ADDR $UBOOT $TRUST $BOOT > /dev/null if [ $? -ne 0 ]; then echo 'failed to run system!' >> /tmp/npu.log exit fi echo 'run system ok' >> /tmp/npu.log