178 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			178 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/bash
 | |
| 
 | |
| #If an error occurs, exit and return the error.
 | |
| set -o errexit
 | |
| 
 | |
| DEF_PLC_APP_NAME="demo"
 | |
| DEF_CUS_APP="17"
 | |
| DEF_PLC_APP="3"
 | |
| 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_IOT_BUILD_RECORD"
 | |
| 
 | |
| CHIP_ID=("WQ"               "WQ"        "HZ"        "HZ"        "HZ")
 | |
| IMAGE_TYPE=("cco"           "sta"       "cco"       "cco"       "sta")
 | |
| GROUP_FLASH=("2m"           "2m"        "4m"        "4m"        "4m")
 | |
| GROUP_PSRAM=("0m"           "0m"        "8m"        "8m"        "0m")
 | |
| GROUP_RF_OPT=("no_rf"       "no_rf"     "no_rf"     "rf"        "rf")
 | |
| GROUP_DUAL_OPT=("no_dual"   "no_dual"   "no_dual"   "dual"      "dual")
 | |
| 
 | |
| GROUP_APP_NAME=("demo" "ge" "cus_at" "sila" "iot_sniffer")
 | |
| GROUP_PROTO_TYPE=("p12087" "p1901")
 | |
| GROUP_REL=("debug" "release")
 | |
| GROUP_BOARDS_TYPE=("evb03" "htzd03" "goldf03" "ledc03" "stamp03")
 | |
| 
 | |
| 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] [APP_ID] [PROTO_TYPE] [BOARDS_TYPE] [DEBUG_TYPE] [NOT_CLEAN]"
 | |
|     echo  "*   [INDEX] -- Necessary, Select the combination you want to compile."
 | |
|     echo  "*   [APP_NAME] -- optional, (${GROUP_APP_NAME[@]}), default is demo."
 | |
|     echo  "*   [PROTO_TYPE] -- optional, (${GROUP_PROTO_TYPE[@]}), default use protocol p12087."
 | |
|     echo  "*   [BOARDS_TYPE] -- optional, (${GROUP_BOARDS_TYPE[@]}), default is evb-boards."
 | |
|     echo  "*   [DEBUG_TYPE] -- Optional, release or debug, (${GROUP_REL[@]}), default is debug."
 | |
|     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_PLC_APP_NAME
 | |
| for k in $@; do
 | |
|     for arg in ${GROUP_APP_NAME[@]}; do
 | |
|         if [ "$k" == "$arg" ]; then
 | |
|             DEF_PLC_APP_NAME="$arg"
 | |
|             break
 | |
|         fi
 | |
|     done
 | |
| done
 | |
| 
 | |
| #DEF_PLC_APP
 | |
| if [ "${DEF_PLC_APP_NAME}" == "ge" ]; then
 | |
|     DEF_PLC_APP="4"
 | |
| elif [ "${DEF_PLC_APP_NAME}" == "cus_at" ]; then
 | |
|     DEF_PLC_APP="18"
 | |
| elif [ "${DEF_PLC_APP_NAME}" == "sila" ]; then
 | |
|     DEF_PLC_APP="24"
 | |
| elif [ "${DEF_PLC_APP_NAME}" == "iot_sniffer" ]; then
 | |
|     DEF_PLC_APP="19"
 | |
| else
 | |
|     DEF_PLC_APP="3"
 | |
| 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_CLEANUP
 | |
| for k in $@; do
 | |
|     if [ "$k" == "not_clean" ] || [ "$k" == "NOT_CLEAN" ]; then
 | |
|         DEF_INCREMENT_OPT="not_clean"
 | |
|     fi
 | |
| done
 | |
| 
 | |
| #DEF_REL
 | |
| for k in $@; do
 | |
|     for arg in ${GROUP_REL[@]}; do
 | |
|         if [ "$k" == "$arg" ]; then
 | |
|             DEF_REL="$k"
 | |
|             break
 | |
|         fi
 | |
|     done
 | |
| done
 | |
| 
 | |
| #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
 | |
| 
 | |
| if [ "${DEF_BOARDS_TYPE}" != "htzd03" ]; then
 | |
|     if [ "${GROUP_FLASH[$DEF_INDEX]}" == "4m" ] && [ "${GROUP_PSRAM[$DEF_INDEX]}" == "8m" ]; then
 | |
|     echo "fatal:param err, build failed!!!, only board-htzd03 support chip-3201(with 4m flash and 8m psram)."
 | |
|     exit 1
 | |
|     fi
 | |
| fi
 | |
| 
 | |
| 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_app=`echo ${last_build_cmd} | awk '{print $3}'`
 | |
|     build_app_type=`echo ${last_build_cmd} | awk '{print $4}'`
 | |
|     build_flash_size=`echo ${last_build_cmd} | awk '{print $5}'`
 | |
|     build_psram_size=`echo ${last_build_cmd} | awk '{print $6}'`
 | |
|     build_chip_id=`echo ${last_build_cmd} | awk '{print $7}'`
 | |
|     build_protocol_type=`echo ${last_build_cmd} | awk '{print $8}'`
 | |
|     build_rf_mode=`echo ${last_build_cmd} | awk '{print $9}'`
 | |
|     build_dual_mode=`echo ${last_build_cmd} | awk '{print $10}'`
 | |
|     build_boards_type=`echo ${last_build_cmd} | awk '{print $11}'`
 | |
|     if [ "${build_scripts}" != "./build_flash_kl3.sh" ] || [ "${build_img_type}" != "${IMAGE_TYPE[$DEF_INDEX]}" ] || [ "${build_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_REL} ${DEF_BOARDS_TYPE} ${DEF_INCREMENT_OPT}"
 | |
| 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 |