134 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
		
		
			
		
	
	
			134 lines
		
	
	
		
			5.6 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="ampplc" | ||
|  | DEF_REL="debug" | ||
|  | DEF_PROTO_TYPE="p12087" | ||
|  | DEF_BOARDS_TYPE="htzd03" | ||
|  | DEF_FASTBOOT_MODE="no_fastboot" | ||
|  | DEF_INCREMENT_OPT="" | ||
|  | DEF_BUILD_RECORD="./KL3_SG_BUILD_RECORE" | ||
|  | 
 | ||
|  | CHIP_ID=("HZ"            "HZ") | ||
|  | IMAGE_TYPE=("cco"        "cco") | ||
|  | GROUP_FLASH=("4m"        "4m") | ||
|  | GROUP_PSRAM=("8m"        "8m") | ||
|  | GROUP_RF_OPT=("rf"       "no_rf") | ||
|  | GROUP_DUAL_OPT=("dual"   "no_dual") | ||
|  | 
 | ||
|  | GROUP_PROTO_TYPE=("p12087" "p1901") | ||
|  | GROUP_BOARDS_TYPE=("fpga03" "evb03" "htzd03") | ||
|  | 
 | ||
|  | 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] [FASTBOOT_OPT] [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  "*   [FASTBOOT_OPT] -- optional, (fastboot or normal), default is normal mode." | ||
|  |     echo  "*   [BOARDS_TYPE] -- optional, (${GROUP_BOARDS_TYPE[@]}), default is htzd03-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_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_FASTBOOT_MODE | ||
|  | for k in $@; do | ||
|  |     if [ "$k" == "fastboot" ]; then | ||
|  |         DEF_FASTBOOT_MODE="$k" | ||
|  |         break | ||
|  |     fi | ||
|  | 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_fastboot_mode=`echo ${last_build_cmd} | awk '{print $12}'` | ||
|  |     build_boards_type=`echo ${last_build_cmd} | awk '{print $13}'` | ||
|  |     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}" != "${GROUP_RF_OPT[$index]}" ] || [ "${build_dual_mode}" != "${GROUP_DUAL_OPT[$index]}" ] || [ "${build_fastboot_mode}" != "${DEF_FASTBOOT_MODE}" ]; 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} ${GROUP_RF_OPT[$DEF_INDEX]} ${GROUP_DUAL_OPT[$DEF_INDEX]} ${DEF_FASTBOOT_MODE} ${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} ${GROUP_RF_OPT[$DEF_INDEX]} ${GROUP_DUAL_OPT[$DEF_INDEX]} ${DEF_FASTBOOT_MODE} ${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} ${GROUP_RF_OPT[$DEF_INDEX]} ${GROUP_DUAL_OPT[$DEF_INDEX]} ${DEF_FASTBOOT_MODE} ${DEF_REL} ${DEF_BOARDS_TYPE} ${DEF_INCREMENT_OPT} | ||
|  | if [ $? -eq 0 ]; then | ||
|  |     echo "${cus_build_cmd}" > ${DEF_BUILD_RECORD} | ||
|  | fi |