make_package.sh
6.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
#1、输入设备名字,程序模式,硬件号,版本号
payload_name="JZ_H150S" #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