#!/bin/bash #If an error occurs, exit and return the error. set -o errexit DEF_CUS_APP_NAME="cust_demo" DEF_CUS_APP="17" DEF_PLC_APP_NAME="demo" DEF_PLC_APP="3" DEF_CORE_TYPE="ampplc" DEF_REL="debug" DEF_PROTO_TYPE="p12087" DEF_BOARDS_TYPE="goldf03" DEF_FASTBOOT_MODE="no_fastboot" DEF_INCREMENT_OPT="" DEF_BUILD_RECORD="./KL3_SG_BUILD_RECORE" CHIP_ID=("WQ" "WQ") IMAGE_TYPE=("cco" "sta") GROUP_FLASH=("2m" "2m") GROUP_PSRAM=("0m" "0m") GROUP_RF_OPT=("no_rf" "no_rf") GROUP_DUAL_OPT=("no_dual" "no_dual") GROUP_CUS_APP_NAME=("cust_demo" "cust_at") GROUP_PLC_APP_NAME=("demo" "cus_at") GROUP_PROTO_TYPE=("p12087" "p1901") GROUP_BOARDS_TYPE=("goldf03" "evb03") GROUP_REL=("debug" "release") 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 "* [CUS_APP_NAME] -- Necessary, (${GROUP_CUS_APP_NAME[@]}), default is cust_demo." echo "* [PLC_APP_NAME] -- Necessary, (${GROUP_PLC_APP_NAME[@]}), default is demo." 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 goldf03-board." 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]})" done exit 0 fi #DEF_CUS_APP_NAME for k in $@; do for arg in ${GROUP_CUS_APP_NAME[@]}; do if [ "$k" == "$arg" ]; then DEF_CUS_APP_NAME="$arg" break fi done done if [ "${DEF_CUS_APP_NAME}" == "cust_at" ]; then DEF_CUS_APP="23" else DEF_CUS_APP="17" fi #DEF_PLC_APP_NAME for k in $@; do for arg in ${GROUP_PLC_APP_NAME[@]}; do if [ "$k" == "$arg" ]; then DEF_PLC_APP_NAME="$arg" break fi done done if [ "${DEF_PLC_APP_NAME}" == "cus_at" ]; then DEF_PLC_APP="18" 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_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_REL for k in $@; do for arg in ${GROUP_REL[@]}; do if [ "$k" == "$arg" ]; then DEF_REL="$k" 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