1#!/bin/bash 2# 3# Copyright (c) 2020 Rockchip Electronics Co., Ltd 4# 5# SPDX-License-Identifier: GPL-2.0 6# 7set -e 8 9MKIMAGE="./tools/mkimage" 10UNPACK="./scripts/fit-unpack.sh" 11OFFS="0xa00" 12OUT="out/repack" 13ITB="out/repack/image.itb" 14ITS="out/repack/image.its" 15 16function usage_repack() 17{ 18 echo 19 echo "usage:" 20 echo " $0 -f [image] -d [data dir]" 21 echo 22} 23 24function fit_repack() 25{ 26 if [ $# -ne 4 ]; then 27 usage_repack 28 exit 1 29 fi 30 31 while [ $# -gt 0 ]; do 32 case $1 in 33 -f) 34 IMAGE=$2 35 shift 2 36 ;; 37 -d) 38 DATA=$2 39 shift 2 40 ;; 41 *) 42 usage_repack 43 exit 1 44 ;; 45 esac 46 done 47 48 if [ ! -f ${IMAGE} ]; then 49 echo "ERROR: No ${IMAGE}" 50 exit 1 51 elif [ ! -d ${DATA} ]; then 52 echo "ERROR: No input directory ${DATA}" 53 exit 1 54 fi 55 56 COPIES=`strings ${IMAGE} | grep "rollback-index" | wc -l` 57 if [ ${COPIES} -eq 0 ]; then 58 echo "ERROR: Invalid fit image" 59 exit 1 60 fi 61 62 IMAGE_BS=`ls -l ${IMAGE} | awk '{ print $5 }'` 63 ITB_SZ_KB=`expr ${IMAGE_BS} / ${COPIES} / 1024` 64 65 rm -rf ${OUT} 66 mkdir -p ${OUT} 67 ${UNPACK} -f ${IMAGE} -o ${OUT}/ 68 find ${DATA}/ -maxdepth 1 -type f | xargs cp -t ${OUT}/ 69 70 if fdtget -l ${IMAGE} /images/uboot >/dev/null 2>&1 ; then 71 rm -f ${IMAGE} 72 ${MKIMAGE} -f ${ITS} -E -p ${OFFS} ${ITB} 73 for ((i = 0; i < ${COPIES}; i++)); 74 do 75 cat ${ITB} >> ${IMAGE} 76 truncate -s %${ITB_SZ_KB}K ${IMAGE} 77 done 78 else 79 ${MKIMAGE} -f ${ITS} -E -p ${OFFS} ${IMAGE} 80 fi 81 82 rm ${OUT} -rf 83 echo 84 echo "Image(repack): ${IMAGE} is ready" 85} 86 87fit_repack $* 88 89