添加 打包相关注释
This commit is contained in:
@@ -13,10 +13,12 @@ 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
|
||||
;;
|
||||
@@ -120,7 +122,8 @@ else
|
||||
PSRAM_SIZE_PARAM="P0"
|
||||
fi
|
||||
|
||||
#distinguish iot or sg app.
|
||||
# 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" ] \
|
||||
@@ -163,6 +166,7 @@ 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
|
||||
@@ -172,6 +176,7 @@ if [ "x${CHIP_VER_UPPER}" == "x3" ]; then
|
||||
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/
|
||||
@@ -224,17 +229,20 @@ if [ "x${CHIP_VER_UPPER}" == "x3" ]; then
|
||||
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
|
||||
@@ -272,10 +280,11 @@ if [ "x${CHIP_VER_UPPER}" == "x3" ]; then
|
||||
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
|
||||
@@ -290,13 +299,15 @@ if [ "x${CHIP_VER_UPPER}" == "x3" ]; then
|
||||
OPT_KEYWORD=RF-${OPT_KEYWORD}
|
||||
fi
|
||||
|
||||
#set option keyword to fw name for kl3.
|
||||
# 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
|
||||
@@ -320,44 +331,54 @@ if [ "x${CHIP_VER_UPPER}" == "x3" ]; then
|
||||
|
||||
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
|
||||
|
||||
# 修改配置文件中的layout index配置
|
||||
sed -i "/img_type=./a layout_index=${FLASH_LAYOUT_INDEX}" ${TMP_CFG_NAME}
|
||||
|
||||
#config run address and little header of img.
|
||||
# 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
|
||||
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
|
||||
@@ -375,23 +396,29 @@ if [ "x${CHIP_VER_UPPER}" == "x3" ]; then
|
||||
fi
|
||||
else
|
||||
# add header
|
||||
# 其他模式直接开始生成
|
||||
cat ${TMP_CFG_NAME} >> cfg_log.txt
|
||||
echo -e "\n-----------\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
|
||||
@@ -406,6 +433,7 @@ if [ "x${CHIP_VER_UPPER}" == "x3" ]; then
|
||||
fi
|
||||
else
|
||||
# add header
|
||||
# 其他情况直接生成
|
||||
cat ${TMP_CFG_NAME} >> cfg_log.txt
|
||||
echo -e "\n-----------\n" >> cfg_log.txt
|
||||
./ah -a ${TMP_CFG_NAME}
|
||||
@@ -413,6 +441,7 @@ if [ "x${CHIP_VER_UPPER}" == "x3" ]; then
|
||||
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
|
||||
@@ -439,6 +468,7 @@ if [ "x${CHIP_VER_UPPER}" == "x3" ]; then
|
||||
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}
|
||||
@@ -482,6 +512,7 @@ if [ "x${CHIP_VER_UPPER}" == "x3" ]; then
|
||||
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"
|
||||
@@ -496,6 +527,7 @@ if [ "x${CHIP_VER_UPPER}" == "x3" ]; then
|
||||
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
|
||||
@@ -504,12 +536,14 @@ if [ "x${CHIP_VER_UPPER}" == "x3" ]; then
|
||||
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
|
||||
|
||||
# prepare pib file
|
||||
# 根据board类型来选择pib文件
|
||||
PIB_IMG=${BOARD_UPPER}
|
||||
|
||||
#BRM BSRM BSRM_CUS BRMT.
|
||||
@@ -534,6 +568,7 @@ if [ "x${CHIP_VER_UPPER}" == "x3" ]; then
|
||||
fi
|
||||
|
||||
if [[ "${BOARD_UPPER}" == "EVB32"* ]]; then
|
||||
# ${BOARD_UPPER/EVB} 作用是去除BOARD_UPPER 中的 EVB字符串
|
||||
BOARD_UPPER=${BOARD_UPPER/EVB/HZEVB}
|
||||
fi
|
||||
BOARD_UPPER=${BOARD_UPPER/3201/}
|
||||
@@ -649,6 +684,7 @@ if [ "x${CHIP_VER_UPPER}" == "x3" ]; then
|
||||
PIB_FILE=HTZDSTA01_PIB.bin
|
||||
LP_PIB_FILE=HTZDSTA01_LP_PIB.bin
|
||||
else
|
||||
# 找到所有包含指定名称的pib文件
|
||||
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"`
|
||||
@@ -662,6 +698,7 @@ if [ "x${CHIP_VER_UPPER}" == "x3" ]; 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}
|
||||
@@ -683,8 +720,10 @@ if [ "x${CHIP_VER_UPPER}" == "x3" ]; then
|
||||
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
|
||||
|
||||
@@ -722,6 +761,7 @@ if [ "x${CHIP_VER_UPPER}" == "x3" ]; then
|
||||
|
||||
set -o errexit
|
||||
array=("${PIB_FILE// / }" "${LP_PIB_FILE// / }")
|
||||
# 根据找到的PIB文件来依次生成 最终的bin文件
|
||||
for var in ${array[@]}
|
||||
do
|
||||
echo "pib:${var}"
|
||||
@@ -759,6 +799,7 @@ if [ "x${CHIP_VER_UPPER}" == "x3" ]; then
|
||||
sed -i "s,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}-,key_word=${CHIP_ID}-${APP_UPPER}-${BOARD_UPPER}-${append},g" ./tmp.cfg
|
||||
./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
|
||||
@@ -810,7 +851,7 @@ if [ "x${CHIP_VER_UPPER}" == "x3" ]; then
|
||||
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/
|
||||
|
Reference in New Issue
Block a user