make_package.sh 5.2 KB
#1、输入设备名字,程序模式,硬件号,版本号
payload_name="JZ_U3"
payload_mode="APP_UART"    # APP_PSDK 或者 APP_UART APP_TEST
payload_platform="PLATFORM_V3S"    
payload_version="V00.00.01.06"
payload_origin="DOMESTIC_VERSION"  # 国内版DOMESTIC_VERSION 海外版OVERSEAS_VERSION
payload_special="SPECIAL_NORMAL"      # 特殊固件注释
# 目前已有的特殊版本类型
# SPECIAL_NORMAL 普通版本
# SPECIAL_DAOTONG 道通版本

#2、根据负载选择滤波方式,目前仅h10使用带阻滤波
#high_pass_filtering
#directed_stopband_filtering
#if [ "${payload_name}" == "JZ_H10"  ] || [ "${payload_name}" == "JZ_U3" ]; then
if [ "${payload_name}" == "JZ_H10"  ] ; then
    filtering_way="directed_stopband_filtering"
    filter_type="DIRECTED_STOPBAND_FILTERING"
else
    filtering_way="high_pass_filtering"
    filter_type="HIGH_PASS_FILTERING"
fi

#3、特殊库的引入
    # 开 VERSION_SWITCH_ON  关 VERSION_SWITCH_OFF
    CedarxLib="VERSION_SWITCH_OFF"

    #0x01库 全志编解码
    if [ "${CedarxLib}" == "VERSION_SWITCH_ON"  ] ; then
        CedarXLib_CMake="set(CedarxLib VERSION_SWITCH_ON) "
        CedarXLib_Version="#define ALLWINNER_CEDAR VERSION_SWITCH_ON"
    else
        CedarXLib_CMake="set(CedarxLib VERSION_SWITCH_OFF) "
        CedarXLib_Version="#define ALLWINNER_CEDAR VERSION_SWITCH_OFF"
    fi
    sed -i "30s/.*/$CedarXLib_CMake/" ../CMakeLists.txt       
    sed -i "34s/.*/$CedarXLib_Version/" ../application/version_choose.h

    #0x02库 

# #将工程名进cmake文件
# # 国内版
# if [ "${payload_origin}" == "DOMESTIC_VERSION" ]; then
#     cmake_filtering="project(${payload_name}) "
#     sed -i "3s/.*/$cmake_filtering/" ../CMakeLists.txt
# # 海外版
# elif [ "${payload_origin}" == "OVERSEAS_VERSION" ]; then
#     if [[ $payload_name == *"_"* ]]; then
#         replaced_payload_name=${payload_name//_/-}
#         echo "替换前的工程名: $payload_name"
#         echo "替换后的工程名: $replaced_payload_name"
#         cmake_filtering="project(${replaced_payload_name}) "
#         sed -i "3s/.*/$cmake_filtering/" ../CMakeLists.txt
#     else
#         echo "出错,这个名字不含_符号,请修改你的工程名"
#         exit
#     fi
# fi

#将滤波方式写进cmake文件
cmake_filtering="set(filtering_type ${filtering_way}) "
sed -i "24s/.*/$cmake_filtering/" ../CMakeLists.txt

#将滤波方式写进version_choose.h 
filter_type_text="#define FILTERING_TYPE ${filter_type}"
sed -i "25s/.*/$filter_type_text/" ../application/version_choose.h

#将固件特殊类型名写入version_choose.h 
payload_special_text="#define SPECIAL_VERSION ${payload_special}"
sed -i "31s/.*/$payload_special_text/" ../application/version_choose.h

#3、将负载版本 负载模式 负载平台 负载版本号 写入version_choose.h
#负载版本
name_text="#define DEVICE_VERSION ${payload_name}"
echo $name_text
sed -i "10s/.*/$name_text/" ../application/version_choose.h

#负载模式
mode_text="#define APP_VERSION ${payload_mode}"
echo $mode_text
sed -i "13s/.*/$mode_text/" ../application/version_choose.h

#负载平台
platform_text="#define PLATFORM_VERSION ${payload_platform}"
echo $platform_text
sed -i "16s/.*/$platform_text/" ../application/version_choose.h

#负载版本号
# 提取版本号的四个部分
payload_version_part1=${payload_version:1:2}   # 截取第2和第3个字符
payload_version_part2=${payload_version:4:2}   # 截取第5和第6个字符
payload_version_part3=${payload_version:7:2}   # 截取第8和第9个字符
payload_version_part4=${payload_version:10:2}  # 截取第11和第12个字符

version_text="#define MAJOR_VERSION 0x${payload_version_part1}"
echo $version_text
sed -i "19s/.*/$version_text/" ../application/version_choose.h
version_text="#define MINOR_VERSION 0x${payload_version_part2}"
echo $version_text
sed -i "20s/.*/$version_text/" ../application/version_choose.h
version_text="#define MODIFY_VERSION 0x${payload_version_part3}"
echo $version_text
sed -i "21s/.*/$version_text/" ../application/version_choose.h
version_text="#define DEBUG_VERSION 0x${payload_version_part4}"
echo $version_text
sed -i "22s/.*/$version_text/" ../application/version_choose.h

# 负载的固件归属地
# 修改cmake文件,是否需要加载海外tts库
cmake_origin="set(firewarm_origin ${payload_origin}) "
sed -i "27s/.*/$cmake_origin/" ../CMakeLists.txt
# 修改version.h,是否需要加载海外tts模块
version_origin="#define FIRMWARE_ORIGIN ${payload_origin}"
sed -i "28s/.*/$version_origin/" ../application/version_choose.h

#打包诱骗升级包
# 拼接字符串得到更新包名字
BinName=$payload_name"_"$payload_version".bin"
TarPackage_second=UpgradePackage.tar.gz #二次解压包的名字
MD5saveFile=UpdateMD5num #md5文件内部的md5值

#二次压缩包的打包
cd ShellPack
./shellpack.sh
cd ../

#一次压缩包的打包 
mkdir Temp
mv $TarPackage_second ./Temp/ # 二次压缩包

#md5 校准
# 获取文件的md5值
cd Temp
md5_File="$(md5sum "$TarPackage_second" | cut -d ' ' -f 1)"
echo $md5_File

#把md5校准码写进去
echo $md5_File | tee $MD5saveFile > /dev/null #覆盖写

tar -zcf $BinName *
mv $BinName ../
cd ../
rm -rf Temp

echo "_____输出一次压缩包目录_____"
#参数说明 t 查看内容 f 压缩包名字指定
tar -tf $BinName