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

# #2、识别设备类型,并设置编译链
# if [ "${payload_name}" == "JZ_H150S" ] ||
#    [ "${payload_name}" == "JZ_H150T" ] ||
#    [ "${payload_name}" == "JZ_H10" ] ||
#    [ "${payload_name}" == "JZ_H10T" ] ||
#    [ "${payload_name}" == "JZ_H1T" ] ||
#    [ "${payload_name}" == "JZ_H1E" ] ||
#    [ "${payload_name}" == "JZ_U3" ] ||
#    [ "${payload_name}" == "TF_A1" ]; then
#     payload_type="MEGAPHONE"
#     Compiler_CMake="set(MAKE_COMPILER ARM_CORTEXA9_LINUX) "
# elif [ "${payload_name}" == "JZ_IRC" ]; then
#     payload_type="CAMERA"
#     Compiler_CMake="set(MAKE_COMPILER ARM_X86_64_ARRCH64) "
# else
#     payload_type="OTHER_TYPE"
# fi

# sed -i "33s/.*/$Compiler_CMake/" ../CMakeLists.txt    

# #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库 音频库
#     #根据负载选择滤波方式,目前仅h10使用带阻滤波
#     #high_pass_filtering
#     #directed_stopband_filtering
#     if [ "${payload_name}" == "JZ_H10" ] ; then
#         filtering_way="directed_stopband_filtering"
#         filter_type="DIRECTED_STOPBAND_FILTERING"
#     elif [ "${payload_name}" == "JZ_IRC" ] ; then #无音频库
#         filtering_way="OFF"
#         filter_type="OFF"
#     else
#         filtering_way="high_pass_filtering"
#         filter_type="HIGH_PASS_FILTERING"
#     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

# # #将工程名进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