134 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
		
		
			
		
	
	
			134 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| 
								 | 
							
								#!/bin/bash
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#If an error occurs, exit and return the error.
							 | 
						||
| 
								 | 
							
								set -o errexit
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								DEF_CUS_APP="17"
							 | 
						||
| 
								 | 
							
								DEF_PLC_APP="0"
							 | 
						||
| 
								 | 
							
								DEF_CORE_TYPE="plc"
							 | 
						||
| 
								 | 
							
								DEF_REL="debug"
							 | 
						||
| 
								 | 
							
								DEF_PROTO_TYPE="p12087"
							 | 
						||
| 
								 | 
							
								DEF_BOARDS_TYPE="evb03"
							 | 
						||
| 
								 | 
							
								DEF_RF_OPT="no_rf"
							 | 
						||
| 
								 | 
							
								DEF_DUAL_OPT="no_dual"
							 | 
						||
| 
								 | 
							
								DEF_INCREMENT_OPT=""
							 | 
						||
| 
								 | 
							
								DEF_BUILD_RECORD="./KL3_SG_BUILD_RECORE"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								CHIP_ID=("HZ"              "HZ"         "HZ"         "HZ"         "HZ"              "HZ"              "HZ"         "HZ"         "HZ")
							 | 
						||
| 
								 | 
							
								IMAGE_TYPE=("cco"          "cco"        "sta"        "sta"        "new_type_cco"    "new_type_cco"    "cco"        "sta"        "new_type_cco")
							 | 
						||
| 
								 | 
							
								GROUP_FLASH=("4m"          "4m"         "4m"         "4m"         "4m"              "4m"              "4m"         "4m"         "4m")
							 | 
						||
| 
								 | 
							
								GROUP_PSRAM=("8m"          "8m"         "0m"         "0m"         "8m"              "8m"              "8m"         "0m"         "8m")
							 | 
						||
| 
								 | 
							
								GROUP_RF_OPT=("rf"         "no_rf"      "rf"         "no_rf"      "rf"              "no_rf"           "rf"         "rf"         "rf")
							 | 
						||
| 
								 | 
							
								GROUP_DUAL_OPT=("dual"     "no_dual"    "dual"       "no_dual"    "dual"            "no_dual"         "no_dual"    "no_dual"    "no_dual")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								GROUP_PROTO_TYPE=("p12087" "p1901")
							 | 
						||
| 
								 | 
							
								GROUP_BOARDS_TYPE=("fpga03" "evb03" "htzd03" "qj03" "flx03" "spe03" "gx03" "dt03" "yp03")
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if [ -n "$(echo $1| sed -n "/^[0-9]\+$/p")" ]; then
							 | 
						||
| 
								 | 
							
								    DEF_INDEX=$1
							 | 
						||
| 
								 | 
							
								else
							 | 
						||
