xref: /rk3399_rockchip-uboot/scripts/pack_resource.sh (revision 3bcf0b7c0e5c2d54fae431c2586315c9bc44125c)
18b099091SJoseph Chen#!/bin/sh
28b099091SJoseph Chen#
38b099091SJoseph Chen# Copyright (c) 2019 Fuzhou Rockchip Electronics Co., Ltd
48b099091SJoseph Chen#
58b099091SJoseph Chen# SPDX-License-Identifier: GPL-2.0
68b099091SJoseph Chen#
78b099091SJoseph Chen
8b71a17c5SJoseph ChenRSCE_OLD=$1
9b71a17c5SJoseph ChenRSCE_NEW=resource.img
10*3bcf0b7cSJoseph Chen
11*3bcf0b7cSJoseph ChenBOOT_OLD=$1
12*3bcf0b7cSJoseph ChenBOOT_NEW=boot.img
13*3bcf0b7cSJoseph Chen
148b099091SJoseph ChenTOOL=../rkbin/tools/resource_tool
15b71a17c5SJoseph ChenIMAGES=./tools/images/
16b71a17c5SJoseph ChenTMP_DIR=.resource_tmp
17*3bcf0b7cSJoseph ChenTMP_DIR2=.boot_tmp
188b099091SJoseph Chen
198b099091SJoseph Chenusage()
208b099091SJoseph Chen{
218b099091SJoseph Chen	echo "Usage:"
228b099091SJoseph Chen	echo "  ./pack_resource <input resource.img>"
238b099091SJoseph Chen}
248b099091SJoseph Chen
258b099091SJoseph Chenprepare()
268b099091SJoseph Chen{
278b099091SJoseph Chen	echo
28b71a17c5SJoseph Chen	if [ "${RSCE_OLD}" = '--help' -o "${RSCE_OLD}" = '-h' -o "${RSCE_OLD}" = '--h' ]; then
298b099091SJoseph Chen		usage
308b099091SJoseph Chen		exit 0
31b71a17c5SJoseph Chen	elif [ ! -d "${IMAGES}" ];then
32b71a17c5SJoseph Chen		echo "ERROR: No ${RESOURCE}"
338b099091SJoseph Chen		exit 1
34b71a17c5SJoseph Chen	elif [ -z "${RSCE_OLD}" ];then
358b099091SJoseph Chen		usage
368b099091SJoseph Chen		exit 1
37b71a17c5SJoseph Chen	elif [ ! -f "${RSCE_OLD}" ];then
38b71a17c5SJoseph Chen		echo "ERROR: No ${RSCE_OLD}"
398b099091SJoseph Chen		exit 1
408b099091SJoseph Chen	fi
418b099091SJoseph Chen}
428b099091SJoseph Chen
43b71a17c5SJoseph Chenappend_images_to_resource()
448b099091SJoseph Chen{
45b71a17c5SJoseph Chen	rm -rf ${TMP_DIR} && mkdir -p ${TMP_DIR}
468b099091SJoseph Chen
47b71a17c5SJoseph Chen	echo "Pack ${IMAGES} & ${RSCE_OLD} to ${RSCE_NEW} ..."
48b71a17c5SJoseph Chen	if [ -f "${RSCE_OLD}" ];then
49b71a17c5SJoseph Chen		echo "Unpacking old image(${RSCE_OLD}):"
50b71a17c5SJoseph Chen		${TOOL} --unpack --verbose --image=${RSCE_OLD} ${TMP_DIR} 2>&1 | grep entry | sed "s/^.*://" | xargs echo
518b099091SJoseph Chen	fi
52b71a17c5SJoseph Chen
53b71a17c5SJoseph Chen	if [ -d "${IMAGES}" ];then
54b71a17c5SJoseph Chen		cp -r ${IMAGES}/* ${TMP_DIR}
558b099091SJoseph Chen	else
56b71a17c5SJoseph Chen		cp -r ${IMAGES}   ${TMP_DIR}
578b099091SJoseph Chen	fi
58b71a17c5SJoseph Chen	${TOOL} --pack --root=${TMP_DIR} --image=${RSCE_NEW} `find ${TMP_DIR} -type f|sort`
59b71a17c5SJoseph Chen
608b099091SJoseph Chen	echo
61b71a17c5SJoseph Chen	echo "Packed resources:"
62b71a17c5SJoseph Chen	${TOOL} --unpack --verbose --image=${RSCE_NEW} ${TMP_DIR} 2>&1 | grep entry | sed "s/^.*://" | xargs echo
63b71a17c5SJoseph Chen
64b71a17c5SJoseph Chen	rm -rf ${TMP_DIR}
65b71a17c5SJoseph Chen	echo
66b71a17c5SJoseph Chen	echo "./resource.img with battery images is ready"
678b099091SJoseph Chen}
688b099091SJoseph Chen
69*3bcf0b7cSJoseph Chenappend_images_to_android_img()
70*3bcf0b7cSJoseph Chen{
71*3bcf0b7cSJoseph Chen	./scripts/unpack_bootimg --boot_img ${BOOT_OLD} --out ${TMP_DIR2}/
72*3bcf0b7cSJoseph Chen	RSCE_OLD="${TMP_DIR2}/second"
73b71a17c5SJoseph Chen	append_images_to_resource
74*3bcf0b7cSJoseph Chen	./scripts/repack-bootimg --boot_img ${BOOT_OLD} --second ${RSCE_NEW} -o ${BOOT_NEW}
75*3bcf0b7cSJoseph Chen	rm -rf ${TMP_DIR2}
76*3bcf0b7cSJoseph Chen}
77*3bcf0b7cSJoseph Chen
78*3bcf0b7cSJoseph Chenappend_images_to_fit_img()
79*3bcf0b7cSJoseph Chen{
80*3bcf0b7cSJoseph Chen	./scripts/fit-unpack.sh -f ${BOOT_OLD} -o ${TMP_DIR2}/
81*3bcf0b7cSJoseph Chen	RSCE_OLD="${TMP_DIR2}/resource"
82*3bcf0b7cSJoseph Chen	append_images_to_resource
83*3bcf0b7cSJoseph Chen	rm -rf ${TMP_DIR2}/*
84*3bcf0b7cSJoseph Chen	mv ${RSCE_NEW} ${TMP_DIR2}/resource
85*3bcf0b7cSJoseph Chen	 ./scripts/fit-repack.sh -f ${BOOT_OLD} -d ${TMP_DIR2}
86*3bcf0b7cSJoseph Chen	rm -rf ${TMP_DIR2}
87*3bcf0b7cSJoseph Chen}
88*3bcf0b7cSJoseph Chen
89*3bcf0b7cSJoseph Chenprepare
90*3bcf0b7cSJoseph Chenif file ${RSCE_OLD} | grep 'Android bootimg' >/dev/null 2>&1 ; then
91*3bcf0b7cSJoseph Chen	append_images_to_android_img
92*3bcf0b7cSJoseph Chenelif file ${RSCE_OLD} | grep 'Device Tree Blob' >/dev/null 2>&1 ; then
93*3bcf0b7cSJoseph Chen	append_images_to_fit_img
94*3bcf0b7cSJoseph Chenelif strings ${RSCE_OLD} | grep "RSCE" >/dev/null 2>&1 ; then
95*3bcf0b7cSJoseph Chen	append_images_to_resource
96*3bcf0b7cSJoseph Chenfi
97b71a17c5SJoseph Chen
98