xref: /rk3399_rockchip-uboot/scripts/pack_resource.sh (revision 5867a88ff7c71ba77650dc5dbaa7a20089edc7bf)
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
103bcf0b7cSJoseph Chen
113bcf0b7cSJoseph ChenBOOT_OLD=$1
123bcf0b7cSJoseph ChenBOOT_NEW=boot.img
133bcf0b7cSJoseph Chen
148b099091SJoseph ChenTOOL=../rkbin/tools/resource_tool
15b71a17c5SJoseph ChenIMAGES=./tools/images/
16b71a17c5SJoseph ChenTMP_DIR=.resource_tmp
173bcf0b7cSJoseph 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
51*5867a88fSJoseph Chen		# promise rk-kernel.dtb to be the first one after calling "find ${TMP_DIR} -type f|sort" when repack.
52*5867a88fSJoseph Chen		mv ${TMP_DIR}/rk-kernel.dtb ${TMP_DIR}/aaa-rk-kernel.dtb
538b099091SJoseph Chen	fi
54b71a17c5SJoseph Chen
55b71a17c5SJoseph Chen	if [ -d "${IMAGES}" ];then
56b71a17c5SJoseph Chen		cp -r ${IMAGES}/* ${TMP_DIR}
578b099091SJoseph Chen	else
58b71a17c5SJoseph Chen		cp -r ${IMAGES}   ${TMP_DIR}
598b099091SJoseph Chen	fi
60b71a17c5SJoseph Chen	${TOOL} --pack --root=${TMP_DIR} --image=${RSCE_NEW} `find ${TMP_DIR} -type f|sort`
61b71a17c5SJoseph Chen
628b099091SJoseph Chen	echo
63b71a17c5SJoseph Chen	echo "Packed resources:"
64b71a17c5SJoseph Chen	${TOOL} --unpack --verbose --image=${RSCE_NEW} ${TMP_DIR} 2>&1 | grep entry | sed "s/^.*://" | xargs echo
65b71a17c5SJoseph Chen
66b71a17c5SJoseph Chen	rm -rf ${TMP_DIR}
67b71a17c5SJoseph Chen	echo
68b71a17c5SJoseph Chen	echo "./resource.img with battery images is ready"
698b099091SJoseph Chen}
708b099091SJoseph Chen
713bcf0b7cSJoseph Chenappend_images_to_android_img()
723bcf0b7cSJoseph Chen{
733bcf0b7cSJoseph Chen	./scripts/unpack_bootimg --boot_img ${BOOT_OLD} --out ${TMP_DIR2}/
743bcf0b7cSJoseph Chen	RSCE_OLD="${TMP_DIR2}/second"
75b71a17c5SJoseph Chen	append_images_to_resource
763bcf0b7cSJoseph Chen	./scripts/repack-bootimg --boot_img ${BOOT_OLD} --second ${RSCE_NEW} -o ${BOOT_NEW}
773bcf0b7cSJoseph Chen	rm -rf ${TMP_DIR2}
783bcf0b7cSJoseph Chen}
793bcf0b7cSJoseph Chen
803bcf0b7cSJoseph Chenappend_images_to_fit_img()
813bcf0b7cSJoseph Chen{
823bcf0b7cSJoseph Chen	./scripts/fit-unpack.sh -f ${BOOT_OLD} -o ${TMP_DIR2}/
833bcf0b7cSJoseph Chen	RSCE_OLD="${TMP_DIR2}/resource"
843bcf0b7cSJoseph Chen	append_images_to_resource
853bcf0b7cSJoseph Chen	rm -rf ${TMP_DIR2}/*
863bcf0b7cSJoseph Chen	mv ${RSCE_NEW} ${TMP_DIR2}/resource
873bcf0b7cSJoseph Chen	 ./scripts/fit-repack.sh -f ${BOOT_OLD} -d ${TMP_DIR2}
883bcf0b7cSJoseph Chen	rm -rf ${TMP_DIR2}
893bcf0b7cSJoseph Chen}
903bcf0b7cSJoseph Chen
913bcf0b7cSJoseph Chenprepare
923bcf0b7cSJoseph Chenif file ${RSCE_OLD} | grep 'Android bootimg' >/dev/null 2>&1 ; then
933bcf0b7cSJoseph Chen	append_images_to_android_img
943bcf0b7cSJoseph Chenelif file ${RSCE_OLD} | grep 'Device Tree Blob' >/dev/null 2>&1 ; then
953bcf0b7cSJoseph Chen	append_images_to_fit_img
963bcf0b7cSJoseph Chenelif strings ${RSCE_OLD} | grep "RSCE" >/dev/null 2>&1 ; then
973bcf0b7cSJoseph Chen	append_images_to_resource
983bcf0b7cSJoseph Chenfi
99b71a17c5SJoseph Chen
100