| 
								 | 
							
								    DEF_INDEX=""
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								GROUP_LENGTH=${#CHIP_ID[*]}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#print help info.
							 | 
						||
| 
								 | 
							
								if [ "?" == "$1" ] || [ "" == "$1" ]; then
							 | 
						||
| 
								 | 
							
								    echo  "*$0 [INDEX] [PROTO_TYPE] [BOARDS_TYPE] [NOT_CLEAN]"
							 | 
						||
| 
								 | 
							
								    echo  "*   [INDEX] -- Necessary, Select the combination you want to compile."
							 | 
						||
| 
								 | 
							
								    echo  "*   [PROTO_TYPE] -- optional, (${GROUP_PROTO_TYPE[@]}), default use protocol p12087."
							 | 
						||
| 
								 | 
							
								    echo  "*   [BOARDS_TYPE] -- optional, (${GROUP_BOARDS_TYPE[@]}), default is evb-boards."
							 | 
						||
| 
								 | 
							
								    echo  "*   [NOT_CLEAN] -- Optional, clean or not, 'not_clean' means incremental build, default is clean."
							 | 
						||
| 
								 | 
							
								    echo
							 | 
						||
| 
								 | 
							
								    echo  "* Build img as follows:"
							 | 
						||
| 
								 | 
							
								    for ((index=0; index < GROUP_LENGTH; index++)); do
							 | 
						||
| 
								 | 
							
								        echo "*   $index. (${CHIP_ID[$index]}  ${IMAGE_TYPE[$index]}   ${GROUP_FLASH[$index]} flash +  ${GROUP_PSRAM[$index]} psram  ${GROUP_RF_OPT[$index]} ${GROUP_DUAL_OPT[$index]})"
							 | 
						||
| 
								 | 
							
								    done
							 | 
						||
| 
								 | 
							
								    exit 0
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#DEF_PROTO_TYPE
							 | 
						||
| 
								 | 
							
								for k in $@; do
							 | 
						||
| 
								 | 
							
								    for arg in ${GROUP_PROTO_TYPE[@]}; do
							 | 
						||
| 
								 | 
							
								        if [ "$k" == "$arg" ]; then
							 | 
						||
| 
								 | 
							
								            DEF_PROTO_TYPE="$arg"
							 | 
						||
| 
								 | 
							
								            break
							 | 
						||
| 
								 | 
							
								        fi
							 | 
						||
| 
								 | 
							
								    done
							 | 
						||
| 
								 | 
							
								done
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#DEF_RF_OPT
							 | 
						||
| 
								 | 
							
								if [ "x${GROUP_RF_OPT[$DEF_INDEX]}" == "xrf" ]; then
							 | 
						||
| 
								 | 
							
								    DEF_RF_OPT="rf"
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#DEF_DUAL_OPT
							 | 
						||
| 
								 | 
							
								if [ "x${GROUP_DUAL_OPT[$DEF_INDEX]}" == "xdual" ]; then
							 | 
						||
| 
								 | 
							
								    DEF_DUAL_OPT="dual"
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#DEF_BOARDS_TYPE
							 | 
						||
| 
								 | 
							
								for k in $@; do
							 | 
						||
| 
								 | 
							
								    for arg in ${GROUP_BOARDS_TYPE[@]}; do
							 | 
						||
| 
								 | 
							
								        if [ "$k" == "$arg" ]; then
							 | 
						||
| 
								 | 
							
								            DEF_BOARDS_TYPE="$arg"
							 | 
						||
| 
								 | 
							
								            break
							 | 
						||
| 
								 | 
							
								        fi
							 | 
						||
| 
								 | 
							
								    done
							 | 
						||
| 
								 | 
							
								done
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#DEF_CLEANUP
							 | 
						||
| 
								 | 
							
								for k in $@; do
							 | 
						||
| 
								 | 
							
								    if [ "$k" == "not_clean" ] || [ "$k" == "NOT_CLEAN" ]; then
							 | 
						||
| 
								 | 
							
								        DEF_INCREMENT_OPT="not_clean"
							 | 
						||
| 
								 | 
							
								    fi
							 | 
						||
| 
								 | 
							
								done
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								check_need_cleanup() {
							 | 
						||
| 
								 | 
							
								    last_build_cmd=`cat ${DEF_BUILD_RECORD}`
							 | 
						||
| 
								 | 
							
								    echo "last_build_cmd:${last_build_cmd}"
							 | 
						||
| 
								 | 
							
								    build_scripts=`echo ${last_build_cmd} | awk '{print $1}'`
							 | 
						||
| 
								 | 
							
								    build_img_type=`echo ${last_build_cmd} | awk '{print $2}'`
							 | 
						||
| 
								 | 
							
								    build_cus_app=`echo ${last_build_cmd} | awk '{print $3}'`
							 | 
						||
| 
								 | 
							
								    build_plc_app=`echo ${last_build_cmd} | awk '{print $4}'`
							 | 
						||
| 
								 | 
							
								    build_app_type=`echo ${last_build_cmd} | awk '{print $5}'`
							 | 
						||
| 
								 | 
							
								    build_flash_size=`echo ${last_build_cmd} | awk '{print $6}'`
							 | 
						||
| 
								 | 
							
								    build_psram_size=`echo ${last_build_cmd} | awk '{print $7}'`
							 | 
						||
| 
								 | 
							
								    build_chip_id=`echo ${last_build_cmd} | awk '{print $8}'`
							 | 
						||
| 
								 | 
							
								    build_protocol_type=`echo ${last_build_cmd} | awk '{print $9}'`
							 | 
						||
| 
								 | 
							
								    build_rf_mode=`echo ${last_build_cmd} | awk '{print $10}'`
							 | 
						||
| 
								 | 
							
								    build_dual_mode=`echo ${last_build_cmd} | awk '{print $11}'`
							 | 
						||
| 
								 | 
							
								    build_boards_type=`echo ${last_build_cmd} | awk '{print $12}'`
							 | 
						||
| 
								 | 
							
								    if [ "${build_scripts}" != "./build_flash_kl3.sh" ] || [ "${build_img_type}" != "${IMAGE_TYPE[$DEF_INDEX]}" ] || [ "${build_cus_app}" != "${DEF_CUS_APP}" ] || [ "${build_plc_app}" != "${DEF_PLC_APP}" ] \
							 | 
						||
| 
								 | 
							
								    || [ "${build_app_type}" != "${DEF_CORE_TYPE}" ] || [ "${build_flash_size}" != "${GROUP_FLASH[$DEF_INDEX]}" ] || [ "${build_psram_size}" != "${GROUP_PSRAM[$DEF_INDEX]}" ] \
							 | 
						||
| 
								 | 
							
								    || [ "${build_chip_id}" != "${CHIP_ID[$DEF_INDEX]}" ] || [ "${build_protocol_type}" != "${DEF_PROTO_TYPE}" ] || [ "${build_rf_mode}" != "${DEF_RF_OPT}" ] || [ "${build_dual_mode}" != "${DEF_DUAL_OPT}" ]; then
							 | 
						||
| 
								 | 
							
								        need_clean=1
							 | 
						||
| 
								 | 
							
								    fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    # fpga board need cleanup build, because the platform of fpga board is 'FPGA' and other board is "CHIP".
							 | 
						||
| 
								 | 
							
								    if [ "${build_boards_type}" != "${DEF_BOARDS_TYPE}" ]; then
							 | 
						||
| 
								 | 
							
								        if [ "${build_boards_type}" == "fpga" ] || [ "${DEF_BOARDS_TYPE}" == "fpga" ]; then
							 | 
						||
| 
								 | 
							
								            need_clean=1
							 | 
						||
| 
								 | 
							
								        fi
							 | 
						||
| 
								 | 
							
								    fi
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if [ -f ${DEF_BUILD_RECORD} ]; then
							 | 
						||
| 
								 | 
							
								    check_need_cleanup
							 | 
						||
| 
								 | 
							
								else
							 | 
						||
| 
								 | 
							
								    DEF_INCREMENT_OPT=""
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								cus_build_cmd="./build_flash_kl3.sh ${IMAGE_TYPE[$DEF_INDEX]} ${DEF_CUS_APP} ${DEF_PLC_APP} ${DEF_CORE_TYPE} ${GROUP_FLASH[$DEF_INDEX]} ${GROUP_PSRAM[$DEF_INDEX]} ${CHIP_ID[$DEF_INDEX]} ${DEF_PROTO_TYPE} ${DEF_RF_OPT} ${DEF_DUAL_OPT} ${DEF_BOARDS_TYPE}"
							 | 
						||
| 
								 | 
							
								if [ "${DEF_INCREMENT_OPT}x" == "not_cleanx" ] && [ "${need_clean}x" = "1x" ]; then
							 | 
						||
| 
								 | 
							
								    read -p "Last build cmd is different from current building ${cus_build_cmd}, do you need cleanup to create a new compilation? (input Y or N): " confirm
							 | 
						||
| 
								 | 
							
								    if [ ${confirm} == "Y" ] || [ ${confirm} == "y" ]; then
							 | 
						||
| 
								 | 
							
								        DEF_INCREMENT_OPT=""
							 | 
						||
| 
								 | 
							
								    fi
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								echo "./build_flash_kl3.sh ${IMAGE_TYPE[$DEF_INDEX]} ${DEF_CUS_APP} ${DEF_PLC_APP} ${DEF_CORE_TYPE} ${GROUP_FLASH[$DEF_INDEX]} ${GROUP_PSRAM[$DEF_INDEX]} ${CHIP_ID[$DEF_INDEX]} ${DEF_PROTO_TYPE} ${DEF_RF_OPT} ${DEF_DUAL_OPT} ${DEF_REL} ${DEF_BOARDS_TYPE} ${DEF_INCREMENT_OPT}"
							 | 
						||
| 
								 | 
							
								./build_flash_kl3.sh ${IMAGE_TYPE[$DEF_INDEX]} ${DEF_CUS_APP} ${DEF_PLC_APP} ${DEF_CORE_TYPE} ${GROUP_FLASH[$DEF_INDEX]} ${GROUP_PSRAM[$DEF_INDEX]} ${CHIP_ID[$DEF_INDEX]} ${DEF_PROTO_TYPE} ${DEF_RF_OPT} ${DEF_DUAL_OPT} ${DEF_REL} ${DEF_BOARDS_TYPE} ${DEF_INCREMENT_OPT}
							 | 
						||
| 
								 | 
							
								if [ $? -eq 0 ]; then
							 | 
						||
| 
								 | 
							
								    echo "${cus_build_cmd}" > ${DEF_BUILD_RECORD}
							 | 
						||
| 
								 | 
							
								fi
							 |