936 lines
		
	
	
		
			48 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
		
		
			
		
	
	
			936 lines
		
	
	
		
			48 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
|  | #!/bin/bash
 | ||
|  | ######################## EDIT START ######################### | ||
|  | DEF_SDK_TYPE="" | ||
|  | DEF_RELEASE="release" | ||
|  | DEF_LIBAPP="false" | ||
|  | DEF_SG_TYPE= | ||
|  | 
 | ||
|  | CHIP_CLASS_STR=("HZ") | ||
|  | CHIP_ID_STR=("P3201" "P3211" "P3031") | ||
|  | PROTO_TYPE_STR=("p12087" "p1901") | ||
|  | GROUP_BOARDS_TYPE_SG=("htzd03" "qj03" "flx03" "spe03" "gx03" "dt03") | ||
|  | GROUP_BOARDS_TYPE_IOT=("htzd03" "goldf03" "ledc03" "stamp03") | ||
|  | GROUP_SDK_TYPE=("sg" "sg_ext" "iot" "iot_ext") | ||
|  | GROUP_SG_TYPE=("gw" "nw") | ||
|  | 
 | ||
|  | 
 | ||
|  | #specific board definition. | ||
|  | BOARDS_HTZD03_GROUP=("htzd3201cco03" "htzd3211sta03" "htzd3211iic03" "htzd32113ps03") | ||
|  | BOARDS_QJ03_GROUP=("qj5580dcco03" "qj5582dsta03" "qj5582diic03" "qj5582d3ps03") | ||
|  | BOARDS_FLX03_GROUP=("flx6710cco03" "flx6711sta03" "flx6711iic03" "flx67113ps03") | ||
|  | BOARDS_SPE03_GROUP=("spe7303cco03" "spe7301sta03" "spe7301iic03" "spe73013ps03") | ||
|  | BOARDS_GX03_GROUP=("gx2001cco03" "gx2011sta03" "gx2011iic03" "gx20113ps03") | ||
|  | BOARDS_DT03_GROUP=("dt0530cco03" "dt0531sta03" "dt0531iic03" "dt05313ps03") | ||
|  | 
 | ||
|  | BOARDS_GOLDF03_GROUP=("goldfinger_17pcco03" "goldfinger_17psta03") | ||
|  | BOARDS_LEDC03_GROUP=("ledccco03" "ledcsta03") | ||
|  | BOARDS_STAMP03_GROUP=("stampcco03" "stampsta03") | ||
|  | 
 | ||
