自动升级shell

make_version.sh

#!/bin/bash
IMAGE_DIR="./image/output/images"
SCRIPTS_DIR="./scripts"
AUTO_UPDATE_FILE="auto_update.txt"
VERSION_FILE="[[version"
SET_CONFIG_FILE="set_config"

auto_update_add_version()
{
	if [ ! -f $AUTO_UPDATE_FILE ]; then
		echo "$AUTO_UPDATE_FILE"" does not exist."
		exit 0
	fi
	
	chmod u+x $AUTO_UPDATE_FILE

	sed -i '/version/d' $AUTO_UPDATE_FILE
	sed -i '/mxp/i estar scripts/[[version' $AUTO_UPDATE_FILE
}

add_version_file()
{
	if [ -f $VERSION_FILE ]; then
		#echo "remove old ""$VERSION_FILE"
		chmod u+x $VERSION_FILE
		rm -f $VERSION_FILE
	fi
	
	read -p "Write CarDV version info? (e: y/N):" cardv_ver
	
	if [ ${cardv_ver} == "y" ]
	then
		read -p "Input MachineName (e: FC_CarDV):" machine_name
		if [ ! -n "$machine_name" ]
		then
			machine_name="FC_CarDV"
		fi
		echo "MachineName: ${machine_name}"
		
		read -p "Input Product Name (e: F1):" product_name
		if [ ! -n "$product_name" ]
		then
			product_name="F1"
		fi		
		echo "Product Name: ${product_name}"	
		
		read -p "Input Firmware Version (e: 00 ~ 99):" fw_version
		if [ ! -n "$fw_version" ]
		then
			fw_version="00"
		fi		
		echo "Firmware Version: ${fw_version}"		
		
		echo "choice: ${cardv_ver}, CarDV version info: ${machine_name} ${product_name} ${fw_version}"
		
		if [ ! -f $VERSION_FILE ]; then		
			echo "# <- this is for comment / total file size must be less than 4KB" >> $VERSION_FILE
			echo "# command machine_name product_name fw_version" >> $VERSION_FILE
			echo "sdver ${machine_name} ${product_name} ${fw_version}" >> $VERSION_FILE
			echo "# command enable/disable upgrade_status" >> $VERSION_FILE
			echo "sdupgrade 0 0" >> $VERSION_FILE			
			echo "% <- this is end of file symbol" >> $VERSION_FILE		
		fi
	fi
	
	if [ ${cardv_ver} == "N" ]
	then
		echo "choice: ${cardv_ver}, default version info: FC_CarDV F1 00"
		
		if [ ! -f $VERSION_FILE ]; then		
			echo "# <- this is for comment / total file size must be less than 4KB" >> $VERSION_FILE
			echo "# command machine_name product_name fw_version" >> $VERSION_FILE
			echo "sdver FC_CarDV F1 00" >> $VERSION_FILE
			echo "# command enable/disable upgrade_status" >> $VERSION_FILE
			echo "sdupgrade 1 1" >> $VERSION_FILE
			echo "% <- this is end of file symbol" >> $VERSION_FILE		
		fi
	fi
}

change_set_config()
{
	if [ ! -f $SET_CONFIG_FILE ]; then
		echo "$SET_CONFIG_FILE"" does not exist."
		exit 0
	fi
	
	if [ "`cat $SET_CONFIG_FILE | grep -c reset`" != 0 ];then
		chmod u+x $SET_CONFIG_FILE

		sed -i '/this is end/i sf probe 0' $SET_CONFIG_FILE
		sed -i '/this is end/i sf read 0x22000000 ${sf_kernel_start} ${sf_kernel_size}' $SET_CONFIG_FILE
		sed -i '/this is end/i bootm 0x22000000' $SET_CONFIG_FILE
		sed -i '/reset/d' $SET_CONFIG_FILE
	fi
}

#===========================================================
#chmod -R 777 $IMAGE_DIR
cd $IMAGE_DIR
auto_update_add_version

cd $SCRIPTS_DIR
add_version_file
change_set_config

  #./make_version.sh

  第一次提示“y/N” 表示接下来的操作是手动(y)还是自动(N);

  自动(N)会为镜像自动生成 

      机器名(现用做WIFI  SSID):XX_DVR

      产品名:XX

      软件版本(00 ~ 99):00

  手动(y)需要手动输入上面三个参数,没有输入直接回车会生成默认参数;

 

  软件自动升级会做软件版本判断,版本不同则执行升级。所以,自动升级需要手动(y)输入软件版本号且必须与板上软件版本号不同;

 

posted @ 2021-06-19 17:26  酒醉的Tiger  阅读(100)  评论(0编辑  收藏  举报