#!/bin/bash CUR_DIR=$(cd `dirname $0`; pwd) TOP_DIR=$CUR_DIR/../.. PSRAM_ENABLE_GEN=$(echo $psram_enable) FLASH_LAYOUT_INDEX=$(echo $layout_index) PROTO_TYPE=$(echo ${PROTO_TYPE} | tr '[a-z]' '[A-Z]') RF_ENABLE=$(echo ${rf_enable}) DUAL_ENABLE=$(echo ${dual_enable}) NEW_TYPE_CCO=$(echo ${new_type_cco}) SEC_CPU_ENABLE=$(echo ${sec_cpu_enable}) while getopts "d:c:i:r:m:s:a:b:v:h:p:t:f:" arg do case $arg in c) # board类型 build_flash_kl3.sh 会根据它存储的board列表依次调用 gen_img.sh echo "c's arg: $OPTARG" BOARD_LOWER=$OPTARG ;; d) # 芯片id HZ WQ echo "d's arg: $OPTARG" CHIP_ID=$OPTARG ;; i) echo "i's arg: $OPTARG" IMG_LOWER=$OPTARG ;; r) echo "r's arg: $OPTARG" RUN_LOWER=$OPTARG ;; m) echo "m's arg: $OPTARG" MODE_LOWER=$OPTARG ;; s) echo "s's arg: $OPTARG" SIZE_LOWER=$OPTARG ;; a) echo "a's arg: $OPTARG" APP_LOWER=$OPTARG ;; b) echo "b's arg: $OPTARG" CHIP_VER_LOWER=$OPTARG ;; v) echo "v's arg: $OPTARG" DB_LOWER=$OPTARG ;; p) echo "p's arg: $OPTARG" PSRAM_SIZE=$OPTARG ;; t) echo "t's arg: $OPTARG" CORE_TYPE_LOWER=$OPTARG ;; f) echo "f's arg: $OPTARG" FAST_BOOT=$OPTARG ;; h) echo "[Usage]" echo "$0 -d (hw chip id) -c (custom name) -i (image type) -r (run environment) -m (mode type) -s (flash size) -a (app_name)" exit 1 ;; ?) echo "unsupport argument" echo "[Usage]" echo "$0 -d (hw chip id) -c (custom name) -i (image type) -r (run environment) -s (flash size) -a (app_name)" exit 1 ;; esac done if [ "$BOARD_LOWER" == "" ] || [ "$CHIP_ID" == "" ] || [ "$IMG_LOWER" == "" ] || [ "$RUN_LOWER" == "" ]; then echo "input argument error" echo "[Usage]" echo "$0 -d (hw chip id) -c (custom name) -i (image type) -r (run environment)" exit 1 fi #get iot_ver from iot_version.h. IOT_VER_FILE="${TOP_DIR}/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 } if [ "$PSRAM_ENABLE_GEN" == "1" ]; then if [ "$PSRAM_SIZE" == "" ] || [ "$PSRAM_SIZE" == "4" ]; then # the default psram size is 4m PSRAM_SIZE_STR="F" PSRAM_SIZE_PARAM="P4" elif [ "$PSRAM_SIZE" == "8" ]; then PSRAM_SIZE_STR="E" PSRAM_SIZE_PARAM="P8" else PSRAM_SIZE_STR="T" PSRAM_SIZE_PARAM="P2" fi else PSRAM_SIZE="0" PSRAM_SIZE_PARAM="P0" fi # distinguish iot or sg app. # 判断是iot还是sg if [ "$APP_LOWER" == "plc_uart" ] || [ "$APP_LOWER" == "demo" ] || [ "$APP_LOWER" == "ge" ] || [ "$APP_LOWER" == "ge_ckq" ] \ || [ "$APP_LOWER" == "ge_lwip" ] || [ "$APP_LOWER" == "ge_ext" ] || [ "$APP_LOWER" == "cus_at" ] \ || [ "$APP_LOWER" == "demo_lwip" ] || [ "$APP_LOWER" == "iot_sniffer" ] \ || [ "$APP_LOWER" == "ge_micro" ] || [ "$APP_LOWER" == "sila" ] || [ "$APP_LOWER" == "at_micro" ] || [ "$APP_LOWER" == "iot_dl645" ]; then IOT_SMART_BUILD=1 APP_UPPER=$(echo $APP_LOWER | tr '[a-z]' '[A-Z]') else IOT_SMART_BUILD=0 if [ "$APP_LOWER" == "brm" ] || [ "$APP_LOWER" == "brk" ] || [ "$APP_LOWER" == "tfm" ] || [ "$APP_LOWER" == "bsrm" ] \ || [ "$APP_LOWER" == "bsrm_cus" ] || [ "$APP_LOWER" == "solr" ] || [ "$APP_LOWER" == "sg_ext" ] \ || [ "$APP_LOWER" == "sg_meter" ] || [ "$APP_LOWER" == "sniffer" ]; then APP_UPPER=$(echo $APP_LOWER | tr '[a-z]' '[A-Z]') else APP_UPPER="SG" fi fi if [ "$DB_LOWER" == "release" ]; then DB_RLS_FLAG="R" else DB_LOWER="debug" DB_RLS_FLAG="D" fi BOARD_UPPER=$(echo $BOARD_LOWER | tr '[a-z]' '[A-Z]') IMG_UPPER=$(echo $IMG_LOWER | tr '[a-z]' '[A-Z]') RUN_UPPER=$(echo $RUN_LOWER | tr '[a-z]' '[A-Z]') MODE_UPPER=$(echo $MODE_LOWER | tr '[a-z]' '[A-Z]') SIZE_UPPER=$(echo $SIZE_LOWER | tr '[a-z]' '[A-Z]') CHIP_VER_UPPER=$(echo $CHIP_VER_LOWER | tr '[a-z]' '[A-Z]') CORE_TYPE_UPPER=$(echo $CORE_TYPE_LOWER | tr '[a-z]' '[A-Z]') # cleanup old file. rm -f $CUR_DIR/sbl.bin rm -f $CUR_DIR/pib.bin rm -f $CUR_DIR/sp.bin rm -f $CUR_DIR/oem*.bin rm -f $CUR_DIR/ht.bin rm -f $CUR_DIR/ht_1p.bin rm -f $CUR_DIR/ht*.fw # rm -f $CUR_DIR/cfg_log.txt # 如果是kunlun3 if [ "x${CHIP_VER_UPPER}" == "x3" ]; then # clear files and generate folders if [ "x${CORE_TYPE_UPPER}" == "xAMPPLC" ]; then rm -f $CUR_DIR/ht_cus.bin rm -f $CUR_DIR/ht_cus.bin.fw rm -f $CUR_DIR/ht_cus_ori.bin fi rm -f $CUR_DIR/ht_ori.bin # 根据board类型来指定固件存放的位置 if [[ "${BOARD_LOWER}" == "fpga"* ]]; then BIN_PATH=${CUR_DIR}/customer/${SIZE_UPPER}/fpga/${IMG_LOWER}/bin/ OUT_PATH=${CUR_DIR}/customer/${SIZE_UPPER}/fpga/${IMG_LOWER}/out/ elif [[ "${BOARD_LOWER}" == "evb32"* ]]; then BIN_PATH=${CUR_DIR}/customer/${SIZE_UPPER}/hz_evb/${IMG_LOWER}/bin/ OUT_PATH=${CUR_DIR}/customer/${SIZE_UPPER}/hz_evb/${IMG_LOWER}/out/ elif [[ "${BOARD_LOWER}" == "evb558"* ]]; then BIN_PATH=${CUR_DIR}/customer/${SIZE_UPPER}/qj_evb/${IMG_LOWER}/bin/ OUT_PATH=${CUR_DIR}/customer/${SIZE_UPPER}/qj_evb/${IMG_LOWER}/out/ elif [[ "${BOARD_LOWER}" == "evb671"* ]]; then BIN_PATH=${CUR_DIR}/customer/${SIZE_UPPER}/flx_evb/${IMG_LOWER}/bin/ OUT_PATH=${CUR_DIR}/customer/${SIZE_UPPER}/flx_evb/${IMG_LOWER}/out/ elif [[ "${BOARD_LOWER}" == "htzd3211pt03" ]]; then BIN_PATH=${CUR_DIR}/customer/${SIZE_UPPER}/pt/${IMG_LOWER}/bin/ OUT_PATH=${CUR_DIR}/customer/${SIZE_UPPER}/pt/${IMG_LOWER}/out/ elif [[ "${BOARD_LOWER}" == "htzd"* ]]; then BIN_PATH=${CUR_DIR}/customer/${SIZE_UPPER}/htzd/${IMG_LOWER}/bin/ OUT_PATH=${CUR_DIR}/customer/${SIZE_UPPER}/htzd/${IMG_LOWER}/out/ elif [[ "${BOARD_LOWER}" == "qj"* ]]; then BIN_PATH=${CUR_DIR}/customer/${SIZE_UPPER}/qj/${IMG_LOWER}/bin/ OUT_PATH=${CUR_DIR}/customer/${SIZE_UPPER}/qj/${IMG_LOWER}/out/ elif [[ "${BOARD_LOWER}" == "flx"* ]]; then BIN_PATH=${CUR_DIR}/customer/${SIZE_UPPER}/flx/${IMG_LOWER}/bin/ OUT_PATH=${CUR_DIR}/customer/${SIZE_UPPER}/flx/${IMG_LOWER}/out/ elif [[ "${BOARD_LOWER}" == "spe"* ]]; then BIN_PATH=${CUR_DIR}/customer/${SIZE_UPPER}/spe/${IMG_LOWER}/bin/ OUT_PATH=${CUR_DIR}/customer/${SIZE_UPPER}/spe/${IMG_LOWER}/out/ elif [[ "${BOARD_LOWER}" == "gx"* ]]; then BIN_PATH=${CUR_DIR}/customer/${SIZE_UPPER}/gx/${IMG_LOWER}/bin/ OUT_PATH=${CUR_DIR}/customer/${SIZE_UPPER}/gx/${IMG_LOWER}/out/ elif [[ "${BOARD_LOWER}" == "dt"* ]]; then BIN_PATH=${CUR_DIR}/customer/${SIZE_UPPER}/dt/${IMG_LOWER}/bin/ OUT_PATH=${CUR_DIR}/customer/${SIZE_UPPER}/dt/${IMG_LOWER}/out/ elif [[ "${BOARD_LOWER}" == "evb5202"* ]]; then BIN_PATH=${CUR_DIR}/customer/${SIZE_UPPER}/evb5202/${IMG_LOWER}/bin/ OUT_PATH=${CUR_DIR}/customer/${SIZE_UPPER}/evb5202/${IMG_LOWER}/out/ elif [[ "${BOARD_LOWER}" == "goldfinger_17p"* ]]; then BIN_PATH=${CUR_DIR}/customer/${SIZE_UPPER}/goldfinger_17p/${IMG_LOWER}/bin/ OUT_PATH=${CUR_DIR}/customer/${SIZE_UPPER}/goldfinger_17p/${IMG_LOWER}/out/ elif [[ "${BOARD_LOWER}" == "stamp"* ]]; then BIN_PATH=${CUR_DIR}/customer/${SIZE_UPPER}/stamp/${IMG_LOWER}/bin/ OUT_PATH=${CUR_DIR}/customer/${SIZE_UPPER}/stamp/${IMG_LOWER}/out/ elif [[ "${BOARD_LOWER}" == "ledc"* ]]; then BIN_PATH=${CUR_DIR}/customer/${SIZE_UPPER}/ledc/${IMG_LOWER}/bin/ OUT_PATH=${CUR_DIR}/customer/${SIZE_UPPER}/ledc/${IMG_LOWER}/out/ elif [[ "${BOARD_LOWER}" == "yp"* ]]; then BIN_PATH=${CUR_DIR}/customer/${SIZE_UPPER}/yp/${IMG_LOWER}/bin/ OUT_PATH=${CUR_DIR}/customer/${SIZE_UPPER}/yp/${IMG_LOWER}/out/ else BIN_PATH=${CUR_DIR}/customer/${SIZE_UPPER}/${BOARD_LOWER}/${IMG_LOWER}/bin/ OUT_PATH=${CUR_DIR}/customer/${SIZE_UPPER}/${BOARD_LOWER}/${IMG_LOWER}/out/ fi # 创建固件文件存放路径 mkdir -p $BIN_PATH mkdir -p $OUT_PATH # 根据内核类型选择配置文件目录 if [ "x${CORE_TYPE_UPPER}" == "xAMPPLC" ]; then CFG_DIR=${TOP_DIR}"/build/cfg3" else CFG_DIR=${TOP_DIR}"/build/cfg3_plc" fi # 链接脚本目录 用来获取sbl的运行地址 LDS_DIR=${TOP_DIR}"/startup/ldscripts/riscv3" # SIZE_UPPER 指的是flash size # 根据参数来指定配置文件的名称 if [ "${RUN_UPPER}" == "UPGRADE" ]; then if [ "${SIZE_UPPER}" != "" ]; then if [ "$PSRAM_ENABLE_GEN" == "1" ]; then CFG_NAME=${CFG_DIR}"/"${SIZE_LOWER}"_"${IMG_LOWER}"_upgrade_psram.cfg" else CFG_NAME=${CFG_DIR}"/"${SIZE_LOWER}"_"${IMG_LOWER}"_upgrade.cfg" fi else CFG_NAME=${CFG_DIR}"/"${IMG_LOWER}"_upgrade.cfg" fi else if [ ${IOT_SMART_BUILD} == 1 ]; then if [ "${SIZE_UPPER}" == "2M" ] || [ "${SIZE_UPPER}" == "4M" ]; then if [ "${RUN_UPPER}" == "PSRAM" ]; then CFG_NAME=${CFG_DIR}"/smart_"${SIZE_LOWER}"_"${IMG_LOWER}_psram.cfg else CFG_NAME=${CFG_DIR}"/smart_"${SIZE_LOWER}"_"${IMG_LOWER}.cfg fi else CFG_NAME=${CFG_DIR}"/smart_"${IMG_LOWER}.cfg fi else if [ "${SIZE_UPPER}" != "" ]; then if [ "${RUN_UPPER}" == "PSRAM" ]; then CFG_NAME=${CFG_DIR}"/"${SIZE_LOWER}"_"${IMG_LOWER}_psram.cfg else CFG_NAME=${CFG_DIR}"/"${SIZE_LOWER}"_"${IMG_LOWER}.cfg fi else if [ "${RUN_UPPER}" == "PSRAM" ]; then CFG_NAME=${CFG_DIR}"/"${IMG_LOWER}_psram.cfg else CFG_NAME=${CFG_DIR}"/"${IMG_LOWER}.cfg fi fi fi fi # 复制一份临时的配置文件 供修改 TMP_CFG_NAME=${CFG_DIR}"/"${BOARD_LOWER}_${IMG_LOWER}_tmp.cfg cp ${CFG_NAME} ${TMP_CFG_NAME} # 配置文件中会存储是否快速启动的配置 # OPT_KEYWORD 是动态配置字段 可以在这个字段添加额外的说明 if [ "x${FAST_BOOT}" == "x1" ]; then OPT_KEYWORD="FB-" else OPT_KEYWORD="" fi if [ "x${DUAL_ENABLE}" == "x1" ]; then OPT_KEYWORD=DUAL-${OPT_KEYWORD} fi if [ "x${RF_ENABLE}" == "x1" ]; then OPT_KEYWORD=RF-${OPT_KEYWORD} fi # set option keyword to fw name for kl3. # PROTO_TYPE 指的是支持的协议类型 OPT_KEYWORD=${PROTO_TYPE}-${OPT_KEYWORD} if [ "x${CORE_TYPE_UPPER}" == "xAMPPLC" ]; then OPT_KEYWORD="AMPPLC-${OPT_KEYWORD}" fi # prepare ht.bin # 准备好ht.bin if [ "${IMG_UPPER}" == "CKB" ]; then HT_FILE="ht_sta.bin" else HT_FILE="ht_"${IMG_LOWER}".bin" fi if [ "x${CORE_TYPE_UPPER}" == "xAMPPLC" ]; then cp ${TOP_DIR}/ap/.output/cus/lib/${HT_FILE} $CUR_DIR/ht_cus.bin fi if [[ "${BOARD_LOWER}" == "*3201*" ]]; then chip_ver=3201 fi if [[ "${BOARD_LOWER}" == "*3211*" ]]; then chip_ver=3211 fi if [[ "${BOARD_LOWER}" == "*3031*" ]]; then chip_ver=3031 fi if [ "${IMG_UPPER}" == "CCO" ]; then if [ ${IOT_SMART_BUILD} == 1 ]; then # smart build 时要区分 1p 和3p if [ "${chip_ver}" == "3201" ]; then cp $CUR_DIR/iot_ht_3p.bin $CUR_DIR/ht.bin fi cp $CUR_DIR/iot_ht_1p.bin $CUR_DIR/ht_1p.bin else # 其他情况只有3p 修改为ht # iot_ht_3p.bin 由 build_flash_kl3.sh 从ht_cco.bin 复制过来 cp $CUR_DIR/iot_ht_3p.bin $CUR_DIR/ht.bin fi else cp ${TOP_DIR}/ap/.output/plc/lib/${HT_FILE} $CUR_DIR/ht.bin fi # prepare oem.bin # 根据core类型指定oem文件 if [ "x${CORE_TYPE_UPPER}" == "xAMPPLC" ]; then if [ ${IOT_SMART_BUILD} == 1 ]; then OEM_CFG=${BOARD_UPPER}"_AMPIOT_OEM.ini" OEM_FILE=${BOARD_UPPER}"_AMPIOT_OEM.bin" else OEM_CFG=${BOARD_UPPER}"_AMPSG_OEM.ini" OEM_FILE=${BOARD_UPPER}"_AMPSG_OEM.bin" fi else OEM_CFG=${BOARD_UPPER}"_OEM.ini" OEM_FILE=${BOARD_UPPER}"_OEM.bin" fi cp $TOP_DIR/tools/oem/$OEM_CFG ./tmp_oem.ini #set mid for iot board(cco and sta use same oem.ini) # smart模式需要根据img类型动态修改mid值 if [ ${IOT_SMART_BUILD} == 1 ]; then if [ "${IMG_UPPER}" == "CCO" ]; then sed -i "s/mid.*/mid 1/g" ./tmp_oem.ini elif [ "${IMG_UPPER}" == "STA" ]; then sed -i "s/mid.*/mid 0/g" ./tmp_oem.ini fi fi if [ "${RUN_UPPER}" != "UPGRADE" ]; then # 打包非升级文件的时候生成 oem.bin ./oem_tool --input=./tmp_oem.ini --output=$TOP_DIR/tools/oem/$OEM_FILE fi rm ./tmp_oem.ini cp $TOP_DIR/tools/oem/$OEM_FILE $CUR_DIR/oem.bin # 修改配置文件中的layout index配置 sed -i "/img_type=./a layout_index=${FLASH_LAYOUT_INDEX}" ${TMP_CFG_NAME} # config run address and little header of img. # 从链接文件中读取 sbl的运行地址,写入到配置文件中 sbl_lds_file="${LDS_DIR}/link_sbl.lds" sbl_run_addr=`grep -ri "iram\ (rxai\!w)" ${sbl_lds_file}|awk '{print $6}'|awk -F, '{print $1}'` sed -i "/path=\.\/sbl.bin/a run_addr=${sbl_run_addr}" ${TMP_CFG_NAME} # 如果设置了快速启动 则写入配置信息到配置文件中 if [ "x${FAST_BOOT}" == "x1" ]; then sed -i "s/fastboot=./fastboot=1/g" ${TMP_CFG_NAME} fi # 这个部分的代码用于 给各个img.bin生成img_header # 虽然配置文件中给每个部分得img都添加了配置 但ah中只会对fw部分的img添加img_header if [ "x${CORE_TYPE_UPPER}" == "xAMPPLC" ]; then # add run addr # 这个链接文件由 ap文件夹中的Makefile复制过来 cus_lds_file=$CUR_DIR/tmp_cus.lds lds_file=$CUR_DIR/tmp_plc.lds # 把内存大小写入配置文件 sed -i "/flash_size=./a psram_size=${PSRAM_SIZE}" ${TMP_CFG_NAME} # 从链接文件中读取运行地址并写入配置文件 plc_run_addr=`grep -ri "flash\ (rxai\!w)" ${lds_file}|awk '{print $6}'|awk -F, '{print $1}'` cus_run_addr=`grep -ri "flash\ (rxai\!w)" ${cus_lds_file} |awk '{print $6}'|awk -F, '{print $1}'` sed -i "/path=\.\/ht.bin/a run_addr=${plc_run_addr}" ${TMP_CFG_NAME} sed -i "/path=\.\/ht_cus.bin/a run_addr=${cus_run_addr}" ${TMP_CFG_NAME} # add iot version # 从 iot_version.h 中读取版本信息 写入变量 IOT_VER get_iot_ver ${IOT_VER_FILE} # 把版本信息写入配置文件 sed -i "s/version=.*/version=${IOT_VER}/g" ${TMP_CFG_NAME} if [ "${IMG_UPPER}" == "CCO" ] && [ ${IOT_SMART_BUILD} == 1 ]; then # smart 模式 分别生成1p 和 3p sed -i "s/ht.bin/ht_1p.bin/g" ${TMP_CFG_NAME} # add header cat ${TMP_CFG_NAME} >> cfg_log.txt echo -e "\n-----a------\n" >> cfg_log.txt ./ah -a ${TMP_CFG_NAME} sed -i "s/ht_1p.bin/ht.bin/g" ${TMP_CFG_NAME} if [ "${chip_ver}" == "3201" ]; then #avoid ht_cus.bin add head twice sed -i "s/ht_cus.bin/ht_cus_tmp.bin/g" ${TMP_CFG_NAME} # add header cat ${TMP_CFG_NAME} >> cfg_log.txt echo -e "\n-----a------\n" >> cfg_log.txt ./ah -a ${TMP_CFG_NAME} sed -i "s/ht_cus_tmp.bin/ht_cus.bin/g" ${TMP_CFG_NAME} fi else # add header # 其他模式直接开始生成 cat ${TMP_CFG_NAME} >> cfg_log.txt echo -e "\n-----a------\n" >> cfg_log.txt ./ah -a ${TMP_CFG_NAME} fi else # add run addr # 非 AMPPLC的情况 # 这个链接文件由 ap文件夹中的Makefile复制过来 lds_file=$CUR_DIR/tmp_plc.lds # 从链接脚本中读取运行地址然后写入配置文件 sed -i "/flash_size=./a psram_size=${PSRAM_SIZE}" ${TMP_CFG_NAME} plc_run_addr=`grep -ri "flash\ (rxai\!w)" ${lds_file}|awk '{print $6}'|awk -F, '{print $1}'` sed -i "/path=\.\/ht.bin/a run_addr=${plc_run_addr}" ${TMP_CFG_NAME} # add iot version # 从 iot_version.h 中读取版本信息 然后写入变量 IOT_VER get_iot_ver ${IOT_VER_FILE} # 把版本信息写入配置文件 sed -i "s/version=.*/version=${IOT_VER}/g" ${TMP_CFG_NAME} if [ "${IMG_UPPER}" == "CCO" ] && [ ${IOT_SMART_BUILD} == 1 ]; then # smart_build 时分别生成1p和3p sed -i "s/ht.bin/ht_1p.bin/g" ${TMP_CFG_NAME} # add header cat ${TMP_CFG_NAME} >> cfg_log.txt echo -e "\n-----a------\n" >> cfg_log.txt ./ah -a ${TMP_CFG_NAME} sed -i "s/ht_1p.bin/ht.bin/g" ${TMP_CFG_NAME} if [ "${chip_ver}" == "3201" ]; then # add header cat ${TMP_CFG_NAME} >> cfg_log.txt echo -e "\n-----a------\n" >> cfg_log.txt ./ah -a ${TMP_CFG_NAME} fi else # add header # 其他情况直接生成 cat ${TMP_CFG_NAME} >> cfg_log.txt echo -e "\n------a-----\n" >> cfg_log.txt ./ah -a ${TMP_CFG_NAME} fi fi #config lzma. # 如果配置了 lzma 则这里进行压缩,把压缩后的文件命名为 ht.bin if [ "${MODE_UPPER}" == "LZMA" ]; then if [ "x${CORE_TYPE_UPPER}" == "xAMPPLC" ] && [ "x${FAST_BOOT}" != "x1" ]; then ./elzma e $CUR_DIR/ht_cus.bin $CUR_DIR/ht_cus.bin.lzma cp $CUR_DIR/ht_cus.bin $CUR_DIR/ht_cus.bin.fw mv $CUR_DIR/ht_cus.bin.lzma $CUR_DIR/ht_cus.bin fi if [ "${IMG_UPPER}" == "CCO" ] && [ ${IOT_SMART_BUILD} == 1 ]; then ./elzma e $CUR_DIR/ht_1p.bin $CUR_DIR/ht_1p.bin.lzma cp $CUR_DIR/ht_1p.bin $CUR_DIR/ht_1p.bin.fw mv $CUR_DIR/ht_1p.bin.lzma $CUR_DIR/ht_1p.bin if [ "${chip_ver}" == "3201" ]; then ./elzma e $CUR_DIR/ht.bin $CUR_DIR/ht.bin.lzma cp $CUR_DIR/ht.bin $CUR_DIR/ht.bin.fw mv $CUR_DIR/ht.bin.lzma $CUR_DIR/ht.bin fi else ./elzma e $CUR_DIR/ht.bin $CUR_DIR/ht.bin.lzma cp $CUR_DIR/ht.bin $CUR_DIR/ht.bin.fw mv $CUR_DIR/ht.bin.lzma $CUR_DIR/ht.bin fi fi cp $TOP_DIR/sbl/.output/plc/lib/kunlun_sbl.bin $CUR_DIR/sbl.bin # Kl3 compiles ram.bin separately to improve compilation speed, so do not need process ram.bin here. # 这一部分代码根据不同的board类型来写入相应的加密扰码 if [ "${BOARD_UPPER}" == "QJ5580DCCO03" ] || [ "${BOARD_UPPER}" == "QJ5580DCKB03" ] || [ "${BOARD_UPPER}" == "QJ5582DSTA03" ] || [ "${BOARD_UPPER}" == "QJ5582DIIC03" ] || [ "${BOARD_UPPER}" == "QJ5582D3PS03" ] || [ "${BOARD_UPPER}" == "EVB5580DCCO03" ] || [ "${BOARD_UPPER}" == "EVB5582DSTA03" ] || [ "${BOARD_UPPER}" == "EVB5582D3PS03" ]; then sed -i "s,encrypt_mode=0x0,encrypt_mode=0x3,g" ${TMP_CFG_NAME} sed -i "s,encrypt_pattern=0x55,encrypt_pattern=0x66,g" ${TMP_CFG_NAME} sed -i "s,vendor_id=18516,vendor_id=20810,g" ${TMP_CFG_NAME} fi if [ "${BOARD_UPPER}" == "FLX6710CCO03" ] || [ "${BOARD_UPPER}" == "FLX6710CKB03" ] || [ "${BOARD_UPPER}" == "FLX6711STA03" ] || [ "${BOARD_UPPER}" == "FLX6711IIC03" ] || [ "${BOARD_UPPER}" == "FLX67113PS03" ] || [ "${BOARD_UPPER}" == "EVB6710CCO03" ] || [ "${BOARD_UPPER}" == "EVB6711STA03" ] || [ "${BOARD_UPPER}" == "EVB67113PS03" ]; then sed -i "s,encrypt_mode=0x0,encrypt_mode=0x3,g" ${TMP_CFG_NAME} sed -i "s,encrypt_pattern=0x55,encrypt_pattern=0x99,g" ${TMP_CFG_NAME} sed -i "s,vendor_id=18516,vendor_id=20552,g" ${TMP_CFG_NAME} fi if [ "${BOARD_UPPER}" == "SPE7303CCO03" ] || [ "${BOARD_UPPER}" == "SPE7303CKB03" ] || [ "${BOARD_UPPER}" == "SPE7301STA03" ] || [ "${BOARD_UPPER}" == "SPE7301IIC03" ] || [ "${BOARD_UPPER}" == "SPE73013PS03" ]; then sed -i "s,encrypt_mode=0x0,encrypt_mode=0x3,g" ${TMP_CFG_NAME} sed -i "s,encrypt_pattern=0x55,encrypt_pattern=0xcc,g" ${TMP_CFG_NAME} sed -i "s,vendor_id=18516,vendor_id=20549,g" ${TMP_CFG_NAME} fi if [ "${BOARD_UPPER}" == "GX2001CCO03" ] || [ "${BOARD_UPPER}" == "GX2001CKB03" ] || [ "${BOARD_UPPER}" == "GX2011STA03" ] || [ "${BOARD_UPPER}" == "GX2011IIC03" ] || [ "${BOARD_UPPER}" == "GX20113PS03" ]; then sed -i "s,encrypt_mode=0x0,encrypt_mode=0x3,g" ${TMP_CFG_NAME} sed -i "s,encrypt_pattern=0x55,encrypt_pattern=0x33,g" ${TMP_CFG_NAME} sed -i "s,vendor_id=18516,vendor_id=18264,g" ${TMP_CFG_NAME} fi if [ "${BOARD_UPPER}" == "DT0530CCO03" ] || [ "${BOARD_UPPER}" == "DT0531STA03" ] || [ "${BOARD_UPPER}" == "DT0531IIC03" ] || [ "${BOARD_UPPER}" == "DT05313PS03" ] || [ "${BOARD_UPPER}" == "DT0530CKB03" ]; then sed -i "s,encrypt_mode=0x0,encrypt_mode=0x3,g" ${TMP_CFG_NAME} sed -i "s,encrypt_pattern=0x55,encrypt_pattern=0xdd,g" ${TMP_CFG_NAME} sed -i "s,vendor_id=18516,vendor_id=17492,g" ${TMP_CFG_NAME} fi if [ "${BOARD_UPPER}" == "YP8801CCO03" ] || [ "${BOARD_UPPER}" == "YP8811STA03" ] || [ "${BOARD_UPPER}" == "YP88113PS03" ] || [ "${BOARD_UPPER}" == "YP8801CKB03" ] || [ "${BOARD_UPPER}" == "YP8811IIC03" ]; then sed -i "s,encrypt_mode=0x0,encrypt_mode=0x3,g" ${TMP_CFG_NAME} sed -i "s,encrypt_pattern=0x55,encrypt_pattern=0xa9,g" ${TMP_CFG_NAME} sed -i "s,vendor_id=18516,vendor_id=22864,g" ${TMP_CFG_NAME} fi # prepare pib file # 根据board类型来选择pib文件 PIB_IMG=${BOARD_UPPER} #BRM BSRM BSRM_CUS BRMT. if [ "${BOARD_UPPER}" == "HTZD3201BSRM03" ] || [ "${BOARD_UPPER}" == "HTZD3201BRMT03" ]; then PIB_IMG="EVB5202STA03" fi # HTZD + EVB. if [ "${BOARD_UPPER}" == "HTZD3201CCO03" ] || [ "${BOARD_UPPER}" == "EVB3201CCO03" ] || [ "${BOARD_UPPER}" == "EVB3201CCO03_RFIN" ]; then PIB_IMG=HTZDCCO elif [ "${BOARD_UPPER}" == "HTZD3211IIC03" ] || [ "${BOARD_UPPER}" == "EVB3211IIC03" ]; then PIB_IMG=HTZDIIC elif [ "${BOARD_UPPER}" == "HTZD32113PS03" ] || [ "${BOARD_UPPER}" == "EVB32113PS03" ] || [ "${BOARD_UPPER}" == "HTZD3211STA03" ] || [ "${BOARD_UPPER}" == "EVB3211STA03" ] || [ "${BOARD_UPPER}" == "EVB3211STA03_RFIN" ] || [ "${BOARD_UPPER}" == "HTZD3211PT03" ]; then PIB_IMG=HTZDSTA fi if [[ "${BOARD_UPPER}" == *"CKB03" ]]; then # CKB. PIB_IMG=HTZDSTA01_PIB fi if [[ "${BOARD_UPPER}" == "EVB32"* ]]; then # ${BOARD_UPPER/EVB} 作用是去除BOARD_UPPER 中的 EVB字符串 BOARD_UPPER=${BOARD_UPPER/EVB/HZEVB} fi BOARD_UPPER=${BOARD_UPPER/3201/} BOARD_UPPER=${BOARD_UPPER/3211/} BOARD_UPPER=${BOARD_UPPER/3031/} # QJ + EVB. if [ "${BOARD_UPPER}" == "QJ5580DCCO03" ] || [ "${BOARD_UPPER}" == "EVB5580DCCO03" ]; then PIB_IMG=HTZDCCO elif [ "${BOARD_UPPER}" == "QJ5582D3PS03" ] || [ "${BOARD_UPPER}" == "EVB5582D3PS03" ] || \ [ "${BOARD_UPPER}" == "QJ5582DSTA03" ] || [ "${BOARD_UPPER}" == "EVB5582DSTA03" ] || \ [ "${BOARD_UPPER}" == "QJ5582DIIC03" ]; then PIB_IMG=HTZDSTA fi if [[ "${BOARD_UPPER}" == "EVB558"* ]]; then BOARD_UPPER=${BOARD_UPPER/EVB/QJEVB} fi BOARD_UPPER=${BOARD_UPPER/5580D/} BOARD_UPPER=${BOARD_UPPER/5582D/} # FLX + EVB. if [ "${BOARD_UPPER}" == "FLX6710CCO03" ] || [ "${BOARD_UPPER}" == "EVB6710CCO03" ]; then PIB_IMG=HTZDCCO elif [ "${BOARD_UPPER}" == "FLX67113PS03" ] || [ "${BOARD_UPPER}" == "EVB67113PS03" ] || \ [ "${BOARD_UPPER}" == "FLX6711IIC03" ] || \ [ "${BOARD_UPPER}" == "FLX6711STA03" ] || [ "${BOARD_UPPER}" == "EVB6711STA03" ]; then PIB_IMG=HTZDSTA fi if [[ "${BOARD_UPPER}" == "EVB671"* ]]; then BOARD_UPPER=${BOARD_UPPER/EVB/FLXEVB} fi BOARD_UPPER=${BOARD_UPPER/6710/} BOARD_UPPER=${BOARD_UPPER/6711/} # SPE. if [ "${BOARD_UPPER}" == "SPE7303CCO03" ]; then PIB_IMG=HTZDCCO elif [ "${BOARD_UPPER}" == "SPE73013PS03" ] || [ "${BOARD_UPPER}" == "SPE7301IIC03" ] || \ [ "${BOARD_UPPER}" == "SPE7301STA03" ] ; then PIB_IMG=HTZDSTA fi BOARD_UPPER=${BOARD_UPPER/7303/} BOARD_UPPER=${BOARD_UPPER/7301/} # GX. if [ "${BOARD_UPPER}" == "GX2001CCO03" ]; then PIB_IMG=HTZDCCO elif [ "${BOARD_UPPER}" == "GX20113PS03" ] || [ "${BOARD_UPPER}" == "GX2011IIC03" ] || \ [ "${BOARD_UPPER}" == "GX2011STA03" ] ; then PIB_IMG=HTZDSTA fi BOARD_UPPER=${BOARD_UPPER/2001/} BOARD_UPPER=${BOARD_UPPER/2011/} # DT. if [ "${BOARD_UPPER}" == "DT0530CCO03" ]; then PIB_IMG=HTZDCCO elif [ "${BOARD_UPPER}" == "DT05313PS03" ] || [ "${BOARD_UPPER}" == "DT0531STA03" ] || \ [ "${BOARD_UPPER}" == "DT0531IIC03" ] ; then PIB_IMG=HTZDSTA fi BOARD_UPPER=${BOARD_UPPER/0530/} BOARD_UPPER=${BOARD_UPPER/0531/} # YP. if [ "${BOARD_UPPER}" == "YP8801CCO03" ]; then PIB_IMG=HTZDCCO elif [ "${BOARD_UPPER}" == "YP88113PS03" ] || [ "${BOARD_UPPER}" == "YP8811STA03" ] || \ [ "${BOARD_UPPER}" == "YP8811IIC03" ] ; then PIB_IMG=HTZDSTA fi BOARD_UPPER=${BOARD_UPPER/8801/} BOARD_UPPER=${BOARD_UPPER/8811/} # GOLDFINGER. if [ "${BOARD_UPPER}" == "GOLDFINGER_17P03" ]; then if [ "${IMG_UPPER}" == "CCO" ]; then PIB_IMG=${BOARD_UPPER/GOLDFINGER_17P/HTZD3201CCO} BOARD_UPPER=${BOARD_UPPER/GOLDFINGER_17P/GOLDFINGER_17PCCO} else PIB_IMG=${BOARD_UPPER/GOLDFINGER_17P/HTZD3211STA} BOARD_UPPER=${BOARD_UPPER/GOLDFINGER_17P/GOLDFINGER_17PSTA} fi fi # STAMP. if [ "${BOARD_UPPER}" == "STAMP03" ]; then if [ "${IMG_UPPER}" == "CCO" ]; then PIB_IMG=${BOARD_UPPER/STAMP/HTZD3201CCO} BOARD_UPPER=${BOARD_UPPER/STAMP/STAMPCCO} else PIB_IMG=${BOARD_UPPER/STAMP/HTZD3211STA} BOARD_UPPER=${BOARD_UPPER/STAMP/STAMPSTA} fi fi # LEDC. if [ "${BOARD_UPPER}" == "LEDC03" ]; then if [ "${IMG_UPPER}" == "CCO" ]; then PIB_IMG=${BOARD_UPPER/LEDC/HTZD3201CCO} BOARD_UPPER=${BOARD_UPPER/LEDC/LEDCCCO} else PIB_IMG=${BOARD_UPPER/LEDC/HTZD3211STA} BOARD_UPPER=${BOARD_UPPER/LEDC/LEDCSTA} fi fi PIB_SRC_PATH=${TOP_DIR}/tools/pib/ cd ${PIB_SRC_PATH} #kl3 pt board only need two general pib files if [ "${BOARD_UPPER}" == "HTZDPT03" ]; then PIB_FILE=HTZDSTA01_PIB.bin LP_PIB_FILE=HTZDSTA01_LP_PIB.bin else # 找到所有包含指定名称的pib文件 # 这里找到的pib文件不区分是01还是03 PIB_FILE=`ls ${PIB_SRC_PATH} | grep "${PIB_IMG}" | grep "PIB"` if [ "${IOT_SMART_BUILD}" == "0" ]; then LP_PIB_FILE=`ls ${PIB_SRC_PATH} | grep "${PIB_IMG}" | grep "LP_PIB"` fi fi cd - #kl3 need to modify the FTM firmware name. if [ "${IMG_UPPER}" == "FTM" ]; then APP_UPPER="FTM" fi # 这段代码由于初步指定最终打包的bin文件名称 if [ ${IOT_SMART_BUILD} == 1 ]; then if [ "${RUN_UPPER}" == "PSRAM" ]; then sed -i "s,key_word=IOT-,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}-${RUN_UPPER}-${PSRAM_SIZE_STR}-${OPT_KEYWORD}${DB_RLS_FLAG}-,g" ${TMP_CFG_NAME} else sed -i "s,key_word=IOT-,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}-${OPT_KEYWORD}${DB_RLS_FLAG}-,g" ${TMP_CFG_NAME} fi else if [ "${RUN_UPPER}" == "PSRAM" ]; then sed -i "s,key_word=SG-,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}-${RUN_UPPER}-${PSRAM_SIZE_STR}-${OPT_KEYWORD},g" ${TMP_CFG_NAME} elif [ "${RUN_UPPER}" == "UPGRADE" ]; then if [ "$PSRAM_ENABLE_GEN" == "1" ]; then sed -i "s,key_word=SG-,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}-${RUN_UPPER}-PSRAM-${PSRAM_SIZE_STR}-${OPT_KEYWORD},g" ${TMP_CFG_NAME} else sed -i "s,key_word=SG-,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}-${RUN_UPPER}-${OPT_KEYWORD},g" ${TMP_CFG_NAME} fi else sed -i "s,key_word=SG-,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}-${OPT_KEYWORD},g" ${TMP_CFG_NAME} fi fi if [ "${SIZE_UPPER}" == "4M" ]; then # flash size 为 4m 的时候 添加一个 F 标识 sed -i "s,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}-,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}-F-,g" ${TMP_CFG_NAME} else # flash size 为 其他情况 的时候 添加一个 T 标识 sed -i "s,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}-,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}-T-,g" ${TMP_CFG_NAME} fi #define img_type if [ "x${DUAL_ENABLE}" == "x1" ]; then if [ "${APP_UPPER}" == "BRM" ]; then sed -i "s/img_type=./img_type=7/" ${TMP_CFG_NAME} elif [ "${APP_UPPER}" == "BSRM_CUS" ]; then sed -i "s/img_type=./img_type=8/" ${TMP_CFG_NAME} else sed -i "s/img_type=./img_type=2/" ${TMP_CFG_NAME} fi if [ "${IMG_UPPER}" == "CKB" ]; then sed -i "s/img_type=./img_type=6/" ${TMP_CFG_NAME} fi if [ "x${NEW_TYPE_CCO}" == "x1" ]; then sed -i "s/img_type=./img_type=10/" ${TMP_CFG_NAME} fi else if [ "${APP_UPPER}" == "BRM" ]; then sed -i "s/img_type=./img_type=12/" ${TMP_CFG_NAME} elif [ "${APP_UPPER}" == "BSRM_CUS" ]; then sed -i "s/img_type=./img_type=13/" ${TMP_CFG_NAME} else sed -i "s/img_type=./img_type=11/" ${TMP_CFG_NAME} fi if [ "${IMG_UPPER}" == "CKB" ] || [ "x${NEW_TYPE_CCO}" == "x1" ]; then echo "Something wrong!!!, stop generate firmware." exit 1 fi fi set -o errexit array=("${PIB_FILE// / }" "${LP_PIB_FILE// / }") # 根据找到的PIB文件来依次生成 最终的bin文件 for var in ${array[@]} do echo "pib:${var}" cp ${TOP_DIR}/tools/pib/$var $CUR_DIR/pib.bin cp ${TOP_DIR}/tools/pib/$var ${OUT_PATH} left=${var#*_} append="" while [ "$left"x != "PIB.bin"x ]; do val=`echo $left | awk -F '_' '{print $1}'` left=${left#*_} append=$append$val"-" done cp ${TMP_CFG_NAME} ./tmp.cfg if [ "${IMG_UPPER}" == "CCO" ]; then if [ ${IOT_SMART_BUILD} == 1 ]; then sed -i "s,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}-,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}-1P-${append},g" ./tmp.cfg sed -i "s/ht.bin/ht_1p.bin/g" ./tmp.cfg cat ./tmp.cfg >> cfg_log.txt echo -e "\n------c-----\n" >> cfg_log.txt ./ah -c ./tmp.cfg #board-3201 need extra 3p-cco. if [ "${chip_ver}" == "3201" ]; then sed -i "s/ht_1p.bin/ht.bin/g" ./tmp.cfg sed -i "s/-${BOARD_UPPER}-1P-/-${BOARD_UPPER}-3P-/" ./tmp.cfg cat ./tmp.cfg >> cfg_log.txt echo -e "\n------c-----\n" >> cfg_log.txt ./ah -c ./tmp.cfg fi else sed -i "s,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}-,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}-${append},g" ./tmp.cfg if [ "x${NEW_TYPE_CCO}" == "x1" ]; then sed -i "/key_word/s/CCO/NEW_TYPE_CCO/g" ./tmp.cfg fi cat ./tmp.cfg >> cfg_log.txt echo -e "\n------c-----\n" >> cfg_log.txt ./ah -c ./tmp.cfg fi else sed -i "s,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}-,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}-${append},g" ./tmp.cfg cat ./tmp.cfg >> cfg_log.txt echo -e "\n------c-----\n" >> cfg_log.txt ./ah -c ./tmp.cfg #extra lp only pib upgrade file. # 生成只包含pib的升级文件 if [ "${BOARD_UPPER}X" == "HTZDSTA03X" ] || [ "${BOARD_UPPER}X" == "FPGASTA03X" ] || [ "${BOARD_UPPER}X" == "QJSTA03X" ] \ || [ "${BOARD_UPPER}X" == "FLXSTA03X" ] || [ "${BOARD_UPPER}X" == "SPESTA03X" ] || [ "${BOARD_UPPER}X" == "GXSTA03X" ] \ || [ "${BOARD_UPPER}X" == "DTSTA03X" ] || [ "${BOARD_UPPER}X" == "YPSTA03X" ]; then left=${var#*_} if [ "$left"x == "LP_PIB.bin"x ] && [ "${RUN_UPPER}X" == "UPGRADEX" ]; then sed -i "s/image_num=.*/image_num=0x1/g" ./tmp.cfg sed -i "s/${BOARD_UPPER}/${BOARD_UPPER}-ONLYPIB/g" ./tmp.cfg cat ./tmp.cfg >> cfg_log.txt echo -e "\n------c-----\n" >> cfg_log.txt ./ah -c ./tmp.cfg fi fi fi rm ./tmp.cfg done rm ${TMP_CFG_NAME} #prepare .out file. if [ "x${CORE_TYPE_UPPER}" == "xAMPPLC" ]; then if [ ! -d ${OUT_PATH}/amp_plc ]; then mkdir -p ${OUT_PATH}/amp_plc fi cp ${TOP_DIR}/ap/.output/plc/lib/* ${OUT_PATH}/amp_plc cp ${TOP_DIR}/sbl/.output/plc/lib/* ${OUT_PATH}/amp_plc if [ "x${DUAL_ENABLE}" == "x1" ]; then cp -f ${TOP_DIR}/bb_cpu/.output/plc/lib/* ${OUT_PATH}/amp_plc fi if [ -d "${TOP_DIR}/ap/.output/cus/lib" ]; then if [ ! -d ${OUT_PATH}/amp_cus ]; then mkdir -p ${OUT_PATH}/amp_cus fi cp ${TOP_DIR}/ap/.output/cus/lib/* ${OUT_PATH}/amp_cus fi else if [ ! -d ${OUT_PATH}/plc_only ]; then mkdir -p ${OUT_PATH}/plc_only fi cp ${TOP_DIR}/ap/.output/plc/lib/* ${OUT_PATH}/plc_only cp ${TOP_DIR}/sbl/.output/plc/lib/* ${OUT_PATH}/plc_only if [ "x${DUAL_ENABLE}" == "x1" ]; then cp -f ${TOP_DIR}/bb_cpu/.output/plc/lib/* ${OUT_PATH}/plc_only fi if [ "x${SEC_CPU_ENABLE}" == "x1" ]; then cp -f ${TOP_DIR}/sec_cpu/.output/plc/lib/* ${OUT_PATH}/plc_only fi fi cp ${TOP_DIR}/tools/oem/${OEM_FILE} ${OUT_PATH} mv ./${CHIP_ID}-${APP_UPPER}-* $BIN_PATH else # 这下面是kunlun1 if [ "$SIZE_LOWER" == "" ]; then BIN_PATH=${CUR_DIR}/customer/1M/${BOARD_LOWER}/${IMG_LOWER}/bin/ OUT_PATH=${CUR_DIR}/customer/1M/${BOARD_LOWER}/${IMG_LOWER}/out/ else BIN_PATH=${CUR_DIR}/customer/${SIZE_UPPER}/${BOARD_LOWER}/${IMG_LOWER}/bin/ OUT_PATH=${CUR_DIR}/customer/${SIZE_UPPER}/${BOARD_LOWER}/${IMG_LOWER}/out/ fi mkdir -p $BIN_PATH mkdir -p $OUT_PATH if [ "${IMG_UPPER}" == "3PS" ] || [ "${IMG_UPPER}" == "CKB" ]; then IMG_LOWER="sta" fi if [ "${product_line}" == "PLC" ] && [ "${target}" == "kunlun2" ]; then CFG_DIR=${TOP_DIR}"/build/cfg2_plc" else CFG_DIR=${TOP_DIR}"/build/cfg" fi if [ "${RUN_UPPER}" == "UPGRADE" ]; then if [ "${SIZE_UPPER}" != "" ]; then if [ "$PSRAM_ENABLE_GEN" == "1" ] && [[ "${IMG_LOWER}" == "sta" || "${IMG_LOWER}" == "iic" ]]; then CFG_NAME=${CFG_DIR}"/"${SIZE_LOWER}"_"${IMG_LOWER}"_upgrade_psram.cfg" else CFG_NAME=${CFG_DIR}"/"${SIZE_LOWER}"_"${IMG_LOWER}"_upgrade.cfg" fi else CFG_NAME=${CFG_DIR}"/"${IMG_LOWER}"_upgrade.cfg" fi else if [ ${IOT_SMART_BUILD} == 1 ]; then if [ "${SIZE_UPPER}" == "2M" ] || [ "${SIZE_UPPER}" == "4M" ]; then if [ "${RUN_UPPER}" == "PSRAM" ]; then CFG_NAME=${CFG_DIR}"/smart_"${SIZE_LOWER}"_"${IMG_LOWER}_psram.cfg else CFG_NAME=${CFG_DIR}"/smart_"${SIZE_LOWER}"_"${IMG_LOWER}.cfg fi else CFG_NAME=${CFG_DIR}"/smart_"${IMG_LOWER}.cfg fi else if [ "${SIZE_UPPER}" != "" ]; then if [ "${RUN_UPPER}" == "PSRAM" ] && [[ "${IMG_LOWER}" == "sta" || "${IMG_LOWER}" == "iic" || "${IMG_LOWER}" == "ftm" ]]; then CFG_NAME=${CFG_DIR}"/"${SIZE_LOWER}"_"${IMG_LOWER}_psram.cfg else CFG_NAME=${CFG_DIR}"/"${SIZE_LOWER}"_"${IMG_LOWER}.cfg fi else if [ "${RUN_UPPER}" == "PSRAM" ] && [ "${IMG_LOWER}" == "sta" ]; then CFG_NAME=${CFG_DIR}"/"${IMG_LOWER}_psram.cfg else CFG_NAME=${CFG_DIR}"/"${IMG_LOWER}.cfg fi fi fi fi if [ "${CHIP_VER_UPPER}" == "" ]; then CHIP_VER_UPPER="1" fi TMP_CFG_NAME=${CFG_DIR}"/"${BOARD_LOWER}_${IMG_LOWER}_tmp.cfg cp ${CFG_NAME} ${TMP_CFG_NAME} if [ ${IOT_SMART_BUILD} == 1 ]; then if [ "${RUN_UPPER}" == "PSRAM" ]; then sed -i "s,key_word=IOT-,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}${IMG_UPPER}0${CHIP_VER_UPPER}-${RUN_UPPER}-${PSRAM_SIZE_STR}-${DB_RLS_FLAG}-,g" ${TMP_CFG_NAME} else sed -i "s,key_word=IOT-,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}${IMG_UPPER}0${CHIP_VER_UPPER}-${DB_RLS_FLAG}-,g" ${TMP_CFG_NAME} fi else if [ "${RUN_UPPER}" == "PSRAM" ]; then sed -i "s,key_word=SG-,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}${IMG_UPPER}0${CHIP_VER_UPPER}-${RUN_UPPER}-${PSRAM_SIZE_STR}-,g" ${TMP_CFG_NAME} elif [ "${RUN_UPPER}" == "UPGRADE" ]; then if [ "$PSRAM_ENABLE_GEN" == "1" ]; then sed -i "s,key_word=SG-,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}${IMG_UPPER}0${CHIP_VER_UPPER}-${RUN_UPPER}-PSRAM-${PSRAM_SIZE_STR}-,g" ${TMP_CFG_NAME} else sed -i "s,key_word=SG-,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}${IMG_UPPER}0${CHIP_VER_UPPER}-${RUN_UPPER}-,g" ${TMP_CFG_NAME} fi else if [ "$IMG_UPPER" == "CCO" ]; then sed -i "s,key_word=SG-,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}${IMG_UPPER}0${CHIP_VER_UPPER}-PSRAM-${PSRAM_SIZE_STR}-,g" ${TMP_CFG_NAME} else sed -i "s,key_word=SG-,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}${IMG_UPPER}0${CHIP_VER_UPPER}-,g" ${TMP_CFG_NAME} fi fi fi #config scramble. if [ "${BOARD_UPPER}" == "JSMT" ]; then sed -i "s,encrypt_mode=0x0,encrypt_mode=0x3,g" ${TMP_CFG_NAME} sed -i "s,encrypt_pattern=0x55,encrypt_pattern=0xaa,g" ${TMP_CFG_NAME} sed -i "s,vendor_id=18516,vendor_id=19796,g" ${TMP_CFG_NAME} fi if [ "${BOARD_UPPER}" == "FLX" ]; then sed -i "s,encrypt_mode=0x0,encrypt_mode=0x3,g" ${TMP_CFG_NAME} sed -i "s,encrypt_pattern=0x55,encrypt_pattern=0x99,g" ${TMP_CFG_NAME} sed -i "s,vendor_id=18516,vendor_id=20552,g" ${TMP_CFG_NAME} fi # prepare ht.bin if [ "${IMG_UPPER}" == "IIC" ] || [ "${IMG_UPPER}" == "3PS" ] || [ "${IMG_UPPER}" == "I3C" ]; then HT_FILE="ht_sta.bin" else HT_FILE="ht_"${IMG_LOWER}".bin" fi if [ ${IOT_SMART_BUILD} == 1 ] && [ "${IMG_UPPER}" == "CCO" ]; then cp $CUR_DIR/iot_ht_3p.bin $CUR_DIR/ht.bin cp $CUR_DIR/iot_ht_1p.bin $CUR_DIR/ht_1p.bin fi if [ ! -f $CUR_DIR/ht.bin ]; then cp ${TOP_DIR}/ap/.output/lib/${HT_FILE} $CUR_DIR/ht.bin fi sed -i "/img_type=./a layout_index=${FLASH_LAYOUT_INDEX}" ${TMP_CFG_NAME} if [ "x${NEW_TYPE_CCO}" == "x1" ]; then sed -i "s/img_type=./img_type=9/" ${TMP_CFG_NAME} fi #config lzma. if [ "${MODE_UPPER}" == "LZMA" ]; then ./elzma e $CUR_DIR/ht.bin $CUR_DIR/ht.bin.lzma cp $CUR_DIR/ht.bin $CUR_DIR/ht.bin.fw mv $CUR_DIR/ht.bin.lzma $CUR_DIR/ht.bin if [ -f $CUR_DIR/ht_1p.bin ]; then ./elzma e $CUR_DIR/ht_1p.bin $CUR_DIR/ht_1p.bin.lzma cp $CUR_DIR/ht_1p.bin $CUR_DIR/ht_1p.bin.fw mv $CUR_DIR/ht_1p.bin.lzma $CUR_DIR/ht_1p.bin fi fi # prepare oem.bin cp $TOP_DIR/sbl/.output/lib/kunlun_sbl.bin $CUR_DIR/sbl.bin cp $TOP_DIR/mfgtool/ram/.output/lib/kl${CHIP_VER_UPPER}_ram.bin $CUR_DIR/ram.bin cp $TOP_DIR/mfgtool/ram/.output/lib/kl${CHIP_VER_UPPER}_ram*.bin $CUR_DIR cp $TOP_DIR/sp/boot/.output/lib/sp_fw.bin $CUR_DIR/sp.bin if [ "${IMG_UPPER}" == "FTM" ] || [ "${IMG_UPPER}" == "CKB" ]; then OEM_CFG=${BOARD_UPPER}"STA01_OEM.ini" OEM_FILE=${BOARD_UPPER}"STA01_OEM.bin" elif [ "${BOARD_UPPER}" == "STAMP_22P" ] || [ "${BOARD_UPPER}" == "SI301X_30P" ] \ || [ "${BOARD_UPPER}" == "GOLDFINGER_17P" ] \ || [ "${BOARD_UPPER}" == "MPPT" ] || [ "${BOARD_UPPER}" == "HTR" ]; then #cco and sta share one oem for STAMP_22P SI301X_30P GOLDFINGER_17P MPPT HTR. OEM_CFG=${BOARD_UPPER}"_OEM.ini" OEM_FILE=${BOARD_UPPER}"_OEM.bin" else OEM_CFG=${BOARD_UPPER}${IMG_UPPER}"0"${CHIP_VER_UPPER}"_OEM.ini" OEM_FILE=${BOARD_UPPER}${IMG_UPPER}"0"${CHIP_VER_UPPER}"_OEM.bin" fi cp $TOP_DIR/tools/oem/$OEM_CFG ./tmp_oem.ini #set mid for iot board(cco and sta use same oem.ini) if [ ${IOT_SMART_BUILD} == 1 ]; then if [ "${IMG_UPPER}" == "CCO" ]; then sed -i "s/mid.*/mid 1/g" ./tmp_oem.ini elif [ "${IMG_UPPER}" == "STA" ]; then sed -i "s/mid.*/mid 0/g" ./tmp_oem.ini fi fi if [ "${RUN_UPPER}" != "UPGRADE" ]; then ./oem_tool --input=./tmp_oem.ini --output=$TOP_DIR/tools/oem/$OEM_FILE fi rm ./tmp_oem.ini cp $TOP_DIR/tools/oem/$OEM_FILE $CUR_DIR/oem.bin # prepare pib file PIB_SRC_PATH=${TOP_DIR}/tools/pib/ if [ "${BOARD_UPPER}" == "FLX" ] || [ "${BOARD_UPPER}" == "STAMP_22P" ] \ || [ "${BOARD_UPPER}" == "SI301X_30P" ] || [ "${BOARD_UPPER}" == "LEDC_3P0" ] \ || [ "${BOARD_UPPER}" == "GOLDFINGER_17P" ] || [ "${BOARD_UPPER}" == "D2D" ] \ || [ "${BOARD_UPPER}" == "CCTT" ] || [ "${BOARD_UPPER}" == "MPPT" ] \ || [ "${BOARD_UPPER}" == "HTR" ]; then BOARD_UPPER_PIB="HTZD" else BOARD_UPPER_PIB=${BOARD_UPPER} fi if [ "${IMG_UPPER}" == "FTM" ] || [ "${IMG_UPPER}" == "CKB" ]; then PIB_IMG="STA" else PIB_IMG=${IMG_UPPER} PIB_FILE=${BOARD_UPPER_PIB}${IMG_UPPER}"01_PIB.bin" fi if [ "${IMG_UPPER}" == "3PS" ]; then PIB_IMG="STA" PIB_FILE=${BOARD_UPPER_PIB}"STA01_PIB.bin" fi cd ${PIB_SRC_PATH} if [ ${IOT_SMART_BUILD} == 1 ]; then PIB_FILE=`ls ${PIB_SRC_PATH} | grep "${BOARD_UPPER_PIB}" | grep "${PIB_IMG}0${CHIP_VER_UPPER}_PIB"` LP_PIB_FILE=`ls ${PIB_SRC_PATH} | grep "${BOARD_UPPER_PIB}" | grep "${PIB_IMG}0${CHIP_VER_UPPER}_LP_PIB"` else PIB_FILE=`ls ${PIB_SRC_PATH} | grep "${BOARD_UPPER_PIB}" | grep "${PIB_IMG}" | grep "PIB"` fi cd - set -o errexit array=("${PIB_FILE// / }" "${LP_PIB_FILE// / }") for var in ${array[@]} do echo "pib:${var}" cp ${TOP_DIR}/tools/pib/$var $CUR_DIR/pib.bin cp ${TOP_DIR}/tools/pib/$var ${OUT_PATH} left=${var#*_} append="" while [ "$left"x != "PIB.bin"x ]; do val=`echo $left | awk -F '_' '{print $1}'` left=${left#*_} append=$append$val"-" done cp ${TMP_CFG_NAME} ./tmp.cfg if [ "${IMG_UPPER}" == "CCO" ] && [ ${IOT_SMART_BUILD} == 1 ]; then if [ "${SIZE_UPPER}" == "COMBO" ]; then sed -i "s,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}${IMG_UPPER}0${CHIP_VER_UPPER}-,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}${IMG_UPPER}0${CHIP_VER_UPPER}-3P-${append},g" ./tmp.cfg elif [ "${SIZE_UPPER}" == "4M" ]; then sed -i "s,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}${IMG_UPPER}0${CHIP_VER_UPPER}-,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}${IMG_UPPER}0${CHIP_VER_UPPER}-3P-${append}F-,g" ./tmp.cfg elif [ "${SIZE_UPPER}" == "2M" ]; then sed -i "s,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}${IMG_UPPER}0${CHIP_VER_UPPER}-,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}${IMG_UPPER}0${CHIP_VER_UPPER}-3P-${append}T-,g" ./tmp.cfg else sed -i "s,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}${IMG_UPPER}0${CHIP_VER_UPPER}-,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}${IMG_UPPER}0${CHIP_VER_UPPER}-3P-${append}O-,g" ./tmp.cfg fi else if [ "${SIZE_UPPER}" == "COMBO" ]; then sed -i "s,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}${IMG_UPPER}0${CHIP_VER_UPPER}-,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}${IMG_UPPER}0${CHIP_VER_UPPER}-${append},g" ./tmp.cfg elif [ "${SIZE_UPPER}" == "4M" ]; then sed -i "s,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}${IMG_UPPER}0${CHIP_VER_UPPER}-,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}${IMG_UPPER}0${CHIP_VER_UPPER}-${append}F-,g" ./tmp.cfg elif [ "${SIZE_UPPER}" == "2M" ]; then sed -i "s,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}${IMG_UPPER}0${CHIP_VER_UPPER}-,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}${IMG_UPPER}0${CHIP_VER_UPPER}-${append}T-,g" ./tmp.cfg else sed -i "s,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}${IMG_UPPER}0${CHIP_VER_UPPER}-,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}${IMG_UPPER}0${CHIP_VER_UPPER}-${append}O-,g" ./tmp.cfg fi fi if [ "${APP_UPPER}" == "BSRM" ]; then sed -i "s/img_type=./img_type=3/" ./tmp.cfg elif [ "${APP_UPPER}" == "BSRM_CUS" ]; then sed -i "s/img_type=./img_type=4/" ./tmp.cfg fi if [ "x${NEW_TYPE_CCO}" == "x1" ]; then sed -i "/key_word/s/CCO/NEW_TYPE_CCO/g" ./tmp.cfg fi #structure fw package. ./ah -c ./tmp.cfg ${PSRAM_SIZE_PARAM} if [ ${IOT_SMART_BUILD} == 1 ] && [ "${IMG_UPPER}" == "CCO" ]; then sed -i "s/ht.bin/ht_1p.bin/g" ./tmp.cfg sed -i "s/-${BOARD_UPPER}${IMG_UPPER}0${CHIP_VER_UPPER}-3P-/-${BOARD_UPPER}${IMG_UPPER}0${CHIP_VER_UPPER}-1P-/" ./tmp.cfg ./ah -c ./tmp.cfg ${PSRAM_SIZE_PARAM} fi #extra lp only pib upgrade file for kl1 htzd sta and kl3 fpga sta. if [ "${BOARD_UPPER}${IMG_UPPER}X" == "HTZDSTAX" ] || [ "${BOARD_UPPER}${IMG_UPPER}X" == "FPGASTAX" ]; then left=${var#*_} if [ "$left"x == "LP_PIB.bin"x ] && [ "${RUN_UPPER}X" == "UPGRADEX" ]; then sed -i "s/image_num=.*/image_num=0x1/g" ./tmp.cfg sed -i "s/${BOARD_UPPER}${IMG_UPPER}../${BOARD_UPPER}${IMG_UPPER}0${CHIP_VER_UPPER}-ONLYPIB/g" ./tmp.cfg ./ah -c ./tmp.cfg ${PSRAM_SIZE_PARAM} fi fi rm ./tmp.cfg done rm ${TMP_CFG_NAME} rm -f *.lds #prepare .out file. cp ${TOP_DIR}/sbl/.output/lib/* ${OUT_PATH} cp ${TOP_DIR}/mfgtool/ram/.output/lib/* ${OUT_PATH} cp ${TOP_DIR}/ap/.output/lib/* ${OUT_PATH} cp ${TOP_DIR}/sp/boot/.output/lib/* ${OUT_PATH} cp ${TOP_DIR}/tools/oem/${OEM_FILE} ${OUT_PATH} mv ./${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}* $BIN_PATH if [ ${IOT_SMART_BUILD} == 1 ]; then if [ "${SIZE_LOWER}" == "" ]; then SPECIAL_OUT_FD="${OUT_PATH}/../out_${CHIP_ID}_${APP_LOWER}_${BOARD_LOWER}_${IMG_LOWER}_${RUN_LOWER}_1m_${DB_LOWER}" else SPECIAL_OUT_FD="${OUT_PATH}/../out_${CHIP_ID}_${APP_LOWER}_${BOARD_LOWER}_${IMG_LOWER}_${RUN_LOWER}_${SIZE_LOWER}_${DB_LOWER}" fi if [ -d ${SPECIAL_OUT_FD} ]; then rm -rf ${SPECIAL_OUT_FD}/* fi mv ${OUT_PATH} ${SPECIAL_OUT_FD} fi fi echo "genarate image finished."