|  | #sg app support. | ||
|  | SG_GROUP_CHIPCLASS=("HZ"     "HZ"         "HZ"         "HZ"         "HZ"        "HZ"          "HZ"          "HZ") | ||
|  | SG_GROUP_CHIPID=("P3201"     "P3201"      "P3211"      "P3211"      "P3201"     "P3201"       "P3201"       "P3211") | ||
|  | SG_GROUP_CORE_TYPE=("PLC"    "PLC"        "PLC"        "PLC"        "AMPPLC"    "AMPPLC"      "PLC"         "PLC") | ||
|  | SG_GROUP_IMG_TYPE=("CCO"     "CCO"        "STA"        "STA"        "CCO"       "CCO"         "CCO"         "STA") | ||
|  | SG_GROUP_FLASH_SIZE=(4         4            4            4            4           4             4             4) | ||
|  | SG_GROUP_PSRAM_SIZE=(8         8            0            0            8           8             8             0) | ||
|  | SG_GROUP_RF_OPT=("RF"        "NO_RF"      "RF"         "NO_RF"      "RF"        "NO_RF"       "RF"          "RF") | ||
|  | SG_GROUP_DUAL_OPT=("DUAL"    "NO_DUAL"    "DUAL"       "NO_DUAL"    "DUAL"      "NO_DUAL"     "NO_DUAL"     "NO_DUAL") | ||
|  | SG_GROUP_LENGTH=${#SG_GROUP_CHIPCLASS[*]} | ||
|  | 
 | ||
|  | #sg ext app support. | ||
|  | SG_EXT_GROUP_CHIPCLASS=("HZ"     "HZ"         "HZ"         "HZ"         "HZ"        "HZ"          "HZ"          "HZ") | ||
|  | SG_EXT_GROUP_CHIPID=("P3201"     "P3201"      "P3211"      "P3211"      "P3201"     "P3201"       "P3201"       "P3211") | ||
|  | SG_EXT_GROUP_CORE_TYPE=("PLC"    "PLC"        "PLC"        "PLC"        "AMPPLC"    "AMPPLC"      "PLC"         "PLC") | ||
|  | SG_EXT_GROUP_IMG_TYPE=("CCO"     "CCO"        "STA"        "STA"        "CCO"       "CCO"         "CCO"         "STA") | ||
|  | SG_EXT_GROUP_FLASH_SIZE=(4         4            4            4            4           4             4             4) | ||
|  | SG_EXT_GROUP_PSRAM_SIZE=(8         8            0            0            8           8             8             0) | ||
|  | SG_EXT_GROUP_RF_OPT=("RF"        "NO_RF"      "RF"         "NO_RF"      "RF"        "NO_RF"       "RF"          "RF") | ||
|  | SG_EXT_GROUP_DUAL_OPT=("DUAL"    "NO_DUAL"    "DUAL"       "NO_DUAL"    "DUAL"      "NO_DUAL"     "NO_DUAL"     "NO_DUAL") | ||
|  | SG_EXT_GROUP_LENGTH=${#SG_EXT_GROUP_CHIPCLASS[*]} | ||
|  | 
 | ||
|  | #demo app support. | ||
|  | DEMO_GROUP_CHIPCLASS=("WQ"      "WQ") | ||
|  | DEMO_GROUP_CHIPID=("P3031"      "P3031") | ||
|  | DEMO_GROUP_CORE_TYPE=("PLC"     "PLC") | ||
|  | DEMO_GROUP_IMG_TYPE=("CCO"      "STA") | ||
|  | DEMO_GROUP_FLASH_SIZE=(2          2) | ||
|  | DEMO_GROUP_PSRAM_SIZE=(0          0) | ||
|  | DEMO_GROUP_RF_OPT=("NO_RF"      "NO_RF") | ||
|  | DEMO_GROUP_DUAL_OPT=("NO_DUAL"      "NO_DUAL") | ||
|  | DEMO_GROUP_LENGTH=${#DEMO_GROUP_CHIPCLASS[*]} | ||
|  | 
 | ||
|  | #cus_at app support. | ||
|  | CUS_AT_GROUP_CHIPCLASS=("WQ"     "WQ") | ||
|  | CUS_AT_GROUP_CHIPID=("P3031"     "P3031") | ||
|  | CUS_AT_GROUP_CORE_TYPE=("PLC"    "PLC") | ||
|  | CUS_AT_GROUP_IMG_TYPE=("CCO"     "STA") | ||
|  | CUS_AT_GROUP_FLASH_SIZE=(2         2) | ||
|  | CUS_AT_GROUP_PSRAM_SIZE=(0         0) | ||
|  | CUS_AT_GROUP_RF_OPT=("NO_RF"     "NO_RF") | ||
|  | CUS_AT_GROUP_DUAL_OPT=("NO_DUAL"      "NO_DUAL") | ||
|  | CUS_AT_GROUP_LENGTH=${#CUS_AT_GROUP_CHIPCLASS[*]} | ||
|  | ###################### EDIT END ################################### | ||
|  | 
 | ||
|  | #DEF_DEBUG. | ||
|  | for k in $@; do | ||
|  |     for sdk_type in ${GROUP_SDK_TYPE[@]}; do | ||
|  |         if [ "$k" == "${sdk_type}" ]; then | ||
|  |             DEF_SDK_TYPE="${sdk_type}" | ||
|  |             break | ||
|  |         fi | ||
|  |     done | ||
|  | done | ||
|  | 
 | ||
|  | #DEF_DEBUG. | ||
|  | for k in $@; do | ||
|  |     if [ "$k" == "debug" ]; then | ||
|  |         DEF_RELEASE="debug" | ||
|  |     fi | ||
|  | done | ||
|  | 
 | ||
|  | #DEF_LIBAPP. | ||
|  | if [ "${DEF_SDK_TYPE}" == "sg_ext" ] || [ "${DEF_SDK_TYPE}" == "iot_ext" ]; then | ||
|  |     DEF_LIBAPP="true" | ||
|  | else | ||
|  |     DEF_LIBAPP="false" | ||
|  | fi | ||
|  | 
 | ||
|  | #DEF_SG_TYPE. | ||
|  | for k in $@; do | ||
|  |     for sg_type in ${GROUP_SG_TYPE[@]}; do | ||
|  |         if [ "$k" == "${sg_type}" ]; then | ||
|  |             DEF_SG_TYPE="${sg_type}" | ||
|  |             break | ||
|  |         fi | ||
|  |     done | ||
|  | done | ||
|  | 
 | ||
|  | ###################### THE BELLOW WILL NOT BE EDIT EVEN IF TO ADD NEW SDK ######################## | ||
|  | 
 | ||
|  | #print help info. | ||
|  | if [ "?" == "$1" ] || [ "" == "${DEF_SDK_TYPE}" ]; then | ||
|  |     echo  "* usage: $0 [SDK_TYPE] [SG_TYPE] [DBG_OPTION]" | ||
|  |     echo  "*   [SDK_TYPE] -- Necessary, (${GROUP_SDK_TYPE[@]})" | ||
|  |     echo  "*     sg:    provide sg app in source code style. sg_ext:    provide sg app in library style." | ||
|  |     echo  "*     iot:   provide iot apps in source code style.  iot_ext:   provide iot apps in library style." | ||
|  |     echo  "*   [SG_TYPE] -- Necessary when SDK_TYPE is sg or sg_ext, (${GROUP_SG_TYPE[@]}), no need when SDK_TYPE is iot and iot_ext" | ||
|  |     echo  "*     gw:   gw app." | ||
|  |     echo  "*     nw:   nw app." | ||
|  |     echo  "*   [DBG_OPTION] -- Optional, debug or release, null means release." | ||
|  |     echo  "" | ||
|  |     echo  "*   example:" | ||
|  |     echo  "*   ./build_kl3_sdk_gen.sh sg_ext gw debug" | ||
|  |     echo  "*   ./build_kl3_sdk_gen.sh iot_ext debug" | ||
|  |     echo  "" | ||
|  |     echo  "*********************** NAME DESCRIPTION *********************************" | ||
|  |     echo  "*   [CHIP CLASS] -- (${CHIP_CLASS_STR[@]})." | ||
|  |     echo  "*   [CHIP ID] -- (${CHIP_ID_STR[@]})." | ||
|  |     echo  "*   [CORE_TYPE] -- (AMPPLC PLC), AMPPLC:dual-core architecture, include cus_core and plc_core; PLC:single core architecture, only have plc_core." | ||
|  |     echo  "*   [IMG_TYPE] -- (CCO STA), img type, cco or sta." | ||
|  |     echo  "*   [FLASH_SIZE] -- (2M 4M), flash size that support." | ||
|  |     echo  "*   [PSRAM_SIZE] -- (0M 8M), psram size that support." | ||
|  |     echo  "*   [RF_OPT] -- (RF NO_RF), with rf or not." | ||
|  |     echo  "*   [DUAL_OPT] -- (DUAL NO_DUAL), with dual or not." | ||
|  |     echo  "" | ||
|  |     echo  "sg-type support img as follows:" | ||
|  |     echo  "*******(CHIP_CLASS CHIP_ID CORE_TYPE BOARD IMG_TYPE FLASH_SIZE PSRAM_SIZE RF_OPT DUAL_OPT):" | ||
|  |     echo "*********************** SG APP ********************************************" | ||
|  |     for ((index=0; index < SG_GROUP_LENGTH; index++)); do | ||
|  |         echo "*   $index. (${SG_GROUP_CHIPCLASS[$index]} ${SG_GROUP_CHIPID[$index]} ${SG_GROUP_CORE_TYPE[$index]} ${SG_GROUP_IMG_TYPE[$index]} "\
 | ||
|  |       "${SG_GROUP_FLASH_SIZE[$index]}M flash ${SG_GROUP_PSRAM_SIZE[$index]}M psram  ${SG_GROUP_RF_OPT[$index]} ${SG_GROUP_DUAL_OPT[$index]})" | ||
|  |     done | ||
|  |     echo "" | ||
|  |     echo  "sg_ext-type support img as follows:" | ||
|  |     echo  "*******(CHIP_CLASS CHIP_ID CORE_TYPE BOARD IMG_TYPE FLASH_SIZE PSRAM_SIZE RF_OPT DUAL_OPT):" | ||
|  |     echo "*********************** SG_EXT APP ********************************************" | ||
|  |     for ((index=0; index < SG_EXT_GROUP_LENGTH; index++)); do | ||
|  |         echo "*   $index. (${SG_EXT_GROUP_CHIPCLASS[$index]} ${SG_EXT_GROUP_CHIPID[$index]} ${SG_EXT_GROUP_CORE_TYPE[$index]} ${SG_EXT_GROUP_IMG_TYPE[$index]} "\
 | ||
|  |       "${SG_EXT_GROUP_FLASH_SIZE[$index]}M flash ${SG_EXT_GROUP_PSRAM_SIZE[$index]}M psram  ${SG_EXT_GROUP_RF_OPT[$index]} ${SG_EXT_GROUP_DUAL_OPT[$index]})" | ||
|  |     done | ||
|  |     echo "" | ||
|  |     echo  "(iot-type iot_ext-type) support img as follows:" | ||
|  |     echo  "*******(CHIP_CLASS CHIP_ID CORE_TYPE BOARD IMG_TYPE FLASH_SIZE PSRAM_SIZE RF_OPT DUAL_OPT):" | ||
|  |     echo "*********************** DEMO APP ******************************************" | ||
|  |     for ((index=0; index < DEMO_GROUP_LENGTH; index++)); do | ||
|  |         echo "*   $index. (${DEMO_GROUP_CHIPCLASS[$index]} ${DEMO_GROUP_CHIPID[$index]} ${DEMO_GROUP_CORE_TYPE[$index]} ${DEMO_GROUP_IMG_TYPE[$index]} "\
 | ||
|  |       "${DEMO_GROUP_FLASH_SIZE[$index]}M flash ${DEMO_GROUP_PSRAM_SIZE[$index]}M psram  ${DEMO_GROUP_RF_OPT[$index]} ${DEMO_GROUP_DUAL_OPT[$index]})" | ||
|  |     done | ||
|  |     echo "" | ||
|  |     echo  "*******(CHIP_CLASS CHIP_ID CORE_TYPE BOARD IMG_TYPE FLASH_SIZE PSRAM_SIZE RF_OPT DUAL_OPT):" | ||
|  |     echo "*********************** CUS_AT | SILA APP ****************************************" | ||
|  |     for ((index=0; index < CUS_AT_GROUP_LENGTH; index++)); do | ||
|  |         echo "*   $index. (${CUS_AT_GROUP_CHIPCLASS[$index]} ${CUS_AT_GROUP_CHIPID[$index]} ${CUS_AT_GROUP_CORE_TYPE[$index]} ${CUS_AT_GROUP_IMG_TYPE[$index]} "\
 | ||
|  |       "${CUS_AT_GROUP_FLASH_SIZE[$index]}M flash ${CUS_AT_GROUP_PSRAM_SIZE[$index]}M psram  ${CUS_AT_GROUP_RF_OPT[$index]} ${CUS_AT_GROUP_DUAL_OPT[$index]})" | ||
|  |     done | ||
|  |     echo "" | ||
|  |     echo "*********************************** BOARD SUPPORT IMAGE_TYPE DEFINATION ***********************************" | ||
|  |     echo  "board supports define:" | ||
|  |     echo  "htzd03: (${BOARDS_HTZD03_GROUP[@]})" | ||
|  |     echo  "goldf03: (${BOARDS_GOLDF03_GROUP[@]})" | ||
|  |     echo  "ledc03: (${BOARDS_LEDC03_GROUP[@]})" | ||
|  |     echo  "ledc03: (${BOARDS_STAMP03_GROUP[@]})" | ||
|  |     echo  "" | ||
|  |     echo "**************************************************  END **************************************************" | ||
|  |     exit 0 | ||
|  | fi | ||
|  | 
 | ||
|  | BUILD_NUM=0 | ||
|  | MAINLINE_FOLDER=".." | ||
|  | CMAKE_FOLDER="../../SDKCmake" | ||
|  | CMAKE_SDK_FOLDER="${CMAKE_FOLDER}/kl3_sdk" | ||
|  | SDK_ROOT_FOLDER="../tools/gen_img/KL3_SDK" | ||
|  | OEM_FOLDER="../tools/oem" | ||
|  | PIB_FOLDER="../tools/pib" | ||
|  | TOOLS_FOLDER="../tools/gen_img" | ||
|  | 
 | ||
|  | set -o errexit | ||
|  | 
 | ||
|  | RELEASE_UPPER=$(echo ${DEF_RELEASE} | tr '[a-z]' '[A-Z]') | ||
|  | 
 | ||
|  | if [ "${DEF_SDK_TYPE}" == "sg" ]; then | ||
|  |     TARGET_SDK_FOLDER="${SDK_ROOT_FOLDER}/KL3_SG_SDK_${RELEASE_UPPER}" | ||
|  |     DEF_BOARD_TYPE="htzd03" | ||
|  | elif [ "${DEF_SDK_TYPE}" == "sg_ext" ]; then | ||
|  |     TARGET_SDK_FOLDER="${SDK_ROOT_FOLDER}/KL3_SG_EXT_SDK_${RELEASE_UPPER}" | ||
|  |     DEF_BOARD_TYPE="htzd03" | ||
|  | elif [ "${DEF_SDK_TYPE}" == "iot" ]; then | ||
|  |     TARGET_SDK_FOLDER="${SDK_ROOT_FOLDER}/KL3_IOT_SDK_${RELEASE_UPPER}" | ||
|  |     DEF_BOARD_TYPE="goldf03" | ||
|  | elif [ "${DEF_SDK_TYPE}" == "iot_ext" ]; then | ||
|  |     TARGET_SDK_FOLDER="${SDK_ROOT_FOLDER}/KL3_IOT_EXT_SDK_${RELEASE_UPPER}" | ||
|  |     DEF_BOARD_TYPE="goldf03" | ||
|  | fi | ||
|  | 
 | ||
|  | if [ ! -d ${SDK_ROOT_FOLDER} ]; then | ||
|  |     mkdir -p ${SDK_ROOT_FOLDER} | ||
|  | fi | ||
|  | 
 | ||
|  | if [ -d ${TARGET_SDK_FOLDER} ]; then | ||
|  |     rm -rf ${TARGET_SDK_FOLDER} | ||
|  | fi | ||
|  | 
 | ||
|  | mkdir -p ${TARGET_SDK_FOLDER} | ||
|  | pushd "${TARGET_SDK_FOLDER}" | ||
|  |     mkdir cus_core | ||
|  |     mkdir plc_core | ||
|  |     mkdir resource | ||
|  |     mkdir resource/boards | ||
|  |     mkdir build | ||
|  |     mkdir output | ||
|  |     mkdir tools | ||
|  |     mkdir doc | ||
|  | popd | ||
|  | 
 | ||
|  | #prepare common file. | ||
|  | if [ ! -d ${CMAKE_SDK_FOLDER}/cmake ] || [ ! -d ${CMAKE_SDK_FOLDER}/.scripts ] \
 | ||
|  | || [ ! -d ${MAINLINE_FOLDER}/export/inc ] || [ ! -f ${CMAKE_SDK_FOLDER}/build_target_firmware.sh ]; then | ||
|  |     echo "ERR: common file not exist." | ||
|  |     exit 1 | ||
|  | fi | ||
|  | 
 | ||
|  | cp -r ${CMAKE_SDK_FOLDER}/cmake ${TARGET_SDK_FOLDER} | ||
|  | cp -r ${CMAKE_SDK_FOLDER}/.scripts ${TARGET_SDK_FOLDER}/build | ||
|  | cp ${CMAKE_SDK_FOLDER}/build_target_firmware.sh ${TARGET_SDK_FOLDER}/build | ||
|  | cp ${CMAKE_SDK_FOLDER}/do_filter_sdk.sh ${TARGET_SDK_FOLDER}/ | ||
|  | cp -r ${MAINLINE_FOLDER}/export/inc ${TARGET_SDK_FOLDER} | ||
|  | 
 | ||
|  | sed -i "s/^DEF_RELEASE=.*/DEF_RELEASE=\"${DEF_RELEASE}\"/g" ${TARGET_SDK_FOLDER}/build/build_target_firmware.sh | ||
|  | sed -i "s/^SDK_FOLDER_NAME=.*/SDK_FOLDER_NAME=\"$(basename ${TARGET_SDK_FOLDER})\"/g" ${TARGET_SDK_FOLDER}/do_filter_sdk.sh | ||
|  | 
 | ||
|  | if [ "${DEF_SDK_TYPE}" == "sg" ] || [ "${DEF_SDK_TYPE}" == "sg_ext" ]; then | ||
|  |     group_boards_type="${GROUP_BOARDS_TYPE_SG[@]}" | ||
|  | else | ||
|  |     group_boards_type="${GROUP_BOARDS_TYPE_IOT[@]}" | ||
|  | fi | ||
|  | sed -i "s/^GROUP_BOARDS_TYPE=.*/GROUP_BOARDS_TYPE=\(${group_boards_type}\)/g" ${TARGET_SDK_FOLDER}/do_filter_sdk.sh | ||
|  | 
 | ||
|  | IOT_VER_FILE="${MAINLINE_FOLDER}/inc/iot_version.h" | ||
|  | get_iot_ver() { | ||
|  |     ver_file=$1 | ||
|  |     major_ver=`cat ${ver_file} |grep " AP_FIRMWARE_VERSION_MAJOR"|awk '{print $3}'` | ||
|  |     mionor_ver=`cat ${ver_file} |grep " AP_FIRMWARE_VERSION_MINOR"|awk '{print $3}'` | ||
|  |     micro_ver=`cat ${ver_file} |grep " AP_FIRMWARE_VERSION_MICRO"|awk '{print $3}'` | ||
|  |     build_ver=`cat ${ver_file} |grep " AP_FIRMWARE_VERSION_BUILD"|awk '{print $3}'` | ||
|  | 
 | ||
|  |     major_ver=${major_ver//(/} | ||
|  |     major_ver=${major_ver//)/} | ||
|  |     mionor_ver=${mionor_ver//(/} | ||
|  |     mionor_ver=${mionor_ver//)/} | ||
|  |     micro_ver=${micro_ver//(/} | ||
|  |     micro_ver=${micro_ver//)/} | ||
|  |     build_ver=${build_ver//(/} | ||
|  |     build_ver=${build_ver//)/} | ||
|  | 
 | ||
|  |     IOT_VER="${major_ver}.${mionor_ver}.${micro_ver}.${build_ver}" | ||
|  |     return | ||
|  | } | ||
|  | 
 | ||
|  | get_git_ver() { | ||
|  |     ver_file=$1 | ||
|  |     commit_id=`git log -1 | grep "commit" | awk '{print $2}'` | ||
|  | 
 | ||
|  |     GIT_VER="${commit_id:0:6}" | ||
|  |     return | ||
|  | } | ||
|  | 
 | ||
|  | #generate oem and pib bin. | ||
|  | prepare_oem_pib_bin() { | ||
|  |     local sdk_type=$1 | ||
|  |     local board_type_upper=$(echo $2 | tr '[a-z]' '[A-Z]') | ||
|  |     local target_board_dir=$3 | ||
|  |     PIB_IMG=${board_type_upper} | ||
|  |     LP_PIB_IMG=${board_type_upper} | ||
|  |     OEM_IMG=${board_type_upper} | ||
|  |     OEM_AMP_IMG= | ||
|  | 
 | ||
|  |     if [ "${sdk_type}" == "iot" ] || [ "${sdk_type}" == "iot_ext" ]; then | ||
|  |         if [[ "${board_type_upper}" == "GOLDFINGER_17P"* ]]; then | ||
|  |             OEM_IMG="GOLDFINGER_17P03" | ||
|  |             OEM_AMP_IMG="GOLDFINGER_17P03_AMPIOT" | ||
|  |         fi | ||
|  |         if [[ "${board_type_upper}" == "LEDC"* ]]; then | ||
|  |             OEM_IMG="LEDC03" | ||
|  |         fi | ||
|  |         if [[ "${board_type_upper}" == "STAMP"* ]]; then | ||
|  |             OEM_IMG="STAMP03" | ||
|  |         fi | ||
|  | 
 | ||
|  |         #plc oem | ||
|  |         oem_ini="${OEM_FOLDER}/${OEM_IMG}_OEM.ini" | ||
|  |         if [ ! -f "${oem_ini}" ]; then | ||
|  |             echo "[WARNING!!!] ${oem_ini} not exist." | ||
|  |             return 1 | ||
|  |         fi | ||
|  |         cp ${oem_ini} ./tmp_oem.ini | ||
|  |         if [[ "${board_type_upper}"  == *"STA03" ]]; then | ||
|  |             sed -i "s/mid.*/mid 0/g" ./tmp_oem.ini | ||
|  |         fi | ||
|  |         if [[ "${board_type_upper}"  == *"CCO03" ]]; then | ||
|  |             sed -i "s/mid.*/mid 1/g" ./tmp_oem.ini | ||
|  |         fi | ||
|  |         $OEM_TOOL --input=./tmp_oem.ini --output=${target_board_dir}/oem_plc.bin | ||
|  |         rm ./tmp_oem.ini | ||
|  |         #amp oem | ||
|  |         if [ "x${OEM_AMP_IMG}" != "x" ]; then | ||
|  |             oem_ini="${OEM_FOLDER}/${OEM_AMP_IMG}_OEM.ini" | ||
|  |             if [ ! -f "${oem_ini}" ]; then | ||
|  |                 echo "[WARNING!!!] ${oem_ini} not exist." | ||
|  |                 return 1 | ||
|  |             fi | ||
|  |             cp ${oem_ini} ./tmp_oem.ini | ||
|  |             if [[ "${board_type_upper}"  == *"STA03" ]]; then | ||
|  |                 sed -i "s/mid.*/mid 0/g" ./tmp_oem.ini | ||
|  |             fi | ||
|  |             if [[ "${board_type_upper}"  == *"CCO03" ]]; then | ||
|  |                 sed -i "s/mid.*/mid 1/g" ./tmp_oem.ini | ||
|  |             fi | ||
|  |             $OEM_TOOL --input=./tmp_oem.ini --output=${target_board_dir}/oem_amp.bin | ||
|  |             rm ./tmp_oem.ini | ||
|  |         fi | ||
|  | 
 | ||
|  |         PIB_IMG=${PIB_IMG/IIC/STA} | ||
|  |         PIB_IMG=${PIB_IMG/3PS/STA} | ||
|  |         LP_PIB_IMG=${LP_PIB_IMG/IIC/STA} | ||
|  |         LP_PIB_IMG=${LP_PIB_IMG/3PS/STA} | ||
|  |         if [[ "${PIB_IMG}" == *"CCO03" ]]; then | ||
|  |             PIB_IMG=$(echo ${PIB_IMG} | sed -n "s/^.*CCO03/HTZD3201CCO03/p") | ||
|  |             LP_PIB_IMG=$(echo ${LP_PIB_IMG} | sed -n "s/^.*CCO03/HTZD3201CCO03_LP/p") | ||
|  |         fi | ||
|  |         if [[ "${PIB_IMG}" == *"STA03" ]]; then | ||
|  |             PIB_IMG=$(echo ${PIB_IMG} | sed -n "s/^.*STA03/HTZD3211STA03/p") | ||
|  |             LP_PIB_IMG=$(echo ${LP_PIB_IMG} | sed -n "s/^.*STA03/HTZD3211STA03_LP/p") | ||
|  |         fi | ||
|  |         pib_file="${PIB_FOLDER}/${PIB_IMG}_PIB.bin" | ||
|  |         lp_pib_file="${PIB_FOLDER}/${LP_PIB_IMG}_PIB.bin" | ||
|  |         echo iot pib_file:${pib_file} | ||
|  |         echo iot lp_pib_file:${lp_pib_file} | ||
|  |         cp ${pib_file} ${target_board_dir}/pib.bin | ||
|  |         cp ${lp_pib_file} ${target_board_dir}/lp_pib.bin | ||
|  | 
 | ||
|  |     else | ||
|  |         #plc oem | ||
|  |         oem_ini="${OEM_FOLDER}/${OEM_IMG}_OEM.ini" | ||
|  |         if [ ! -f "${oem_ini}" ]; then | ||
|  |             echo "[WARNING!!!] ${oem_ini} not exist." | ||
|  |             return 1 | ||
|  |         fi | ||
|  | 
 | ||
|  |         cp ${oem_ini} ./tmp_oem.ini | ||
|  |         $OEM_TOOL --input=./tmp_oem.ini --output=${target_board_dir}/oem_plc.bin | ||
|  |         rm ./tmp_oem.ini | ||
|  | 
 | ||
|  |         if [[ "${board_type_upper}" == "HTZD3201CCO"* ]]; then | ||
|  |             OEM_AMP_IMG="HTZD3201CCO03_AMPSG" | ||
|  |         fi | ||
|  | 
 | ||
|  |         #amp oem | ||
|  |         if [ "x${OEM_AMP_IMG}" != "x" ]; then | ||
|  |             oem_ini="${OEM_FOLDER}/${OEM_AMP_IMG}_OEM.ini" | ||
|  |             if [ ! -f "${oem_ini}" ]; then | ||
|  |                 echo "[WARNING!!!] ${oem_ini} not exist." | ||
|  |                 return 1 | ||
|  |             fi | ||
|  |             cp ${oem_ini} ./tmp_oem.ini | ||
|  |             $OEM_TOOL --input=./tmp_oem.ini --output=${target_board_dir}/oem_amp.bin | ||
|  |             rm ./tmp_oem.ini | ||
|  |         fi | ||
|  | 
 | ||
|  |         PIB_IMG=${PIB_IMG/IIC/STA} | ||
|  |         PIB_IMG=${PIB_IMG/3PS/STA} | ||
|  |         LP_PIB_IMG=${LP_PIB_IMG/IIC/STA} | ||
|  |         LP_PIB_IMG=${LP_PIB_IMG/3PS/STA} | ||
|  | 
 | ||
|  |         if [[ "${PIB_IMG}" == *"CCO03" ]]; then | ||
|  |             if [ "${DEF_SG_TYPE}" == "nw" ]; then | ||
|  |                 PIB_IMG=$(echo ${PIB_IMG} | sed -n "s/^.*CCO03/HTZDCCO01_NW/p") | ||
|  |                 LP_PIB_IMG=$(echo ${LP_PIB_IMG} | sed -n "s/^.*CCO03/HTZDCCO01_NW_LP/p") | ||
|  |             else | ||
|  |                 PIB_IMG=$(echo ${PIB_IMG} | sed -n "s/^.*CCO03/HTZDCCO01/p") | ||
|  |                 LP_PIB_IMG=$(echo ${LP_PIB_IMG} | sed -n "s/^.*CCO03/HTZDCCO01_LP/p") | ||
|  |             fi | ||
|  | 
 | ||
|  |             if [ "${DEF_SG_TYPE}" == "nw" ]; then | ||
|  |                 lp_guangdong_pib_file="${PIB_FOLDER}/HTZDCCO01_NW_LP_GUANGDONG_PIB.bin" | ||
|  |                 echo sg lp_guangdong_pib_file:${lp_guangdong_pib_file} | ||
|  |                 cp ${lp_guangdong_pib_file} ${target_board_dir}/lp_guangdong_pib.bin | ||
|  |             fi | ||
|  | 
 | ||
|  |         fi | ||
|  |         if [[ "${PIB_IMG}" == *"STA03" ]]; then | ||
|  |             PIB_IMG=$(echo ${PIB_IMG} | sed -n "s/^.*STA03/HTZDSTA01/p") | ||
|  |             LP_PIB_IMG=$(echo ${LP_PIB_IMG} | sed -n "s/^.*STA03/HTZDSTA01_LP/p") | ||
|  |         fi | ||
|  |         pib_file="${PIB_FOLDER}/${PIB_IMG}_PIB.bin" | ||
|  |         lp_pib_file="${PIB_FOLDER}/${LP_PIB_IMG}_PIB.bin" | ||
|  |         echo sg pib_file:${pib_file} | ||
|  |         echo sg lp_pib_file:${lp_pib_file} | ||
|  |         cp ${pib_file} ${target_board_dir}/pib.bin | ||
|  |         cp ${lp_pib_file} ${target_board_dir}/lp_pib.bin | ||
|  | 
 | ||
|  |     fi | ||
|  | 
 | ||
|  | 
 | ||
|  | } | ||
|  | 
 | ||
|  | #generate board resource. | ||
|  | gen_boards_resource() { | ||
|  |     #prepare tools. | ||
|  |     ./build_ah.sh kl3 | ||
|  |     ./build_lzma.sh kl3 | ||
|  |     ./build_oem_tool.sh kl3 | ||
|  |     cp ${TOOLS_FOLDER}/elzma ${TARGET_SDK_FOLDER}/tools | ||
|  |     cp ${TOOLS_FOLDER}/ah ${TARGET_SDK_FOLDER}/tools | ||
|  | 
 | ||
|  |     target_board_resource_dir=${TARGET_SDK_FOLDER}/resource/boards | ||
|  |     OEM_TOOL="${TOOLS_FOLDER}/oem_tool" | ||
|  | 
 | ||
|  |     boards_support=() | ||
|  |     board_num=0 | ||
|  |     if [ "${DEF_SDK_TYPE}" == "sg" ] || [ "${DEF_SDK_TYPE}" == "sg_ext" ]; then | ||
|  |         GROUP_BOARDS_TYPE=(${GROUP_BOARDS_TYPE_SG[@]}) | ||
|  |     else | ||
|  |         GROUP_BOARDS_TYPE=(${GROUP_BOARDS_TYPE_IOT[@]}) | ||
|  |     fi | ||
|  | 
 | ||
|  |     for boards_type in ${GROUP_BOARDS_TYPE[@]}; do | ||
|  |         BOARD_TYPE_KW=$(echo ${boards_type} | tr '[a-z]' '[A-Z]') | ||
|  |         eval BOARDS_GROUP="\${BOARDS_${BOARD_TYPE_KW}_GROUP[@]}" | ||
|  |         for board_item in ${BOARDS_GROUP}; do | ||
|  |             mkdir -p ${target_board_resource_dir}/${board_item} | ||
|  |             prepare_oem_pib_bin ${DEF_SDK_TYPE} ${board_item} ${target_board_resource_dir}/${board_item} | ||
|  |             boards_support[${board_num}]=${board_item} | ||
|  |             ((board_num=${board_num}+1)) | ||
|  |         done | ||
|  |     done | ||
|  | 
 | ||
|  |     boards_support="${boards_support[@]}" | ||
|  |     sed -i "/^BOARD_SUPPORT_NUM=.*/i BOARDS_SUPPORT=\(${boards_support}\)" ${TARGET_SDK_FOLDER}/build/build_target_firmware.sh | ||
|  |     sed -i "s/^BOARD_SUPPORT_NUM=.*/BOARD_SUPPORT_NUM=${board_num}/" ${TARGET_SDK_FOLDER}/build/build_target_firmware.sh | ||
|  |     sed -i "/^BOARD_SUPPORT_NUM=.*/i BOARDS_SUPPORT=\(${boards_support}\)" ${TARGET_SDK_FOLDER}/do_filter_sdk.sh | ||
|  |     sed -i "s/^BOARD_SUPPORT_NUM=.*/BOARD_SUPPORT_NUM=${board_num}/" ${TARGET_SDK_FOLDER}/do_filter_sdk.sh | ||
|  | } | ||
|  | 
 | ||
|  | #build_sdk_start chip_class chip_id img_type app_name core_type flash_size psram_size proto_type rf_opt dual_opt boot_opt. | ||
|  | build_sdk_start() { | ||
|  |     local chip_class=$1 | ||
|  |     local chip_id=$2 | ||
|  |     local img_type=$3 | ||
|  |     local app=$4 | ||
|  |     local core_type=$5 | ||
|  |     local flash_size=$6 | ||
|  |     local psram_size=$7 | ||
|  |     local proto_type=$8 | ||
|  |     local rf_opt=$9 | ||
|  |     local dual_opt=${10} | ||
|  |     local boot_opt=${11} | ||
|  | 
 | ||
|  |     local cus_appid=17 | ||
|  |     local chip_class_lower=$(echo ${chip_class} | tr '[A-Z]' '[a-z]') | ||
|  |     local chip_id_lower=$(echo ${chip_id} | tr '[A-Z]' '[a-z]') | ||
|  |     local img_type_lower=$(echo ${img_type} | tr '[A-Z]' '[a-z]') | ||
|  |     local app_lower=$(echo ${app} | tr '[A-Z]' '[a-z]') | ||
|  |     local core_type_lower=$(echo ${core_type} | tr '[A-Z]' '[a-z]') | ||
|  |     local proto_type_lower=$(echo ${proto_type} | tr '[A-Z]' '[a-z]') | ||
|  |     local rf_opt_lower=$(echo ${rf_opt} | tr '[A-Z]' '[a-z]') | ||
|  |     local dual_opt_lower=$(echo ${dual_opt} | tr '[A-Z]' '[a-z]') | ||
|  |     local platform_type="CHIP" | ||
|  | 
 | ||
|  |     if [ "${app_lower}" == "sg" ]; then | ||
|  |         app_id="0" | ||
|  |     elif [ "${app_lower}" == "sg_ext" ]; then | ||
|  |         app_id="5" | ||
|  |     elif [ "${app_lower}" == "demo" ]; then | ||
|  |         app_id="3" | ||
|  |     elif [ "${app_lower}" == "cus_at" ]; then | ||
|  |         app_id="18" | ||
|  |     elif [ "${app_lower}" == "sila" ]; then | ||
|  |         app_id="24" | ||
|  |     else | ||
|  |         echo "Unsupport app:${app_lower}" | ||
|  |         return 1 | ||
|  |     fi | ||
|  | 
 | ||
|  |     if [ ${core_type_lower} == "ampplc" ]; then | ||
|  |         local amp_kb="amp" | ||
|  |         CFG_DIR="${MAINLINE_FOLDER}/build/cfg3" | ||
|  |     else | ||
|  |         local amp_kb="plc" | ||
|  |         CFG_DIR="${MAINLINE_FOLDER}/build/cfg3_plc" | ||
|  |     fi | ||
|  | 
 | ||
|  |     #prepare app. | ||
|  |     target_cus_core_dir="${TARGET_SDK_FOLDER}/cus_core" | ||
|  |     target_plc_core_dir="${TARGET_SDK_FOLDER}/plc_core" | ||
|  | 
 | ||
|  |     if [ "${core_type_lower}" == "ampplc" ]; then | ||
|  |         if [ "${app_lower}" == "cus_at" ]; then | ||
|  |             if [ ! -d "${target_cus_core_dir}/cus_at_app" ]; then | ||
|  |                 mkdir -p ${target_cus_core_dir}/cus_at_app | ||
|  |                 cp -rf ${MAINLINE_FOLDER}/app/iot_cuscore_at_app/* ${target_cus_core_dir}/cus_at_app | ||
|  |                 cp -rf ${CMAKE_SDK_FOLDER}/kl3_iot_cuscore_at_app/. ${target_cus_core_dir}/cus_at_app | ||
|  |                 cp -rf ${MAINLINE_FOLDER}/app/utils/iot_load_plc.* ${target_cus_core_dir}/cus_at_app | ||
|  |             fi | ||
|  |             cus_appid=23 | ||
|  |         else | ||
|  |             if [ ! -d "${target_cus_core_dir}/cus_demo_app" ]; then | ||
|  |                 mkdir -p ${target_cus_core_dir}/cus_demo_app | ||
|  |                 cp -rf ${MAINLINE_FOLDER}/app/iot_cuscore_demo_app/* ${target_cus_core_dir}/cus_demo_app | ||
|  |                 cp -rf ${CMAKE_SDK_FOLDER}/kl3_iot_cuscore_demo_app/. ${target_cus_core_dir}/cus_demo_app | ||
|  |                 cp -rf ${MAINLINE_FOLDER}/app/utils/iot_load_plc.* ${target_cus_core_dir}/cus_demo_app | ||
|  |             fi | ||
|  |             cus_appid=17 | ||
|  |         fi | ||
|  |     fi | ||
|  | 
 | ||
|  |     if [ "${app_lower}" == "sg" ] && [ ! -e ${target_plc_core_dir}/${app_lower}_app ]; then | ||
|  |         mkdir -p ${target_plc_core_dir}/${app_lower}_app | ||
|  |         cp -rf ${CMAKE_SDK_FOLDER}/kl3_sg_app/. ${target_plc_core_dir}/${app_lower}_app | ||
|  |         cp -rf ${MAINLINE_FOLDER}/app/smart_grid/* ${target_plc_core_dir}/${app_lower}_app | ||
|  |     elif [ "${app_lower}" == "sg_ext" ] && [ ! -e ${target_plc_core_dir}/${app_lower}_app ]; then | ||
|  |         mkdir -p ${target_plc_core_dir}/${app_lower}_app | ||
|  |         cp -rf ${CMAKE_SDK_FOLDER}/kl3_sg_ext_app/. ${target_plc_core_dir}/${app_lower}_app | ||
|  |         cp -rf ${MAINLINE_FOLDER}/app/smart_grid_extend/* ${target_plc_core_dir}/${app_lower}_app | ||
|  |     elif [ "${app_lower}" == "demo" ] && [ ! -e ${target_plc_core_dir}/${app_lower}_app ]; then | ||
|  |         mkdir -p ${target_plc_core_dir}/${app_lower}_app | ||
|  |         cp -rf ${CMAKE_SDK_FOLDER}/kl3_iot_demo_app/. ${target_plc_core_dir}/${app_lower}_app | ||
|  |         if [ "${DEF_LIBAPP}" == "false" ]; then | ||
|  |             cp -rf ${MAINLINE_FOLDER}/app/demo/* ${target_plc_core_dir}/${app_lower}_app | ||
|  |             rm -f ${target_plc_core_dir}/${app_lower}_app/demo_speed_test* | ||
|  |             sed -i "/#elif (IOT_DEMO_SUB_FUN == IOT_DEMO_SEL_SPEED_TEST)/,/app_demo_spd_module_init();/d" ${target_plc_core_dir}/${app_lower}_app/demo.c | ||
|  |             # copy utils files. | ||
|  |             cp -rf ${MAINLINE_FOLDER}/app/utils/* ${target_plc_core_dir}/${app_lower}_app | ||
|  |             rm -f ${target_plc_core_dir}/${app_lower}_app/iot_load_plc.* | ||
|  |         fi | ||
|  |     elif [ "${app_lower}" == "ge" ] && [ ! -e ${target_plc_core_dir}/${app_lower}_app ]; then | ||
|  |         mkdir -p ${target_plc_core_dir}/${app_lower}_app | ||
|  |         cp -rf ${CMAKE_SDK_FOLDER}/kl3_iot_ge_app/. ${target_plc_core_dir}/${app_lower}_app | ||
|  |         if [ "${DEF_LIBAPP}" == "false" ]; then | ||
|  |             cp -rf ${MAINLINE_FOLDER}/app/grapp/* ${target_plc_core_dir}/${app_lower}_app | ||
|  |         fi | ||
|  |     elif [ "${app_lower}" == "cus_at" ] && [ ! -e ${target_plc_core_dir}/${app_lower}_app ]; then | ||
|  |         mkdir -p ${target_plc_core_dir}/${app_lower}_app | ||
|  |         cp -rf ${CMAKE_SDK_FOLDER}/kl3_iot_cus_at_app/. ${target_plc_core_dir}/${app_lower}_app | ||
|  |         if [ "${DEF_LIBAPP}" == "false" ]; then | ||
|  |             cp -rf ${MAINLINE_FOLDER}/app/iot_cus_at_app/at ${target_plc_core_dir}/${app_lower}_app/ | ||
|  |             cp -rf ${MAINLINE_FOLDER}/app/iot_cus_at_app/common ${target_plc_core_dir}/${app_lower}_app/ | ||
|  |             cp -rf ${MAINLINE_FOLDER}/app/iot_cus_at_app/driver ${target_plc_core_dir}/${app_lower}_app/ | ||
|  |             cp -rf ${MAINLINE_FOLDER}/app/iot_cus_at_app/customer ${target_plc_core_dir}/${app_lower}_app/ | ||
|  |             rm -f ${target_plc_core_dir}/${app_lower}_app/driver/app_gpio* | ||
|  |             sed -i "/#if APP_IO_OPERATION_ENABLE/,/#endif \/\* end APP_IO_OPERATION_ENABLE \*\//d" ${target_plc_core_dir}/${app_lower}_app/at/app_atcmd_handle.c | ||
|  |             sed -i "/#if APP_IO_OPERATION_ENABLE/,/#endif \/\* end APP_IO_OPERATION_ENABLE \*\//d" ${target_plc_core_dir}/${app_lower}_app/common/app_config.c | ||
|  |             sed -i "/#if APP_IO_OPERATION_ENABLE/,/#endif \/\* end APP_IO_OPERATION_ENABLE \*\//d" ${target_plc_core_dir}/${app_lower}_app/common/app_main.c | ||
|  |             sed -i "/#if (IOT_AT_ONLY == 1)/d" ${target_plc_core_dir}/${app_lower}_app/at/app_atcmd_handle.c | ||
|  |             sed -i "/#else \/\* else IOT_AT_ONLY == 0 \*\//,/#endif \/\* end IOT_AT_ONLY \*\//d" ${target_plc_core_dir}/${app_lower}_app/at/app_atcmd_handle.c | ||
|  |             # copy utils files. | ||
|  |             cp -rf ${MAINLINE_FOLDER}/app/utils ${target_plc_core_dir}/${app_lower}_app/ | ||
|  |         fi | ||
|  |     elif [ "${app_lower}" == "sila" ] && [ ! -e ${target_plc_core_dir}/${app_lower}_app ]; then | ||
|  |         mkdir -p ${target_plc_core_dir}/${app_lower}_app | ||
|  |         cp -rf ${CMAKE_SDK_FOLDER}/kl3_iot_sila_app/. ${target_plc_core_dir}/${app_lower}_app | ||
|  |         if [ "${DEF_LIBAPP}" == "false" ]; then | ||
|  |             cp -rf ${MAINLINE_FOLDER}/app/iot_cus_at_app/at ${target_plc_core_dir}/${app_lower}_app/ | ||
|  |             cp -rf ${MAINLINE_FOLDER}/app/iot_cus_at_app/common ${target_plc_core_dir}/${app_lower}_app/ | ||
|  |             cp -rf ${MAINLINE_FOLDER}/app/iot_cus_at_app/driver ${target_plc_core_dir}/${app_lower}_app/ | ||
|  |             cp -rf ${MAINLINE_FOLDER}/app/iot_cus_at_app/customer ${target_plc_core_dir}/${app_lower}_app/ | ||
|  |             cp -rf ${MAINLINE_FOLDER}/app/iot_cus_at_app/proto ${target_plc_core_dir}/${app_lower}_app/ | ||
|  |             sed -i "/#if (IOT_AT_ONLY == 1)/,/#else \/\* else IOT_AT_ONLY == 0 \*\//d" ${target_plc_core_dir}/${app_lower}_app/at/app_atcmd_handle.c | ||
|  |             sed -i "/#endif \/\* end IOT_AT_ONLY \*\//d" ${target_plc_core_dir}/${app_lower}_app/at/app_atcmd_handle.c | ||
|  |             # copy utils files. | ||
|  |             cp -rf ${MAINLINE_FOLDER}/app/utils ${target_plc_core_dir}/${app_lower}_app/ | ||
|  |         fi | ||
|  |     fi | ||
|  | 
 | ||
|  |     local plc_lib_kw="${proto_type_lower}" | ||
|  |     if [ "${rf_opt_lower}" == "rf" ]; then | ||
|  |         plc_lib_kw="${plc_lib_kw}_rf" | ||
|  |     fi | ||
|  | 
 | ||
|  |     if [ "${dual_opt_lower}" == "dual" ]; then | ||
|  |         plc_lib_kw="${plc_lib_kw}_dual" | ||
|  |     fi | ||
|  | 
 | ||
|  |     if [ "${boot_opt}" == "fastboot" ]; then | ||
|  |         plc_lib_kw="${plc_lib_kw}_fb" | ||
|  |     fi | ||
|  | 
 | ||
|  |     if [ "${core_type_lower}" == "ampplc" ]; then | ||
|  |         taget_source_dir="../tools/gen_img/lib_sdk_source/kl3_${chip_class}_${img_type_lower}_${app_id}_ampplc_${flash_size}m_${psram_size}m_${DEF_RELEASE}" | ||
|  |         chk_files=("sbl.bin" "libht_cus.a" "libht_plc_${plc_lib_kw}.a" "libapp_plc.a") | ||
|  |     else | ||
|  |         taget_source_dir="../tools/gen_img/lib_sdk_source/kl3_${chip_class}_${img_type_lower}_${app_id}_plc_${flash_size}m_${psram_size}m_${DEF_RELEASE}" | ||
|  |         chk_files=("sbl.bin" "libht_plc_${plc_lib_kw}.a" "libapp_plc.a") | ||
|  |     fi | ||
|  | 
 | ||
|  |     for bin_file in ${chk_files[@]}; do | ||
|  |         if [ ! -f ${taget_source_dir}/${bin_file} ]; then | ||
|  |             echo "WARNING: file not exist : ${taget_source_dir}/${bin_file}" | ||
|  |             local build_img_flag=1 | ||
|  |             break | ||
|  |         fi | ||
|  |     done | ||
|  | 
 | ||
|  |     #building blocks for compiling the SDK. | ||
|  |     if [ "${build_img_flag}" == "1" ]; then | ||
|  |         if [ "${DEF_RELEASE}" == "debug" ]; then | ||
|  |             sed -i "s/\([ ]*#define AP_FIRMWARE_VERSION_TYPE[ ]*\) .*/\1 \(1\)/" ${IOT_VER_FILE} | ||
|  |             sed -i "s/\([ ]*#define IOT_PRINTF_DEBUG[ ]*\) .*/\1 1/" ${MAINLINE_FOLDER}/export/inc/iot_config_api.h | ||
|  |             sed -i "s/\([ ]*#define IOT_PRINTF_DEBUG[ ]*\) .*/\1 1/" ${MAINLINE_FOLDER}/export/inc/config/plc_config_api.h | ||
|  |             sed -i "s/\([ ]*#define IOT_EXCEPTION_DEBUG[ ]*\) .*/\1 1/" ${MAINLINE_FOLDER}/export/inc/iot_config_api.h | ||
|  |             sed -i "s/\([ ]*#define IOT_EXCEPTION_DEBUG[ ]*\) .*/\1 1/" ${MAINLINE_FOLDER}/export/inc/config/plc_config_api.h | ||
|  |         else | ||
|  |             sed -i "s/\([ ]*#define AP_FIRMWARE_VERSION_TYPE[ ]*\) .*/\1 \(0\)/" ${IOT_VER_FILE} | ||
|  |             sed -i "s/\([ ]*#define IOT_PRINTF_DEBUG[ ]*\) .*/\1 0/" ${MAINLINE_FOLDER}/export/inc/iot_config_api.h | ||
|  |             sed -i "s/\([ ]*#define IOT_PRINTF_DEBUG[ ]*\) .*/\1 0/" ${MAINLINE_FOLDER}/export/inc/config/plc_config_api.h | ||
|  |             sed -i "s/\([ ]*#define IOT_EXCEPTION_DEBUG[ ]*\) .*/\1 0/" ${MAINLINE_FOLDER}/export/inc/iot_config_api.h | ||
|  |             sed -i "s/\([ ]*#define IOT_EXCEPTION_DEBUG[ ]*\) .*/\1 0/" ${MAINLINE_FOLDER}/export/inc/config/plc_config_api.h | ||
|  |             sed -i "s/\([ ]*#define DBGLOG_DEFAULT_LEVEL[ ]*\) .*/\1 DBGLOG_ERR/" ${MAINLINE_FOLDER}/common/dbglog/iot_dbglog.c | ||
|  |         fi | ||
|  |         if [ "${core_type_lower}" == "ampplc" ]; then | ||
|  |             if [ "${boot_opt}" == "fastboot" ]; then | ||
|  |                 ./build_flash_kl3.sh ${img_type_lower} ${cus_appid} ${app_id} ampplc ${flash_size}m ${psram_size}m ${chip_class} ${proto_type_lower} ${rf_opt_lower} ${dual_opt_lower} ${DEF_RELEASE} ${platform_type} ${boot_opt} ${DEF_BOARD_TYPE} | ||
|  |             else | ||
|  |                 ./build_flash_kl3.sh ${img_type_lower} ${cus_appid} ${app_id} ampplc ${flash_size}m ${psram_size}m ${chip_class} ${proto_type_lower} ${rf_opt_lower} ${dual_opt_lower} ${DEF_RELEASE} ${platform_type} ${DEF_BOARD_TYPE} | ||
|  |             fi | ||
|  |         else | ||
|  |             ./build_flash_kl3.sh ${img_type_lower} ${cus_appid} ${app_id} plc ${flash_size}m ${psram_size}m ${chip_class} ${proto_type_lower} ${rf_opt_lower} ${dual_opt_lower} ${DEF_RELEASE} ${platform_type} ${DEF_BOARD_TYPE} | ||
|  |         fi | ||
|  |     fi | ||
|  | 
 | ||
|  |     #prepare boards. | ||
|  |     target_chip_resource_dir=${TARGET_SDK_FOLDER}/resource/${chip_class_lower}_${chip_id_lower}_${flash_size}f${psram_size}p/${img_type_lower}_${amp_kb} | ||
|  | 
 | ||
|  |     if [ ! -d "${target_chip_resource_dir}" ]; then | ||
|  |         mkdir -p "${target_chip_resource_dir}" | ||
|  |         mkdir ${target_chip_resource_dir}/bin | ||
|  |         mkdir ${target_chip_resource_dir}/lib | ||
|  |         mkdir ${target_chip_resource_dir}/ld | ||
|  |         mkdir ${target_chip_resource_dir}/cfg | ||
|  |     fi | ||
|  | 
 | ||
|  |     #prepare cfg. | ||
|  |     if [ "${app_lower}" == "sg" ] || [ "${app_lower}" == "sg_ext" ]; then | ||
|  |         if [ "${psram_size}" == "0" ]; then | ||
|  |             cfg_file=${CFG_DIR}/${flash_size}m_${img_type_lower}.cfg | ||
|  |             upd_cfg_file=${CFG_DIR}/${flash_size}m_${img_type_lower}_upgrade.cfg | ||
|  |         else | ||
|  |             cfg_file=${CFG_DIR}/${flash_size}m_${img_type_lower}_psram.cfg | ||
|  |             upd_cfg_file=${CFG_DIR}/${flash_size}m_${img_type_lower}_upgrade_psram.cfg | ||
|  |         fi | ||
|  |         cp ${upd_cfg_file} ${target_chip_resource_dir}/cfg/${img_type_lower}_upgrade.cfg | ||
|  |         sed -i "/^flash_size=./a psram_size=${psram_size}" ${target_chip_resource_dir}/cfg/${img_type_lower}_upgrade.cfg | ||
|  |     else | ||
|  |         if [ "${psram_size}" == "0" ]; then | ||
|  |             cfg_file=${CFG_DIR}/smart_${flash_size}m_${img_type_lower}.cfg | ||
|  |         else | ||
|  |             cfg_file=${CFG_DIR}/smart_${flash_size}m_${img_type_lower}_psram.cfg | ||
|  |         fi | ||
|  |     fi | ||
|  | 
 | ||
|  |     cp ${cfg_file} ${target_chip_resource_dir}/cfg/${img_type_lower}.cfg | ||
|  |     sed -i "/^flash_size=./a psram_size=${psram_size}" ${target_chip_resource_dir}/cfg/${img_type_lower}.cfg | ||
|  | 
 | ||
|  |     #prepare chip resource. | ||
|  |     cp ${taget_source_dir}/sbl.bin ${target_chip_resource_dir}/bin | ||
|  | 
 | ||
|  |     if [ "${DEF_LIBAPP}" == "true" ]; then | ||
|  |         if [ "${app_lower}" == "sg_ext" ]; then | ||
|  |             cp ${taget_source_dir}/libapp_plc.a ${target_chip_resource_dir}/lib/libsg_app_${img_type_lower}.a | ||
|  |         else | ||
|  |             cp ${taget_source_dir}/libapp_plc.a ${target_chip_resource_dir}/lib/lib${app_lower}_app_${img_type_lower}.a | ||
|  |         fi | ||
|  |     fi | ||
|  | 
 | ||
|  |     if [ "${DEF_SDK_TYPE}" == "sg" ] || [ "${DEF_SDK_TYPE}" == "sg_ext" ]; then | ||
|  |         if [ "${core_type_lower}" == "ampplc" ]; then | ||
|  |             if [ "${boot_opt}" == "fastboot" ]; then | ||
|  |                 cp ${taget_source_dir}/libht_cus_fb.a ${target_chip_resource_dir}/lib/libsg${img_type_lower}_amp_cus_fb.a | ||
|  |             else | ||
|  |                 cp ${taget_source_dir}/libht_cus.a ${target_chip_resource_dir}/lib/libsg${img_type_lower}_amp_cus.a | ||
|  |             fi | ||
|  |             cp ${taget_source_dir}/libht_plc_${plc_lib_kw}.a ${target_chip_resource_dir}/lib/libsg${img_type_lower}_amp_plc_${plc_lib_kw}.a | ||
|  |         else | ||
|  |             cp ${taget_source_dir}/libht_plc_${plc_lib_kw}.a ${target_chip_resource_dir}/lib/libsg${img_type_lower}_plc_${plc_lib_kw}.a | ||
|  |         fi | ||
|  |     else | ||
|  |         if [ "${core_type_lower}" == "ampplc" ]; then | ||
|  |             cp ${taget_source_dir}/libht_cus.a ${target_chip_resource_dir}/lib/libiot${img_type_lower}_amp_cus.a | ||
|  |             cp ${taget_source_dir}/libht_plc_${plc_lib_kw}.a ${target_chip_resource_dir}/lib/libiot${img_type_lower}_amp_plc_${plc_lib_kw}.a | ||
|  |         else | ||
|  |             cp ${taget_source_dir}/libht_plc_${plc_lib_kw}.a ${target_chip_resource_dir}/lib/libiot${img_type_lower}_plc_${plc_lib_kw}.a | ||
|  |         fi | ||
|  |     fi | ||
|  | 
 | ||
|  |     #prepare board macro. | ||
|  |     cp ${taget_source_dir}/macro_config.ini ${target_chip_resource_dir}/ | ||
|  |     sed -i "/^$/d" ${target_chip_resource_dir}/macro_config.ini | ||
|  |     sed -i "s/^/-D/g" ${target_chip_resource_dir}/macro_config.ini | ||
|  |     sed -i ':a;N;$!ba;s/\n/ /g' ${target_chip_resource_dir}/macro_config.ini | ||
|  | 
 | ||
|  |     #prepare lds. | ||
|  |     src_ld_dir="${MAINLINE_FOLDER}/startup/ldscripts/riscv3" | ||
|  |     if [ "${img_type_lower}" == "cco" ]; then | ||
|  |         if [ "${core_type_lower}" == "ampplc" ]; then | ||
|  |             if [ "${psram_size}" == "0" ]; then | ||
|  |                 if [ "${boot_opt}" == "fastboot" ]; then | ||
|  |                     cp ${src_ld_dir}/link_flash_2m_cus_cco.lds ${target_chip_resource_dir}/ld/link_cco_amp_cus_fb.lds | ||
|  |                 else | ||
|  |                     cp ${src_ld_dir}/link_flash_2m_cus_cco.lds ${target_chip_resource_dir}/ld/link_cco_amp_cus.lds | ||
|  |                 fi | ||
|  |                 cp ${src_ld_dir}/link_flash_2m_cco.lds ${target_chip_resource_dir}/ld/link_cco_amp_plc.lds | ||
|  |             else | ||
|  |                 if [ "${boot_opt}" == "fastboot" ]; then | ||
|  |                     cp ${src_ld_dir}/link_psram_8m_cus_cco_fb.lds ${target_chip_resource_dir}/ld/link_cco_amp_cus_fb.lds | ||
|  |                 else | ||
|  |                     cp ${src_ld_dir}/link_psram_8m_cus_cco.lds ${target_chip_resource_dir}/ld/link_cco_amp_cus.lds | ||
|  |                 fi | ||
|  |                 cp ${src_ld_dir}/link_psram_8m_cco.lds ${target_chip_resource_dir}/ld/link_cco_amp_plc.lds | ||
|  |             fi | ||
|  |         else | ||
|  |             if [ "${psram_size}" == "0" ]; then | ||
|  |                 if [ "${flash_size}" == "2" ]; then | ||
|  |                     cp  ${src_ld_dir}/link_flash_2m_cco_plc_only.lds ${target_chip_resource_dir}/ld/link_cco_plc.lds | ||
|  |                 else | ||
|  |                     cp  ${src_ld_dir}/link_flash_4m_cco_plc_only.lds ${target_chip_resource_dir}/ld/link_cco_plc.lds | ||
|  |                 fi | ||
|  |             else | ||
|  |                 cp ${src_ld_dir}/link_psram_8m_cco_plc_only.lds ${target_chip_resource_dir}/ld/link_cco_plc.lds | ||
|  |             fi | ||
|  |         fi | ||
|  |         if [ -e ${src_ld_dir}/sec_cpu_cco.addrs.ld ]; then | ||
|  |             cp ${src_ld_dir}/sec_cpu_cco.addrs.ld ${target_chip_resource_dir}/ld/ | ||
|  |         fi | ||
|  |     elif [ "${img_type_lower}" == "sta" ]; then | ||
|  |         if [ "${core_type_lower}" == "ampplc" ]; then | ||
|  |             if [ "${psram_size}" == "0" ]; then | ||
|  |                 if [ "${boot_opt}" == "fastboot" ]; then | ||
|  |                     cp ${src_ld_dir}/link_flash_2m_cus_sta.lds ${target_chip_resource_dir}/ld/link_sta_amp_cus_fb.lds | ||
|  |                 else | ||
|  |                     cp ${src_ld_dir}/link_flash_2m_cus_sta.lds ${target_chip_resource_dir}/ld/link_sta_amp_cus.lds | ||
|  |                 fi | ||
|  |                 cp ${src_ld_dir}/link_flash_2m_sta.lds ${target_chip_resource_dir}/ld/link_sta_amp_plc.lds | ||
|  |             else | ||
|  |                 cp ${src_ld_dir}/link_psram_8m_cus_sta.lds ${target_chip_resource_dir}/ld/link_sta_amp_cus.lds | ||
|  |                 cp ${src_ld_dir}/link_psram_8m_sta.lds ${target_chip_resource_dir}/ld/link_sta_amp_plc.lds | ||
|  |             fi | ||
|  |         else | ||
|  |             if [ "${psram_size}" == "0" ]; then | ||
|  |                 if [ "${flash_size}" == "2" ]; then | ||
|  |                     cp  ${src_ld_dir}/link_flash_2m_sta_plc_only.lds ${target_chip_resource_dir}/ld/link_sta_plc.lds | ||
|  |                 else | ||
|  |                     cp  ${src_ld_dir}/link_flash_4m_sta_plc_only.lds ${target_chip_resource_dir}/ld/link_sta_plc.lds | ||
|  |                 fi | ||
|  |             else | ||
|  |                 cp ${src_ld_dir}/link_psram_8m_sta_plc_only.lds ${target_chip_resource_dir}/ld/link_sta_plc.lds | ||
|  |             fi | ||
|  |         fi | ||
|  |         if [ -e ${src_ld_dir}/sec_cpu_sta.addrs.ld ]; then | ||
|  |             cp ${src_ld_dir}/sec_cpu_sta.addrs.ld ${target_chip_resource_dir}/ld/ | ||
|  |         fi | ||
|  |     fi | ||
|  | 
 | ||
|  |     if [ -e ${src_ld_dir}/rom.addrs.ld ]; then | ||
|  |         cp ${src_ld_dir}/rom.addrs.ld ${target_chip_resource_dir}/ld/ | ||
|  |     fi | ||
|  | 
 | ||
|  |     if [ "${core_type_lower}" == "ampplc" ] && [ -e ${src_ld_dir}/cus.addrs.ld ]; then | ||
|  |         cp ${src_ld_dir}/cus.addrs.ld ${target_chip_resource_dir}/ld/ | ||
|  |     fi | ||
|  | 
 | ||
|  |     cp ${src_ld_dir}/link_sbl.lds ${target_chip_resource_dir}/ld | ||
|  | 
 | ||
|  |     #app_lib flag set. | ||
|  |     if [ "${DEF_LIBAPP}" == "true" ]; then | ||
|  |         sed -i "s/^APPLIB_ENABLE=./APPLIB_ENABLE=1/" ${TARGET_SDK_FOLDER}/build/build_target_firmware.sh | ||
|  |     else | ||
|  |         sed -i "s/^APPLIB_ENABLE=./APPLIB_ENABLE=0/" ${TARGET_SDK_FOLDER}/build/build_target_firmware.sh | ||
|  |     fi | ||
|  | 
 | ||
|  |     # add sdk_type flag. | ||
|  |     sed -i "s/^DEF_SDK_TYPE=.*/DEF_SDK_TYPE=${DEF_SDK_TYPE}/" ${TARGET_SDK_FOLDER}/build/build_target_firmware.sh | ||
|  | 
 | ||
|  |     # add sg_type flag. | ||
|  |     sed -i "s/^DEF_SG_TYPE=.*/DEF_SG_TYPE=${DEF_SG_TYPE}/" ${TARGET_SDK_FOLDER}/build/build_target_firmware.sh | ||
|  | 
 | ||
|  |     # add iot version. | ||
|  |     get_iot_ver ${IOT_VER_FILE} | ||
|  |     sed -i "s/^IOT_VER=.*/IOT_VER=\"${IOT_VER}\"/g" ${TARGET_SDK_FOLDER}/build/build_target_firmware.sh | ||
|  | 
 | ||
|  |     # add git version. | ||
|  |     cd ${MAINLINE_FOLDER}/../../../ | ||
|  |     get_git_ver | ||
|  |     cd - | ||
|  |     sed -i "s/^GIT_VER=.*/GIT_VER=\"${GIT_VER}\"/g" ${TARGET_SDK_FOLDER}/build/build_target_firmware.sh | ||
|  | 
 | ||
|  |     # add board type. | ||
|  |     sed -i "s/^DEF_BOARD_TYPE=.*/DEF_BOARD_TYPE=\"${platform_type}\"/g" ${TARGET_SDK_FOLDER}/build/build_target_firmware.sh | ||
|  | 
 | ||
|  |     #normal mode. | ||
|  |     sed -i "/^GROUP_NUM=.*/i GROUP_${BUILD_NUM}=(${chip_class_lower} ${chip_id_lower} ${img_type_lower} ${app_lower} ${core_type_lower} ${flash_size} ${psram_size} ${proto_type_lower} ${rf_opt_lower} ${dual_opt_lower} ${boot_opt})" ${TARGET_SDK_FOLDER}/build/build_target_firmware.sh | ||
|  |     ((BUILD_NUM=${BUILD_NUM}+1)) | ||
|  | 
 | ||
|  |     return 0 | ||
|  | } | ||
|  | 
 | ||
|  | sed -i "s/export MBEDTLS_NONE_ROM_EN = 1/export MBEDTLS_NONE_ROM_EN = 0/g" Makefile | ||
|  | 
 | ||
|  | #start build sdk. | ||
|  | echo "==To build all taget==" | ||
|  | if [ "${DEF_SDK_TYPE}" == "sg" ]; then | ||
|  |     for ((index=0; index < SG_GROUP_LENGTH; index++)); do | ||
|  |         for PT in ${PROTO_TYPE_STR[@]}; do | ||
|  |             #rf-enable not support protocol 1901. | ||
|  |             if [ "${PT}" == "p1901" ] && [ "${SG_GROUP_RF_OPT[$index]}" == "RF" ]; then | ||
|  |                 continue | ||
|  |             fi | ||
|  |             build_sdk_start ${SG_GROUP_CHIPCLASS[$index]} ${SG_GROUP_CHIPID[$index]} ${SG_GROUP_IMG_TYPE[$index]} SG ${SG_GROUP_CORE_TYPE[$index]} ${SG_GROUP_FLASH_SIZE[$index]} ${SG_GROUP_PSRAM_SIZE[$index]} ${PT} ${SG_GROUP_RF_OPT[$index]} ${SG_GROUP_DUAL_OPT[$index]} normalboot | ||
|  |             if [ "$?" == "0" ]; then | ||
|  |                 echo "== ${SG_GROUP_CHIPCLASS[$index]} ${SG_GROUP_CHIPID[$index]} ${SG_GROUP_IMG_TYPE[$index]} SG ${SG_GROUP_CORE_TYPE[$index]} "\
 | ||
|  |                 "${SG_GROUP_FLASH_SIZE[$index]}M flash ${SG_GROUP_PSRAM_SIZE[$index]}M psram  ${PT} ${SG_GROUP_RF_OPT[$index]} ${SG_GROUP_DUAL_OPT[$index]} normalboot sdk build successfully==" | ||
|  |             else | ||
|  |                echo "== ${SG_GROUP_CHIPCLASS[$index]} ${SG_GROUP_CHIPID[$index]} ${SG_GROUP_IMG_TYPE[$index]} SG ${SG_GROUP_CORE_TYPE[$index]} "\
 | ||
|  |                 "${SG_GROUP_FLASH_SIZE[$index]}M flash ${SG_GROUP_PSRAM_SIZE[$index]}M psram  ${PT} ${SG_GROUP_RF_OPT[$index]} ${SG_GROUP_DUAL_OPT[$index]} normalboot sdk build failed!!!==" | ||
|  |             fi | ||
|  |             if [ "${SG_GROUP_CORE_TYPE[$index]}" == "AMPPLC" ]; then | ||
|  |                 build_sdk_start ${SG_GROUP_CHIPCLASS[$index]} ${SG_GROUP_CHIPID[$index]} ${SG_GROUP_IMG_TYPE[$index]} SG ${SG_GROUP_CORE_TYPE[$index]} ${SG_GROUP_FLASH_SIZE[$index]} ${SG_GROUP_PSRAM_SIZE[$index]} ${PT} ${SG_GROUP_RF_OPT[$index]} ${SG_GROUP_DUAL_OPT[$index]} fastboot | ||
|  |                 if [ "$?" == "0" ]; then | ||
|  |                     echo "== ${SG_GROUP_CHIPCLASS[$index]} ${SG_GROUP_CHIPID[$index]} ${SG_GROUP_IMG_TYPE[$index]} SG ${SG_GROUP_CORE_TYPE[$index]} "\
 | ||
|  |                     "${SG_GROUP_FLASH_SIZE[$index]}M flash ${SG_GROUP_PSRAM_SIZE[$index]}M psram  ${PT} ${SG_GROUP_RF_OPT[$index]} ${SG_GROUP_DUAL_OPT[$index]} fastboot sdk build successfully==" | ||
|  |                 else | ||
|  |                    echo "== ${SG_GROUP_CHIPCLASS[$index]} ${SG_GROUP_CHIPID[$index]} ${SG_GROUP_IMG_TYPE[$index]} SG ${SG_GROUP_CORE_TYPE[$index]} "\
 | ||
|  |                     "${SG_GROUP_FLASH_SIZE[$index]}M flash ${SG_GROUP_PSRAM_SIZE[$index]}M psram  ${PT} ${SG_GROUP_RF_OPT[$index]} ${SG_GROUP_DUAL_OPT[$index]} fastboot sdk build failed!!!==" | ||
|  |                 fi | ||
|  |             fi | ||
|  |         done | ||
|  |     done | ||
|  | elif [ "${DEF_SDK_TYPE}" == "sg_ext" ]; then | ||
|  |     for ((index=0; index < SG_EXT_GROUP_LENGTH; index++)); do | ||
|  |         for PT in ${PROTO_TYPE_STR[@]}; do | ||
|  |             #rf-enable not support protocol 1901. | ||
|  |             if [ "${PT}" == "p1901" ] && [ "${SG_EXT_GROUP_RF_OPT[$index]}" == "RF" ]; then | ||
|  |                 continue | ||
|  |             fi | ||
|  |             build_sdk_start ${SG_EXT_GROUP_CHIPCLASS[$index]} ${SG_EXT_GROUP_CHIPID[$index]} ${SG_EXT_GROUP_IMG_TYPE[$index]} SG_EXT ${SG_EXT_GROUP_CORE_TYPE[$index]} ${SG_EXT_GROUP_FLASH_SIZE[$index]} ${SG_EXT_GROUP_PSRAM_SIZE[$index]} ${PT} ${SG_EXT_GROUP_RF_OPT[$index]} ${SG_EXT_GROUP_DUAL_OPT[$index]} normalboot | ||
|  |             if [ "$?" == "0" ]; then | ||
|  |                 echo "== ${SG_EXT_GROUP_CHIPCLASS[$index]} ${SG_EXT_GROUP_CHIPID[$index]} ${SG_EXT_GROUP_IMG_TYPE[$index]} SG_EXT ${SG_EXT_GROUP_CORE_TYPE[$index]} "\
 | ||
|  |                 "${SG_EXT_GROUP_FLASH_SIZE[$index]}M flash ${SG_EXT_GROUP_PSRAM_SIZE[$index]}M psram  ${PT} ${SG_EXT_GROUP_RF_OPT[$index]} ${SG_EXT_GROUP_DUAL_OPT[$index]} normalboot sdk build successfully==" | ||
|  |             else | ||
|  |                 echo "== ${SG_EXT_GROUP_CHIPCLASS[$index]} ${SG_EXT_GROUP_CHIPID[$index]} ${SG_EXT_GROUP_IMG_TYPE[$index]} SG_EXT ${SG_EXT_GROUP_CORE_TYPE[$index]} "\
 | ||
|  |                 "${SG_EXT_GROUP_FLASH_SIZE[$index]}M flash ${SG_EXT_GROUP_PSRAM_SIZE[$index]}M psram  ${PT} ${SG_EXT_GROUP_RF_OPT[$index]} ${SG_EXT_GROUP_DUAL_OPT[$index]} normalboot sdk build failed!!!==" | ||
|  |             fi | ||
|  |             if [ "${SG_EXT_GROUP_CORE_TYPE[$index]}" == "AMPPLC" ]; then | ||
|  |                 build_sdk_start ${SG_EXT_GROUP_CHIPCLASS[$index]} ${SG_EXT_GROUP_CHIPID[$index]} ${SG_EXT_GROUP_IMG_TYPE[$index]} SG_EXT ${SG_EXT_GROUP_CORE_TYPE[$index]} ${SG_EXT_GROUP_FLASH_SIZE[$index]} ${SG_EXT_GROUP_PSRAM_SIZE[$index]} ${PT} ${SG_EXT_GROUP_RF_OPT[$index]} ${SG_EXT_GROUP_DUAL_OPT[$index]} fastboot | ||
|  |                 if [ "$?" == "0" ]; then | ||
|  |                     echo "== ${SG_EXT_GROUP_CHIPCLASS[$index]} ${SG_EXT_GROUP_CHIPID[$index]} ${SG_EXT_GROUP_IMG_TYPE[$index]} SG_EXT ${SG_EXT_GROUP_CORE_TYPE[$index]} "\
 | ||
|  |                     "${SG_EXT_GROUP_FLASH_SIZE[$index]}M flash ${SG_EXT_GROUP_PSRAM_SIZE[$index]}M psram  ${PT} ${SG_EXT_GROUP_RF_OPT[$index]} ${SG_EXT_GROUP_DUAL_OPT[$index]} fastboot sdk build successfully==" | ||
|  |                 else | ||
|  |                     echo "== ${SG_EXT_GROUP_CHIPCLASS[$index]} ${SG_EXT_GROUP_CHIPID[$index]} ${SG_EXT_GROUP_IMG_TYPE[$index]} SG_EXT ${SG_EXT_GROUP_CORE_TYPE[$index]} "\
 | ||
|  |                     "${SG_EXT_GROUP_FLASH_SIZE[$index]}M flash ${SG_EXT_GROUP_PSRAM_SIZE[$index]}M psram  ${PT} ${SG_EXT_GROUP_RF_OPT[$index]} ${SG_EXT_GROUP_DUAL_OPT[$index]} fastboot sdk build failed!!!==" | ||
|  |                 fi | ||
|  |             fi | ||
|  |         done | ||
|  |     done | ||
|  | elif [ "${DEF_SDK_TYPE}" == "iot" ] || [ "${DEF_SDK_TYPE}" == "iot_ext" ]; then | ||
|  |     #iot sdk not support fastboot fireware because of poor flash. | ||
|  |     for ((index=0; index < DEMO_GROUP_LENGTH; index++)); do | ||
|  |         for PT in ${PROTO_TYPE_STR[@]}; do | ||
|  |             #rf-enable not support protocol 1901. | ||
|  |             if [ "${PT}" == "p1901" ] && [ "${DEMO_GROUP_RF_OPT[$index]}" == "RF" ]; then | ||
|  |                 continue | ||
|  |             fi | ||
|  |             build_sdk_start ${DEMO_GROUP_CHIPCLASS[$index]} ${DEMO_GROUP_CHIPID[$index]} ${DEMO_GROUP_IMG_TYPE[$index]} DEMO ${DEMO_GROUP_CORE_TYPE[$index]} ${DEMO_GROUP_FLASH_SIZE[$index]} ${DEMO_GROUP_PSRAM_SIZE[$index]} ${PT} ${DEMO_GROUP_RF_OPT[$index]} ${DEMO_GROUP_DUAL_OPT[$index]} normalboot | ||
|  |             if [ "$?" == "0" ]; then | ||
|  |                 echo "== ${DEMO_GROUP_CHIPCLASS[$index]} ${DEMO_GROUP_CHIPID[$index]} ${DEMO_GROUP_IMG_TYPE[$index]} DEMO ${DEMO_GROUP_CORE_TYPE[$index]} "\
 | ||
|  |                 "${DEMO_GROUP_FLASH_SIZE[$index]}M flash ${DEMO_GROUP_PSRAM_SIZE[$index]}M psram  ${PT} ${DEMO_GROUP_RF_OPT[$index]} ${DEMO_GROUP_DUAL_OPT[$index]} normalboot sdk build successfully==" | ||
|  |             else | ||
|  |                 echo "== ${DEMO_GROUP_CHIPCLASS[$index]} ${DEMO_GROUP_CHIPID[$index]} ${DEMO_GROUP_IMG_TYPE[$index]} DEMO ${DEMO_GROUP_CORE_TYPE[$index]} "\
 | ||
|  |                 "${DEMO_GROUP_FLASH_SIZE[$index]}M flash ${DEMO_GROUP_PSRAM_SIZE[$index]}M psram  ${PT} ${DEMO_GROUP_RF_OPT[$index]} ${DEMO_GROUP_DUAL_OPT[$index]} normalboot sdk build failed!!!==" | ||
|  |             fi | ||
|  |         done | ||
|  |     done | ||
|  | 
 | ||
|  |     for ((index=0; index < CUS_AT_GROUP_LENGTH; index++)); do | ||
|  |         for PT in ${PROTO_TYPE_STR[@]}; do | ||
|  |             #rf-enable not support protocol 1901. | ||
|  |             if [ "${PT}" == "p1901" ] && [ "${CUS_AT_GROUP_RF_OPT[$index]}" == "RF" ]; then | ||
|  |                 continue | ||
|  |             fi | ||
|  |             build_sdk_start ${CUS_AT_GROUP_CHIPCLASS[$index]} ${CUS_AT_GROUP_CHIPID[$index]} ${CUS_AT_GROUP_IMG_TYPE[$index]} CUS_AT ${CUS_AT_GROUP_CORE_TYPE[$index]} ${CUS_AT_GROUP_FLASH_SIZE[$index]} ${CUS_AT_GROUP_PSRAM_SIZE[$index]} ${PT} ${CUS_AT_GROUP_RF_OPT[$index]} ${CUS_AT_GROUP_DUAL_OPT[$index]} normalboot | ||
|  |             if [ "$?" == "0" ]; then | ||
|  |                 echo "== ${CUS_AT_GROUP_CHIPCLASS[$index]} ${CUS_AT_GROUP_CHIPID[$index]} ${CUS_AT_GROUP_IMG_TYPE[$index]} CUS_AT ${CUS_AT_GROUP_CORE_TYPE[$index]} "\
 | ||
|  |                 "${CUS_AT_GROUP_FLASH_SIZE[$index]}M flash ${CUS_AT_GROUP_PSRAM_SIZE[$index]}M psram  ${PT} ${CUS_AT_GROUP_RF_OPT[$index]} ${CUS_AT_GROUP_DUAL_OPT[$index]} normalboot sdk build successfully==" | ||
|  |             else | ||
|  |                 echo "== ${CUS_AT_GROUP_CHIPCLASS[$index]} ${CUS_AT_GROUP_CHIPID[$index]} ${CUS_AT_GROUP_IMG_TYPE[$index]} CUS_AT ${CUS_AT_GROUP_CORE_TYPE[$index]} "\
 | ||
|  |                 "${CUS_AT_GROUP_FLASH_SIZE[$index]}M flash ${CUS_AT_GROUP_PSRAM_SIZE[$index]}M psram  ${PT} ${CUS_AT_GROUP_RF_OPT[$index]} ${CUS_AT_GROUP_DUAL_OPT[$index]} normalboot sdk build failed!!!==" | ||
|  |             fi | ||
|  |         done | ||
|  |     done | ||
|  | 
 | ||
|  |     for ((index=0; index < CUS_AT_GROUP_LENGTH; index++)); do | ||
|  |         if [ "${DEF_LIBAPP}" == "true" ] && [ "${CUS_AT_GROUP_CORE_TYPE[$index]}" == "PLC" ]; then | ||
|  |             continue | ||
|  |         fi | ||
|  |         for PT in ${PROTO_TYPE_STR[@]}; do | ||
|  |             #rf-enable not support protocol 1901. | ||
|  |             if [ "${PT}" == "p1901" ] && [ "${CUS_AT_GROUP_RF_OPT[$index]}" == "RF" ]; then | ||
|  |                 continue | ||
|  |             fi | ||
|  |             build_sdk_start ${CUS_AT_GROUP_CHIPCLASS[$index]} ${CUS_AT_GROUP_CHIPID[$index]} ${CUS_AT_GROUP_IMG_TYPE[$index]} SILA ${CUS_AT_GROUP_CORE_TYPE[$index]} ${CUS_AT_GROUP_FLASH_SIZE[$index]} ${CUS_AT_GROUP_PSRAM_SIZE[$index]} ${PT} ${CUS_AT_GROUP_RF_OPT[$index]} ${CUS_AT_GROUP_DUAL_OPT[$index]} normalboot | ||
|  |             if [ "$?" == "0" ]; then | ||
|  |                 echo "== ${CUS_AT_GROUP_CHIPCLASS[$index]} ${CUS_AT_GROUP_CHIPID[$index]} ${CUS_AT_GROUP_IMG_TYPE[$index]} SILA ${CUS_AT_GROUP_CORE_TYPE[$index]} "\
 | ||
|  |                 "${CUS_AT_GROUP_FLASH_SIZE[$index]}M flash ${CUS_AT_GROUP_PSRAM_SIZE[$index]}M psram  ${PT} ${CUS_AT_GROUP_RF_OPT[$index]} ${CUS_AT_GROUP_DUAL_OPT[$index]} normalboot sdk build successfully==" | ||
|  |             else | ||
|  |                 echo "== ${CUS_AT_GROUP_CHIPCLASS[$index]} ${CUS_AT_GROUP_CHIPID[$index]} ${CUS_AT_GROUP_IMG_TYPE[$index]} SILA ${CUS_AT_GROUP_CORE_TYPE[$index]} "\
 | ||
|  |                 "${CUS_AT_GROUP_FLASH_SIZE[$index]}M flash ${CUS_AT_GROUP_PSRAM_SIZE[$index]}M psram  ${PT} ${CUS_AT_GROUP_RF_OPT[$index]} ${CUS_AT_GROUP_DUAL_OPT[$index]} normalboot sdk build failed!!!==" | ||
|  |             fi | ||
|  |         done | ||
|  |     done | ||
|  | fi | ||
|  | 
 | ||
|  | #generate boards resource. | ||
|  | gen_boards_resource | ||
|  | 
 | ||
|  | echo "==Build all target successfully, dir location : ${TARGET_SDK_FOLDER}==" | ||
|  | 
 | ||
|  | sed -i "s/^GROUP_NUM=.*/GROUP_NUM=${BUILD_NUM}/" ${TARGET_SDK_FOLDER}/build/build_target_firmware.sh | ||
|  | 
 |