Files
kunlun/build/build_sdk_sg.sh

211 lines
10 KiB
Bash
Raw Permalink Normal View History

2024-09-28 14:24:04 +08:00
chip_id=$1
flash_type=$2
BUILD_BRANCH=$3
BUILD_TAG=$4
echo "build log:start build" ${chip_id} ${flash_type} ${BUILD_BRANCH} ${BUILD_TAG}
tool_path=../tools
dest_rootpath=../tools/gen_img/lib_sg_sdk
cmake_folder="../../SDKCmake"
mainline_path="../"
customer_path="../tools/gen_img/customer"
export_inc_path=../export/inc/
CHIP_ID=$(echo $chip_id | tr '[a-z]' '[A-Z]') # HZ WQ
CHIP_STRING=("HZ" "WQ")
FLASH_TYPE=$(echo $flash_type | tr '[a-z]' '[A-Z]') # 1M 2M 2K 2P 4M 4P
customer_list=("htzd" "jsmt" "gldq")
customer_num=${#customer_list[*]}
module_list=("cco" "iic" "sta" "3ps")
module_num=${#module_list[*]}
pib_list=("09" "default" "09_LP" "LP")
pib_num=${#pib_list[*]}
FLASH_TYPE_STRING=("1m" "2m" "2k" "2p" "4m" "4p")
flash_type_num=${#FLASH_TYPE_STRING[*]}
GROUP_CCO_PSRAM=(4 4 8 4 8 8)
GROUP_CCO_FLASH=(1 1 1 1 4 4)
GROUP_STA_PSRAM=(0 0 2 2 0 2)
GROUP_STA_FLASH=(1 2 2 2 4 4)
#print help info.
if [ "?" == "$1" ]; then
echo "*$0 [CHIP_ID] [FLASH_TYPE] [BUILD_BRANCH] [BUILD_TAG]"
echo "* [CHIP_ID] -- Optional, to set the chip id, support HZ\WQ."
echo "* [FLASH_TYPE] -- Optional, to set the flash type, support as follows."
for ((index=0; index < flash_type_num; index++)); do
echo "* ${FLASH_TYPE_STRING[$index]} ${GROUP_CCO_BOARD[$index]} (${GROUP_CCO_FLASH[$index]}M flash ${GROUP_CCO_PSRAM[$index]}M psram) + " \
"sta ${GROUP_STA_BOARD[$index]} (${GROUP_STA_FLASH[$index]}M flash ${GROUP_STA_PSRAM[$index]}M psram)"
done
echo "* [BUILD_BRANCH] -- Optional, to set the build branch."
echo "* [BUILD_TAG] -- Optional, to set the build tag."
exit 0
fi
set -o errexit
if [ "$CHIP_ID" == "" ]; then
CHIP_ID=${CHIP_STRING[0]}
INPUT_CHIP_OK=1
else
for STR in ${CHIP_STRING[@]}; do
if [ "$CHIP_ID" == "$STR" ]; then
INPUT_CHIP_OK=1
break
fi
done
fi
if [ "$FLASH_TYPE" == "" ]; then
FLASH_TYPE=${FLASH_TYPE_STRING[0]}
INPUT_FLASH_OK=1
else
for STR in ${FLASH_TYPE_STRING[@]}; do
if [ "$FLASH_TYPE" == "$STR" ]; then
INPUT_FLASH_OK=1
break
fi
done
fi
if [ "$INPUT_CHIP_OK" != "1" ] || [ "$INPUT_CHIP_OK" != "1" ]; then
echo "build param error, chip_id:${CHIP_ID}, flash_type:${FLASH_TYPE}."
exit 1
fi
for((i=0;i<$customer_num;i++))
do
mkdir -p $dest_rootpath/${customer_list[i]}/bin
mkdir -p $dest_rootpath/${customer_list[i]}/sdk/bin
mkdir -p $dest_rootpath/${customer_list[i]}/sdk/examples/iot_sg_app
mkdir -p $dest_rootpath/${customer_list[i]}/sdk/examples/iot_sg_app/scripts
mkdir -p $dest_rootpath/${customer_list[i]}/sdk/ld
mkdir -p $dest_rootpath/${customer_list[i]}/sdk/tools
mkdir -p $dest_rootpath/${customer_list[i]}/sdk/cmake
cp -r $mainline_path/app/smart_grid $dest_rootpath/${customer_list[i]}/sdk/examples/iot_sg_app
cp -r $cmake_folder/iot_sg_app/CMakeLists.txt $dest_rootpath/${customer_list[i]}/sdk/examples/iot_sg_app
cp -r $cmake_folder/iot_sg_app/main.c $dest_rootpath/${customer_list[i]}/sdk/examples/iot_sg_app
cp -r $mainline_path/export/* $dest_rootpath/${customer_list[i]}/sdk
cp -r $cmake_folder/cmake/* $dest_rootpath/${customer_list[i]}/sdk/cmake
if [ ${FLASH_TYPE} == "4P" ];then
cp $mainline_path/startup/ldscripts/riscv/link_psram_8m_cco.lds $dest_rootpath/${customer_list[i]}/sdk/ld/link_flash_cco.lds
cp $mainline_path/startup/ldscripts/riscv/link_psram_2m_sta.lds $dest_rootpath/${customer_list[i]}/sdk/ld/link_flash_sta.lds
elif [ ${FLASH_TYPE} == "4M" ];then
cp $mainline_path/startup/ldscripts/riscv/link_psram_8m_cco.lds $dest_rootpath/${customer_list[i]}/sdk/ld/link_flash_cco.lds
cp $mainline_path/startup/ldscripts/riscv/link_flash_4m_sta.lds $dest_rootpath/${customer_list[i]}/sdk/ld/link_flash_sta.lds
elif [ ${FLASH_TYPE} == "2P" ];then
cp $mainline_path/startup/ldscripts/riscv/link_psram_4m_cco.lds $dest_rootpath/${customer_list[i]}/sdk/ld/link_flash_cco.lds
cp $mainline_path/startup/ldscripts/riscv/link_psram_2m_sta.lds $dest_rootpath/${customer_list[i]}/sdk/ld/link_flash_sta.lds
elif [ ${FLASH_TYPE} == "2K" ];then
cp $mainline_path/startup/ldscripts/riscv/link_psram_8m_cco.lds $dest_rootpath/${customer_list[i]}/sdk/ld/link_flash_cco.lds
cp $mainline_path/startup/ldscripts/riscv/link_psram_2m_sta.lds $dest_rootpath/${customer_list[i]}/sdk/ld/link_flash_sta.lds
else
cp $mainline_path/startup/ldscripts/riscv/link_psram_4m_cco.lds $dest_rootpath/${customer_list[i]}/sdk/ld/link_flash_cco.lds
cp $mainline_path/startup/ldscripts/riscv/link_flash_sta.lds $dest_rootpath/${customer_list[i]}/sdk/ld/link_flash_sta.lds
fi
if [ -e $mainline_path/startup/ldscripts/riscv/sp_cco.addrs.ld ];then
cp $mainline_path/startup/ldscripts/riscv/sp_cco.addrs.ld $dest_rootpath/${customer_list[i]}/sdk/ld
fi
if [ -e $mainline_path/startup/ldscripts/riscv/sp_sta.addrs.ld ];then
cp $mainline_path/startup/ldscripts/riscv/sp_sta.addrs.ld $dest_rootpath/${customer_list[i]}/sdk/ld
fi
if [ -e $mainline_path/startup/ldscripts/riscv/sp.addrs.ld ];then
cp $mainline_path/startup/ldscripts/riscv/sp.addrs.ld $dest_rootpath/${customer_list[i]}/sdk/ld
fi
if [ -e $mainline_path/startup/ldscripts/riscv/rom.addrs.ld ];then
cp $mainline_path/startup/ldscripts/riscv/rom.addrs.ld $dest_rootpath/${customer_list[i]}/sdk/ld
fi
cp $mainline_path/tools/gen_img/ah $dest_rootpath/${customer_list[i]}/sdk/tools
if [ -e $mainline_path/tools/gen_img/elzma ];then
cp $mainline_path/tools/gen_img/elzma $dest_rootpath/${customer_list[i]}/sdk/tools
fi
for((j=0;j<$module_num;j++))
do
if [ ${FLASH_TYPE} == "4M" ] || [ ${FLASH_TYPE} == "4P" ]; then
bin_size=4M
elif [ ${module_list[j]}x == "cco"x ];then
bin_size=1M
else
bin_size=2M
fi
if [ ! -d ${customer_path}/${bin_size}/${customer_list[i]}/${module_list[j]} ];then
continue
fi
mkdir -p $dest_rootpath/${customer_list[i]}/sdk/bin/${module_list[j]}
if [ ${FLASH_TYPE} == "4M" ]; then
cp -r $cmake_folder/iot_sg_app/scripts_4m/* $dest_rootpath/${customer_list[i]}/sdk/examples/iot_sg_app/scripts
elif [ ${FLASH_TYPE} == "4P" ]; then
cp -r $cmake_folder/iot_sg_app/scripts_4m_psram/* $dest_rootpath/${customer_list[i]}/sdk/examples/iot_sg_app/scripts
elif [ ${FLASH_TYPE} == "2K" ]; then
cp -r $cmake_folder/iot_sg_app/scripts_2k/* $dest_rootpath/${customer_list[i]}/sdk/examples/iot_sg_app/scripts
elif [ ${FLASH_TYPE} == "2P" ]; then
cp -r $cmake_folder/iot_sg_app/scripts_2m_psram/* $dest_rootpath/${customer_list[i]}/sdk/examples/iot_sg_app/scripts
elif [ ${FLASH_TYPE} == "2M" ]; then
cp -r $cmake_folder/iot_sg_app/scripts_2m/* $dest_rootpath/${customer_list[i]}/sdk/examples/iot_sg_app/scripts
else
cp -r $cmake_folder/iot_sg_app/scripts/* $dest_rootpath/${customer_list[i]}/sdk/examples/iot_sg_app/scripts
fi
module_case=`echo ${module_list[j]}|awk '{print toupper($0)}'`
customer_case=`echo ${customer_list[i]}|awk '{print toupper($0)}'`
cp -r ${customer_path}/${bin_size}/${customer_list[i]}/${module_list[j]}/out/*OEM.bin $dest_rootpath/${customer_list[i]}/sdk/bin/${module_list[j]}/oem.bin
cp -r ${customer_path}/${bin_size}/${customer_list[i]}/${module_list[j]}/out/kl_ram.bin $dest_rootpath/${customer_list[i]}/sdk/bin/${module_list[j]}/ram.bin
cp -r ${customer_path}/${bin_size}/${customer_list[i]}/${module_list[j]}/out/kunlun_sbl.bin $dest_rootpath/${customer_list[i]}/sdk/bin/${module_list[j]}/sbl.bin
cp -r ${customer_path}/${bin_size}/${customer_list[i]}/${module_list[j]}/out/sp_fw.bin $dest_rootpath/${customer_list[i]}/sdk/bin/${module_list[j]}/sp.bin
for((m=0;m<$pib_num;m++))
do
if [ ${pib_list[m]}x != "default"x ];then
filename=${customer_path}/${bin_size}/${customer_list[i]}/${module_list[j]}/out/$customer_case$module_case"01_"${pib_list[m]}"_PIB.bin"
else
filename=${customer_path}/${bin_size}/${customer_list[i]}/${module_list[j]}/out/$customer_case$module_case"01_PIB.bin"
fi
echo $filename
if [ -e $filename ];then
if [ ${pib_list[m]}x == "default"x ];then
cp -r $filename $dest_rootpath/${customer_list[i]}/sdk/bin/${module_list[j]}/pib.bin
elif [ ${pib_list[m]}x == "LP"x ];then
cp -r $filename $dest_rootpath/${customer_list[i]}/sdk/bin/${module_list[j]}/lp_pib.bin
else
cp -r $filename $dest_rootpath/${customer_list[i]}/sdk/bin/${module_list[j]}
fi
cfgfile=$dest_rootpath/${customer_list[i]}/sdk/examples/iot_sg_app/scripts/flash_mapping_${module_list[j]}.cfg
if [ ${pib_list[m]}x == "LP"x ];then
cfgfile=$dest_rootpath/${customer_list[i]}/sdk/examples/iot_sg_app/scripts/flash_mapping_${module_list[j]}_lp.cfg
sed -i "s/key_word=.*/key_word=${CHIP_ID}-SG-${customer_case}${module_case}01-${pib_list[m]}-${BUILD_BRANCH}.${BUILD_TAG}-/g" $cfgfile
elif [ ${pib_list[m]}x == "default"x ];then
sed -i "s/key_word=.*/key_word=${CHIP_ID}-SG-${customer_case}${module_case}01-${BUILD_BRANCH}.${BUILD_TAG}-/g" $cfgfile
fi
fi
done
if [ ${module_list[j]}x == "iic"x ] || [ ${module_list[j]}x == "3ps"x ];then
upgradefile=${customer_path}/${bin_size}/${customer_list[i]}/${module_list[j]}/bin/*UPGRADE*.bin
rm -f $upgradefile
fi
cp ${customer_path}/${bin_size}/${customer_list[i]}/${module_list[j]}/bin/*.bin $dest_rootpath/${customer_list[i]}/bin
cd $dest_rootpath/${customer_list[i]}/sdk/examples/iot_sg_app/scripts
filepath=build-${module_list[j]}.sh
if [ -e $filepath ];then
chmod 777 $filepath
dos2unix ./$filepath
./$filepath
fi
cd -
done
done
echo "build log:end build" ${chip_id} ${flash_type} ${BUILD_BRANCH} ${BUILD_TAG}