Files
kunlun/build/make_smart_sdk.sh

277 lines
10 KiB
Bash
Raw Normal View History

2024-09-28 14:24:04 +08:00
#!/bin/bash
app=$1
board_cco=$(echo $2 | tr '[A-Z]' '[a-z]')
flash_cco=$3
psram_cco=$4
board_sta=$(echo $5 | tr '[A-Z]' '[a-z]')
flash_sta=$6
psram_sta=$7
chip_id=$(echo $8 | tr '[A-Z]' '[a-z]')
debug_release=$(echo $9 | tr '[A-Z]' '[a-z]')
chip_type="kl1" # Fix kl1 for now.
oem_make_tool="./../tools/gen_img/oem_tool"
if [ "$debug_release" != "release" ]; then
debug_release="debug"
DB_RLS_FLAG="D"
else
DB_RLS_FLAG="R"
fi
source_cco_dir="../tools/gen_img/lib_sdk_source/cco_${app}_${flash_cco}m_${psram_cco}m_${chip_type}_${chip_id}_${debug_release}"
source_sta_dir="../tools/gen_img/lib_sdk_source/sta_${app}_${flash_sta}m_${psram_sta}m_${chip_type}_${chip_id}_${debug_release}"
Mainline_folder="../"
cmake_folder="../../SDKCmake"
sdk_folder="../tools/gen_img/sdk_${chip_type}${chip_id}_${app}_${board_cco}${flash_cco}${psram_cco}_${board_sta}${flash_sta}${psram_sta}_${debug_release}/sdk"
readme="app:${app}-chip:${chip_id}-cco.board:${board_cco}.flash:${flash_cco}M.psram:${psram_cco}M-sta.board:${board_sta}.flash:${flash_sta}M.psram:${psram_sta}M-${debug_release}"
chip_id_u=$(echo ${chip_id} | tr '[a-z]' '[A-Z]')
board_cco_u=$(echo $board_cco | tr '[a-z]' '[A-Z]')
board_sta_u=$(echo $board_sta | tr '[a-z]' '[A-Z]')
rm -rf $sdk_folder
mkdir -p $sdk_folder
echo "$readme"
echo "$readme @ $sdk_folder" > "$sdk_folder/rm.txt"
set -o errexit
#prepare bin
sdk_bins=("sbl.bin" "sp.bin")
dst_sta_bin_dir="$sdk_folder/bin/sta"
dst_cco_bin_dir="$sdk_folder/bin/cco"
mkdir -p ./$dst_sta_bin_dir
mkdir -p ./$dst_cco_bin_dir
for bin_file in ${sdk_bins[@]}; do
if [ ! -f $source_sta_dir/$bin_file ] || [ ! -f $source_cco_dir/$bin_file ]; then
if [ ! -f "$source_sta_dir/$bin_file" ]; then
echo "file not exist : $source_sta_dir/$bin_file"
else
echo "file not exist : $source_cco_dir/$bin_file"
fi
exit 1
fi
cp -f "$source_sta_dir/$bin_file" $dst_sta_bin_dir
cp -f "$source_cco_dir/$bin_file" $dst_cco_bin_dir
done
OEM_STA_INI=$Mainline_folder$"/tools/oem/"${board_sta_u}"STA01_OEM.ini"
OEM_CCO_INI=$Mainline_folder$"/tools/oem/"${board_cco_u}"CCO01_OEM.ini"
if [ ! -f $OEM_STA_INI ] || [ ! -f $OEM_CCO_INI ]; then
if [ ! -f $OEM_STA_INI ]; then
echo "file not exist : $OEM_STA_INI"
else
echo "file not exist : $OEM_CCO_INI"
fi
exit 1
fi
$oem_make_tool --input=$OEM_STA_INI --output=$dst_sta_bin_dir/oem.bin
$oem_make_tool --input=$OEM_CCO_INI --output=$dst_cco_bin_dir/oem.bin
PIB_STA_FILE=$Mainline_folder"/tools/pib/"${board_sta_u}"STA01_PIB.bin"
PIB_CCO_FILE=$Mainline_folder"/tools/pib/"${board_cco_u}"CCO01_PIB.bin"
if [ ! -f $PIB_STA_FILE ] || [ ! -f $PIB_CCO_FILE ]; then
if [ ! -f $PIB_STA_FILE ]; then
echo "file not exist : $PIB_STA_FILE"
else
echo "file not exist : $PIB_CCO_FILE"
fi
exit 1
fi
cp -f $PIB_STA_FILE $dst_sta_bin_dir/pib.bin
cp -f $PIB_CCO_FILE $dst_cco_bin_dir/pib.bin
#prepare cmake
cp -rf $cmake_folder/cmake $sdk_folder
#prepare inc
cp -rf $Mainline_folder/export/inc $sdk_folder
#prepare ld
src_ld_dir="$Mainline_folder/startup/ldscripts/riscv"
dst_ld_dir="$sdk_folder/ld"
mkdir -p $dst_ld_dir
if [ "$psram_sta" == "0" ]; then
cp -f $src_ld_dir/link_flash_smart_sta.lds $dst_ld_dir/link_flash_smart_sta.lds
else
cp -f $src_ld_dir/link_flash_smart_psram_sta.lds $dst_ld_dir/link_flash_smart_sta.lds
fi
if [ -d $src_ld_dir/link_flash_smart_psram_${psram_cco}m_cco.lds ]; then
cp -f $src_ld_dir/link_flash_smart_psram_${psram_cco}m_cco.lds $dst_ld_dir/link_flash_smart_cco.lds
else
cp -f $src_ld_dir/link_flash_smart_psram_cco.lds $dst_ld_dir/link_flash_smart_cco.lds
fi
if [ ! -f "$Mainline_folder/startup/ldscripts/riscv/sp_smart_cco.addrs.ld" ]; then
echo "file not exist : $Mainline_folder/startup/ldscripts/riscv/sp_smart_cco.addrs.ld"
exit 1
fi
if [ ! -f "$Mainline_folder/startup/ldscripts/riscv/sp_smart_sta.addrs.ld" ]; then
echo "file not exist : $Mainline_folder/startup/ldscripts/riscv/sp_smart_sta.addrs.ld"
exit 1
fi
if [ -e $src_ld_dir/rom.addrs.ld ];then
cp $src_ld_dir/rom.addrs.ld $dst_ld_dir
fi
cp -f $Mainline_folder/startup/ldscripts/riscv/sp_smart_cco.addrs.ld $dst_ld_dir
cp -f $Mainline_folder/startup/ldscripts/riscv/sp_smart_sta.addrs.ld $dst_ld_dir
#prepare lib
mkdir $sdk_folder/lib
cp -rf $source_sta_dir/*.a $sdk_folder/lib
if [ -f $source_cco_dir/libcco_app.a ]; then
cp $source_cco_dir/libcco_app.a $sdk_folder/lib
fi
# copy 3 phase cco lib
if [ $board_cco == "htzd" ] && [ $source_cco_dir/libht_cco_3p.a ]; then
cp $source_cco_dir/libht_cco_3p.a $sdk_folder/lib/libht_cco.a
# copy 1 phase cco lib
elif [ -f $source_cco_dir/libht_cco_1p.a ]; then
cp $source_cco_dir/libht_cco_1p.a $sdk_folder/lib/libht_cco.a
elif [ -f $source_cco_dir/libht_cco.a ]; then
cp $source_cco_dir/libht_cco.a $sdk_folder/lib
fi
#prepare tools
mkdir -p $sdk_folder/tools
if [ ! -f "$Mainline_folder/tools/gen_img/elzma" ]; then
echo "file not exist : $Mainline_folder/tools/gen_img/elzma"
exit 1
fi
if [ ! -f "$Mainline_folder/tools/gen_img/ah" ]; then
echo "file not exist : $Mainline_folder/tools/gen_img/ah"
exit 1
fi
cp -f $Mainline_folder/tools/gen_img/elzma $sdk_folder/tools
cp -f $Mainline_folder/tools/gen_img/ah $sdk_folder/tools
#prepare example
mkdir -p $sdk_folder/examples
####################### APP = 9 ge-ext app START ##########################
if [ "$app" == "9" ]; then
sdk_sub_dir="$sdk_folder/examples/iot_ge_ext_app"
mkdir $sdk_sub_dir
cp -rf $Mainline_folder/app/iot_ge_ext_app $sdk_sub_dir
cp -rf $cmake_folder/iot_ge_ext_app/CMakeLists.txt ${sdk_sub_dir}/
cp -rf $cmake_folder/iot_ge_ext_app/main.c ${sdk_sub_dir}/
mkdir -p $sdk_sub_dir/bin
mkdir -p $sdk_sub_dir/build_release_cco
mkdir -p $sdk_sub_dir/build_release_sta
cp -rf $Mainline_folder/app/grapp $sdk_folder/inc
echo flash_cco=${flash_cco} flash_sta=${flash_sta}
if [ ${flash_cco} == "2" ] && [ ${flash_sta} == "2" ]; then
cp -Rf $cmake_folder/iot_ge_ext_app/scripts_2m_2m $sdk_sub_dir/scripts
elif [ ${flash_cco} == "4" ] && [ ${flash_sta} == "4" ]; then
cp -Rf $cmake_folder/iot_ge_ext_app/scripts_4m_4m $sdk_sub_dir/scripts
else
cp -rf $cmake_folder/iot_ge_ext_app/scripts $sdk_sub_dir/
fi
if [ "$psram_sta" == "0" ]; then
rm -f $sdk_sub_dir/scripts/build_sta_psram.sh
rm -f $sdk_sub_dir/scripts/smart_sta_psram.cfg
else
rm -f $sdk_sub_dir/scripts/build-sta.sh
rm -f $sdk_sub_dir/scripts/smart_sta.cfg
mv $sdk_sub_dir/scripts/build_sta_psram.sh $sdk_sub_dir/scripts/build-sta.sh
mv $sdk_sub_dir/scripts/smart_sta_psram.cfg $sdk_sub_dir/scripts/smart_sta.cfg
fi
# change key_word
sed -i "s,key_word=IOT-SMARTCCO01-,key_word=IOT-${chip_id_u}-GE_EXT-${board_cco_u}-SMARTCCO01-${flash_cco}F${psram_cco}P-${DB_RLS_FLAG}-,g" $sdk_sub_dir/scripts/smart_cco.cfg
sed -i "s,key_word=IOT-SMARTSTA01-,key_word=IOT-${chip_id_u}-GE_EXT-${board_sta_u}-SMARTSTA01-${flash_sta}F${psram_sta}P-${DB_RLS_FLAG}-,g" $sdk_sub_dir/scripts/smart_sta.cfg
#delete *.c
find $sdk_folder/inc/grapp/ -name '*.c' |xargs rm -rf
fi
####################### APP = 9 END ##########################
####################### APP = 8 ge-lwip app START ##########################
if [ "$app" == "8" ]; then
cp -rf $cmake_folder/iot_ge_lwip_app $sdk_folder/examples
sdk_sub_dir="$sdk_folder/examples/iot_ge_lwip_app"
mkdir -p $sdk_sub_dir/bin
mkdir -p $sdk_sub_dir/build_release_cco
mkdir -p $sdk_sub_dir/build_release_sta
cp -rf $Mainline_folder/app/iot_ge_lwip_app $sdk_sub_dir
cp -rf $Mainline_folder/import/lwip $sdk_sub_dir/iot_ge_lwip_app/ge_lwip/
cp -rf $Mainline_folder/app/grapp $sdk_folder/inc
#delete *.c
find $sdk_sub_dir/iot_ge_lwip_app/ge_lwip/lwip/ports -name '*.c' |xargs rm -rf
find $sdk_folder/inc/grapp/ -name '*.c' |xargs rm -rf
fi
####################### APP = 8 END ##########################
####################### APP = 3 DEMO app START ##########################
if [ "$app" == "3" ]; then
sdk_sub_dir="$sdk_folder/examples/iot_demo_app"
mkdir -p $sdk_sub_dir
scripts_dir="scripts_${flash_cco}m_${flash_sta}m"
if [ -d $cmake_folder/iot_demo_app/${scripts_dir} ]; then
cp -rf $cmake_folder/iot_demo_app/${scripts_dir} ${sdk_sub_dir}/scripts
else
cp -rf $cmake_folder/iot_demo_app/scripts ${sdk_sub_dir}/
fi
cp -rf $cmake_folder/iot_demo_app/CMakeLists.txt ${sdk_sub_dir}/
cp -rf $cmake_folder/iot_demo_app/main.c ${sdk_sub_dir}/
mkdir -p $sdk_sub_dir/bin
mkdir -p $sdk_sub_dir/build_release_cco
mkdir -p $sdk_sub_dir/build_release_sta
cp -rf $Mainline_folder/app/demo $sdk_sub_dir
cp -rf $MAINLINE_FOLDER/app/utils/* $sdk_sub_dir
if [ "$psram_sta" == "0" ]; then
rm -f $sdk_sub_dir/scripts/build-sta_psram.sh
rm -f $sdk_sub_dir/scripts/smart_sta_psram.cfg
else
rm -f $sdk_sub_dir/scripts/build-sta.sh
rm -f $sdk_sub_dir/scripts/smart_sta.cfg
mv $sdk_sub_dir/scripts/build-sta_psram.sh $sdk_sub_dir/scripts/build-sta.sh
mv $sdk_sub_dir/scripts/smart_sta_psram.cfg $sdk_sub_dir/scripts/smart_sta.cfg
fi
fi
####################### APP = 3 END ##########################
####################### APP = 12 DEMO LWIP app START ##########################
if [ "$app" == "12" ]; then
sdk_sub_dir="$sdk_folder/examples/iot_demo_lwip_app"
cp -rf $cmake_folder/iot_demo_lwip_app $sdk_folder/examples
mkdir -p $sdk_sub_dir/bin
mkdir -p $sdk_sub_dir/build_release_cco
mkdir -p $sdk_sub_dir/build_release_sta
mkdir -p $sdk_sub_dir/iot_demo_lwip_app/demo_lwip/
cp -rf $Mainline_folder/app/demo_lwip $sdk_sub_dir
cp -rf $Mainline_folder/import/lwip $sdk_sub_dir/iot_demo_lwip_app/demo_lwip/
cp -rf $Mainline_folder/app/demo $sdk_folder/inc
#delete *.c
find $sdk_sub_dir/iot_demo_lwip_app/demo_lwip/lwip/ports -name '*.c' |xargs rm -rf
fi
####################### APP = 12 END ##########################
#########################change psram#########################
sed -i "s/-DIOT_PSRAM_ENABLE=[0-9]/-DIOT_PSRAM_ENABLE=$psram_sta/g" $sdk_sub_dir/scripts/build-sta.sh
sed -i "s/-DIOT_PSRAM_ENABLE=[0-9]/-DIOT_PSRAM_ENABLE=$psram_cco/g" $sdk_sub_dir/scripts/build-cco.sh
######################end change psram########################