/
VIM.inc
323 lines (262 loc) · 9.3 KB
/
VIM.inc
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
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
#!/bin/bash
##########################
## VIM series common part
##########################
case "$UBOOT" in
2015.01|2015.01-5.15)
UBOOT_COMPILER="aarch64-none-elf-"
UBOOT_COMPILER_PATH="$TOOLCHAINS/gcc-linaro-aarch64-none-elf/bin:$TOOLCHAINS/gcc-linaro-arm-none-eabi/bin"
[ "$UBOOT_VENDOR_DIR" ] && \
UBOOT_DIR=$(realpath "$UBOOT_VENDOR_DIR")
UBOOT_IMAGE_DIR="$UBOOT_DIR/fip/_tmp"
;;
2019.01)
UBOOT_COMPILER="aarch64-elf-"
UBOOT_COMPILER_PATH="$TOOLCHAINS/gcc-linaro-aarch64-elf/bin"
[ "$UBOOT_VENDOR_DIR" ] && \
UBOOT_DIR=$(realpath "$UBOOT_VENDOR_DIR")
UBOOT_IMAGE_DIR="$UBOOT_DIR/fip/_tmp"
;;
mainline)
UBOOT_COMPILER="aarch64-elf-"
UBOOT_COMPILER_PATH="$TOOLCHAINS/gcc-linaro-aarch64-elf/bin"
UBOOT_DIR="$BUILD/u-boot-mainline-*"
UBOOT_IMAGE_DIR="$BUILD_IMAGES/u-boot-mainline/$KHADAS_BOARD"
;;
esac
UBOOT_IMAGE_FILES="u-boot.bin u-boot.bin.sd.bin"
UBOOT_FORCE_REBUILD="yes"
case "$LINUX" in
mainline|5.15)
KERNEL_COMPILER="aarch64-none-linux-gnu-"
KERNEL_COMPILER_PATH="$TOOLCHAINS/gcc-arm-aarch64-none-linux-gnu-mainline/bin"
LINUX_DIR=$(realpath "$LINUX_VENDOR_DIR")
;;
esac
LINUX_DEFCONFIG_DIR="$LINUX_DIR/arch/arm64/configs"
BOOT_SCRIPT_BOARD="s905_autoscript.cmd"
BOOT_SCRIPT_VENDOR="aml_autoscript.txt"
BOOT_INI="aml_boot.ini"
BOOT_ENV_FILE="amlogic_default_env.txt"
####
WIFI_MODEL="Broadcom"
##############################
uboot_custom_postprocess() {
# source fip/check_compile.sh
source fip/variables.sh "$UBOOT_DIR"
source fip/lib.sh
source fip/build_bl2.sh
source fip/build_bl30.sh
source fip/build_bl31.sh
source fip/build_bl32.sh
source fip/build_bl33.sh
source fip/build_bl40.sh
# Cleanup old binaries
rm -rf ${FIP_BUILD_FOLDER}
# source uboot pre-build configs
source ${SOURCE_FILE}
CUR_SOC=${CONFIG_SYS_SOC}
if [ "y" == "${CONFIG_NEED_BL32}" ]; then
BLX_NEEDFUL[3]="true"
fi
export_variables
source ${FIP_FOLDER}${CUR_SOC}/variable_soc.sh
# compile fip tools for ddr_parse and map_tool
prepare_tools > /dev/null 2>&1 || true
# source soc package script
source ${FIP_FOLDER}${CUR_SOC}/build.sh
#bin_path_parser
# source configs
source ${CONFIG_FILE}
if [ "y" == "${CONFIG_SUPPORT_CUSOTMER_BOARD}" ]; then
BOARD_DIR="customer/board/${CONFIG_SYS_BOARD}"
else
BOARD_DIR="${CONFIG_BOARDDIR}"
fi
mkdir -p ${FIP_BUILD_FOLDER}
cp ${FIP_FOLDER}${CUR_SOC}/bl2.bin $FIP_BUILD_FOLDER
cp ${FIP_FOLDER}${CUR_SOC}/bl30.bin $FIP_BUILD_FOLDER
cp ${FIP_FOLDER}${CUR_SOC}/bl31.bin $FIP_BUILD_FOLDER
cp ${FIP_FOLDER}${CUR_SOC}/bl31.img $FIP_BUILD_FOLDER
# cp ${FIP_FOLDER}${CUR_SOC}/bl32.bin $FIP_BUILD_FOLDER
# cp bl33(uboot)
copy_bl33
# cp other firmwares(soc related)
copy_other_soc
# package final bootloader
package
if [ "y" != "${CONFIG_AML_SIGNED_UBOOT}" ]; then
# copy bootloader to main folder
mkdir -p ${BUILD_FOLDER}
cp ${FIP_BUILD_FOLDER}u-boot.bin ${BUILD_FOLDER}u-boot.bin
cp ${FIP_BUILD_FOLDER}u-boot.bin.encrypt ${BUILD_FOLDER}u-boot.bin.encrypt
cp ${FIP_BUILD_FOLDER}u-boot.bin.encrypt.efuse ${BUILD_FOLDER}u-boot.bin.encrypt.efuse
cp ${FIP_BUILD_FOLDER}u-boot.bin.encrypt.sd.bin ${BUILD_FOLDER}u-boot.bin.encrypt.sd.bin
cp ${FIP_BUILD_FOLDER}u-boot.bin.encrypt.usb.bl2 ${BUILD_FOLDER}u-boot.bin.encrypt.usb.bl2
cp ${FIP_BUILD_FOLDER}u-boot.bin.encrypt.usb.tpl ${BUILD_FOLDER}u-boot.bin.encrypt.usb.tpl
cp ${FIP_BUILD_FOLDER}u-boot.bin.sd.bin ${BUILD_FOLDER}u-boot.bin.sd.bin
cp ${FIP_BUILD_FOLDER}u-boot.bin.usb.bl2 ${BUILD_FOLDER}u-boot.bin.usb.bl2
cp ${FIP_BUILD_FOLDER}u-boot.bin.usb.tpl ${BUILD_FOLDER}u-boot.bin.usb.tpl
if [ "y" == "${CONFIG_AML_CRYPTO_IMG}" ]; then
cp ${FIP_BUILD_FOLDER}boot.img.encrypt ${BUILD_FOLDER}boot.img.encrypt
fi
fi
cd $ROOT
}
## Write u-boot
write_uboot_platform()
{
dd if="$1/u-boot.bin.sd.bin" of="$2" conv=fsync,notrunc bs=442 count=1 > /dev/null 2>&1
dd if="$1/u-boot.bin.sd.bin" of="$2" conv=fsync,notrunc bs=512 skip=1 seek=1 > /dev/null 2>&1
}
## Write u-boot for vendor u-boot
write_uboot_platform_ext()
{
# Update u-boot partition, 5.15 kernel dosen't have /dev/bootloader
[ -b /dev/mmcblk0p1 ] && dd if="$1/u-boot.bin" of=/dev/mmcblk0p1 conv=fsync bs=512 seek=1 > /dev/null 2>&1
# Enable write access for /dev/mmcblk0boot0
[ -f /sys/block/mmcblk0boot0/force_ro ] && echo 0 > /sys/block/mmcblk0boot0/force_ro
dd if="$1/u-boot.bin" of=/dev/mmcblk0boot0 conv=fsync bs=512 seek=1 > /dev/null 2>&1
# Enable write access for /dev/mmcblk0boot1
[ -f /sys/block/mmcblk0boot1/force_ro ] && echo 0 > /sys/block/mmcblk0boot1/force_ro
dd if="$1/u-boot.bin" of=/dev/mmcblk0boot1 conv=fsync bs=512 seek=1 > /dev/null 2>&1
# Disable write access for /dev/mmcblk0boot0/1
[ -f /sys/block/mmcblk0boot0/force_ro ] && echo 1 > /sys/block/mmcblk0boot0/force_ro
[ -f /sys/block/mmcblk0boot1/force_ro ] && echo 1 > /sys/block/mmcblk0boot1/force_ro
}
setup_write_uboot_platform()
{
if grep -q "ubootpart" /proc/cmdline; then
local tmp=$(cat /proc/cmdline)
local ubootpart="${tmp##*ubootpart=}"
local imagetype="${tmp##*imagetype=}"
ubootpart="${ubootpart%% *}"
imagetype="${imagetype%% *}"
if [ "$imagetype" == "SD-USB" ] || [ "$imagetype" == "EMMC_MBR" ]; then
[[ -n $ubootpart && $ubootpart != NULL ]] && local part=$(findfs PARTUUID=$ubootpart 2>/dev/null)
[[ -n $part ]] && local dev=$(lsblk -n -o PKNAME $part 2>/dev/null)
[[ -n $dev ]] && DEVICE="/dev/$dev"
elif [ "$imagetype" == "EMMC" ]; then
# For vendor eMMC image, need to update in u-boot
DEVICE="VENDOR"
fi
fi
}
## Pack image
pack_image_platform_raw() {
# ABOUT
# this simple raw image suitable for dd write to eMMC
# same for Krescue usage
# simple alternative for amlogic image
# USAGE
#
# INSTALL_TYPE_RAW=yes make
#
# INSTALL_TYPE_RAW=yes COMPRESS_IMAGE=yes make
[ "$INSTALL_TYPE" != "EMMC" ] && return
[ "$INSTALL_TYPE_RAW" != "yes" ] && return
info_msg "Simple raw image suitable for dd write -> $IMAGE_FILE_NAME"
BS=512
ROOT_OFFSET=0x0b400000
DTB1_OFFSET=0x02800000
DTB2_OFFSET=0x02840000
LOGO_OFFSET=0x07c00000
PATH_BOOT="$UBOOT_IMAGE_DIR"/u-boot.bin.sd.bin
PATH_DTB0="$LINUX_DTB"
PATH_ROOT="$BUILD_IMAGES/rootfs.img"
PATH_LOGO="$BUILD_IMAGES/logo.img"
case "$KHADAS_BOARD" in
VIM4)
PATH_BOOT="$UBOOT_IMAGE_DIR"/u-boot.bin.sd.bin.signed
ROOT_OFFSET=0x08400000
LOGO_OFFSET=
;;
esac
F="conv=fsync,notrunc status=noxfer"
F1="$F,none"
F2="$F,progress"
IMG="$BUILD_IMAGES/$IMAGE_FILE_NAME"
rm -rf $IMG
(
dd of="$IMG" if=/dev/null $F1 seek=$((ROOT_OFFSET/BS))
dd of="$IMG" if="$PATH_BOOT" $F1
dd of="$IMG" if="$PATH_DTB0" $F1 seek=$((DTB1_OFFSET/BS))
dd of="$IMG" if="$PATH_DTB0" $F1 seek=$((DTB2_OFFSET/BS))
[ "$LOGO_OFFSET" ] && \
dd of="$IMG" if="$PATH_LOGO" $F1 seek=$((LOGO_OFFSET/BS))
dd of="$IMG" if="$PATH_ROOT" $F2 seek=$((ROOT_OFFSET/BS))
)
}
pack_image_platform() {
if [ "$1" == "uboot-image" ]; then
PACK_UBOOT_IMAGE="yes"
else
PACK_UBOOT_IMAGE="no"
fi
cd ${ROOT}
info_msg "Image install type: $INSTALL_TYPE"
if [ "$INSTALL_TYPE" == "EMMC" ]; then
## Fixup upgrade dtb link
#cd $UPGRADE_DIR/Amlogic
#rm -rf kvim.dtb
# resolve and check dir
for UPGRADE_DIR_ in $UPGRADE_DIR; do
[ -d "$UPGRADE_DIR_" ] || {
error_msg "UPGRADE_DIR not exist: $UPGRADE_DIR"
return 1
}
done
for UTILS_DIR_ in $UTILS_DIR; do
[ -d "$UTILS_DIR_" ] || {
error_msg "UTILS_DIR not exist: $UTILS_DIR"
return 1
}
done
D="$UPGRADE_DIR_"/Amlogic
case "$UBOOT" in
2015.01|2015.01-5.15)
ln -fs "$BUILD_IMAGES/logo.img" "$D"/logo.img
ln -fs "$LINUX_DTB" "$D"/kvim.dtb
ln -fs "$UBOOT_IMAGE_DIR"/u-boot.bin "$D"/u-boot.bin
ln -fs "$UBOOT_IMAGE_DIR"/u-boot.bin.sd.bin "$D"/u-boot.bin.sd.bin
ln -fs "$UBOOT_IMAGE_DIR"/u-boot.bin.usb.bl2 "$D"/u-boot.bin.usb.bl2
ln -fs "$UBOOT_IMAGE_DIR"/u-boot.bin.usb.tpl "$D"/u-boot.bin.usb.tpl
;;
2019.01)
ln -fs "$BUILD_IMAGES/logo.img" "$D"/logo.img
ln -fs "$LINUX_DTB" "$D"/kvim.dtb
ln -fs "$UBOOT_IMAGE_DIR"/u-boot.bin.signed "$D"/u-boot.bin.signed
ln -fs "$UBOOT_IMAGE_DIR"/u-boot.bin.sd.bin.signed "$D"/u-boot.bin.sd.bin.signed
ln -fs "$UBOOT_IMAGE_DIR"/u-boot.bin.usb.signed "$D"/u-boot.bin.usb.signed
;;
mainline)
;;
esac
## Fixup platform & package configuration file
ln -fs "$IMAGE_PACKAGE_CONF" "$D"/package.conf
ln -fs "$IMAGE_PLATFORM_CONF" "$D"/platform.conf
## Fixup rootfs.img
if [ "$PACK_UBOOT_IMAGE" != "yes" ]; then
ln -fs "$BUILD_IMAGES"/rootfs.img "$D"/rootfs.img
else
IMAGE_FILE_NAME="${KHADAS_BOARD}-uboot-${UBOOT}-${IMAGE_VERSION}-emmc.img"
IMAGE_FILE_NAME=${IMAGE_FILE_NAME,,}
ln -fs fake-rootfs.img "$D"/rootfs.img
fi
#cd - > /dev/null
$UTILS_DIR/aml_image_v2_packer -r $UPGRADE_DIR/Amlogic/package.conf $UPGRADE_DIR/Amlogic $BUILD_IMAGES/${IMAGE_FILE_NAME}
elif [ "$INSTALL_TYPE" == "SD-USB" ]; then
if [ "$PACK_UBOOT_IMAGE" == "yes" ]; then
IMAGE_FILE_NAME="${KHADAS_BOARD}-uboot-${UBOOT}-${IMAGE_VERSION}-sd.img"
IMAGE_FILE_NAME=${IMAGE_FILE_NAME,,}
info_msg "Create U-Boot SD image..."
dd if=/dev/zero of=${BUILD_IMAGES}/${IMAGE_FILE_NAME} bs=1M count=0 seek=4 > /dev/null 2>&1
fi
write_uboot_platform "$UBOOT_IMAGE_DIR" "$BUILD_IMAGES/$IMAGE_FILE_NAME"
else
error_msg "Unsupported install type: '$INSTALL_TYPE'"
return 1
fi
echo ""
info_msg "IMAGE: ${GREEN}$BUILD_IMAGES/$IMAGE_FILE_NAME ${ENDCOLOR} is ready!"
}