155 lines
5.7 KiB
Bash
155 lines
5.7 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
#If an error occurs, exit and return the error.
|
||
|
set -o errexit
|
||
|
|
||
|
DEF_IMG_TYPE="ckb"
|
||
|
DEF_CUS_APP="17"
|
||
|
DEF_PLC_APP=""
|
||
|
DEF_CORE_TYPE="plc"
|
||
|
DEF_REL="debug"
|
||
|
DEF_PROTO_TYPE="p12087"
|
||
|
DEF_BOARDS_TYPE=""
|
||
|
DEF_RF_OPT="no_rf"
|
||
|
DEF_DUAL_OPT="no_dual"
|
||
|
DEF_INCREMENT_OPT=""
|
||
|
DEF_BUILD_RECORD="./KL3_SG_BUILD_RECORE"
|
||
|
|
||
|
CHIP_ID=("HZ" "HZ")
|
||
|
GROUP_FLASH=("4m" "4m")
|
||
|
GROUP_PSRAM=("8m" "8m")
|
||
|
GROUP_RF_OPT=("rf" "no_rf")
|
||
|
GROUP_DUAL_OPT=("dual" "no_dual")
|
||
|
|
||
|
GROUP_PLC_APP=(0 15)
|
||
|
GROUP_PROTO_TYPE=("p12087" "p1901")
|
||
|
GROUP_BOARDS_TYPE=("htzd03" "qj03" "flx03" "spe03" "gx03" "yp03" "dt03")
|
||
|
|
||
|
APP_INPUT=$1
|
||
|
if [ -n "$(echo $2| sed -n "/^[0-9]\+$/p")" ]; then
|
||
|
DEF_INDEX=$2
|
||
|
else
|
||
|
DEF_INDEX=""
|
||
|
fi
|
||
|
|
||
|
GROUP_LENGTH=${#CHIP_ID[*]}
|
||
|
|
||
|
#print help info.
|
||
|
print_help() {
|
||
|
echo "*$0 [APP_ID] [INDEX] [PROTO_TYPE] [BOARDS_TYPE] [NOT_CLEAN]"
|
||
|
echo "* [APP_ID] -- Necessary, (${GROUP_PLC_APP[@]}), 0:sg, 15:sniffer, Select the APP."
|
||
|
echo "* [INDEX] -- Necessary, Select the combination you want to compile."
|
||
|
echo "* [PROTO_TYPE] -- optional, (${GROUP_PROTO_TYPE[@]}), default use protocol p12087."
|
||
|
echo "* [BOARDS_TYPE] -- Necessary, (${GROUP_BOARDS_TYPE[@]})."
|
||
|
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]} ${GROUP_FLASH[$index]} flash + ${GROUP_PSRAM[$index]} psram ${GROUP_RF_OPT[$index]} ${GROUP_DUAL_OPT[$index]})"
|
||
|
done
|
||
|
exit 1
|
||
|
}
|
||
|
|
||
|
#DEF_PLC_APP
|
||
|
for arg in ${GROUP_PLC_APP[@]}; do
|
||
|
if [ "${APP_INPUT}" == "$arg" ]; then
|
||
|
DEF_PLC_APP="$arg"
|
||
|
break
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
#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 input parameters.
|
||
|
if [ "x${DEF_PLC_APP}" == "x" ] || [ "x${DEF_INDEX}" == "x" ] || [ "x${DEF_BOARDS_TYPE}" == "x" ] || [ "?" == "$1" ] ; then
|
||
|
if [ "?" != "$1" ]; then
|
||
|
echo ""
|
||
|
echo "Parameter input error!!!"
|
||
|
echo ""
|
||
|
fi
|
||
|
print_help
|
||
|
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_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}" != "${DEF_IMG_TYPE}" ] || [ "${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 ${DEF_IMG_TYPE} ${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 ${DEF_IMG_TYPE} ${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 ${DEF_IMG_TYPE} ${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
|