xref: /rk3399_rockchip-uboot/scripts/android2fit.sh (revision d4f6d8e395d7ca566a7c9179d5632ddf5e3b200b)
1*d4f6d8e3SJoseph Chen#!/bin/bash
2*d4f6d8e3SJoseph Chen#
3*d4f6d8e3SJoseph Chen# Copyright (c) 2020 Rockchip Electronics Co., Ltd
4*d4f6d8e3SJoseph Chen#
5*d4f6d8e3SJoseph Chen# SPDX-License-Identifier: GPL-2.0
6*d4f6d8e3SJoseph Chen#
7*d4f6d8e3SJoseph Chenset -e
8*d4f6d8e3SJoseph Chen
9*d4f6d8e3SJoseph ChenOUT="out"
10*d4f6d8e3SJoseph Chen
11*d4f6d8e3SJoseph Chenfunction usage()
12*d4f6d8e3SJoseph Chen{
13*d4f6d8e3SJoseph Chen	echo
14*d4f6d8e3SJoseph Chen	echo "usage:"
15*d4f6d8e3SJoseph Chen	echo "    $0 -f [Android boot.img] -o [FIT boot.img]"
16*d4f6d8e3SJoseph Chen	echo
17*d4f6d8e3SJoseph Chen}
18*d4f6d8e3SJoseph Chen
19*d4f6d8e3SJoseph Chenfunction args_process()
20*d4f6d8e3SJoseph Chen{
21*d4f6d8e3SJoseph Chen	if [ $# -ne 4 ]; then
22*d4f6d8e3SJoseph Chen		usage
23*d4f6d8e3SJoseph Chen		exit 1
24*d4f6d8e3SJoseph Chen	fi
25*d4f6d8e3SJoseph Chen
26*d4f6d8e3SJoseph Chen	while [ $# -gt 0 ]; do
27*d4f6d8e3SJoseph Chen		case $1 in
28*d4f6d8e3SJoseph Chen			-f)
29*d4f6d8e3SJoseph Chen				BOOT_IMG=$2
30*d4f6d8e3SJoseph Chen				shift 2
31*d4f6d8e3SJoseph Chen				;;
32*d4f6d8e3SJoseph Chen			-o)
33*d4f6d8e3SJoseph Chen				FIT_IMG=$2
34*d4f6d8e3SJoseph Chen				shift 2
35*d4f6d8e3SJoseph Chen				;;
36*d4f6d8e3SJoseph Chen			*)
37*d4f6d8e3SJoseph Chen				usage
38*d4f6d8e3SJoseph Chen				exit 1
39*d4f6d8e3SJoseph Chen				;;
40*d4f6d8e3SJoseph Chen		esac
41*d4f6d8e3SJoseph Chen	done
42*d4f6d8e3SJoseph Chen
43*d4f6d8e3SJoseph Chen	if [ ! -f ${BOOT_IMG} ]; then
44*d4f6d8e3SJoseph Chen		echo "ERROR: No ${ITB}"
45*d4f6d8e3SJoseph Chen		exit 1
46*d4f6d8e3SJoseph Chen	fi
47*d4f6d8e3SJoseph Chen}
48*d4f6d8e3SJoseph Chen
49*d4f6d8e3SJoseph Chenfunction android2fit()
50*d4f6d8e3SJoseph Chen{
51*d4f6d8e3SJoseph Chen	if ! file ${BOOT_IMG} | grep "Android bootimg" ; then
52*d4f6d8e3SJoseph Chen		echo "ERROR: ${BOOT_IMG} is not an Android Image"
53*d4f6d8e3SJoseph Chen		file ${BOOT_IMG}
54*d4f6d8e3SJoseph Chen		exit 1
55*d4f6d8e3SJoseph Chen	fi
56*d4f6d8e3SJoseph Chen
57*d4f6d8e3SJoseph Chen	rm ${OUT}/ -rf
58*d4f6d8e3SJoseph Chen	./scripts/unpack_bootimg --boot_img ${BOOT_IMG} --out ${OUT}/
59*d4f6d8e3SJoseph Chen	./scripts/unpack_resource.sh ${OUT}/second  ${OUT}/
60*d4f6d8e3SJoseph Chen	mv ${OUT}/second ${OUT}/resource
61*d4f6d8e3SJoseph Chen
62*d4f6d8e3SJoseph Chen	rm images/ -rf && mkdir -p images/
63*d4f6d8e3SJoseph Chen	cp ${OUT}/kernel images/
64*d4f6d8e3SJoseph Chen	cp ${OUT}/resource images/
65*d4f6d8e3SJoseph Chen	cp ${OUT}/ramdisk images/
66*d4f6d8e3SJoseph Chen	cp ${OUT}/rk-kernel.dtb images/
67*d4f6d8e3SJoseph Chen	rm ${OUT}/ -rf
68*d4f6d8e3SJoseph Chen
69*d4f6d8e3SJoseph Chen	./make.sh fit
70*d4f6d8e3SJoseph Chen	if [ "boot.img" != ${FIT_IMG} ]; then
71*d4f6d8e3SJoseph Chen		mv boot.img ${FIT_IMG}
72*d4f6d8e3SJoseph Chen	fi
73*d4f6d8e3SJoseph Chen
74*d4f6d8e3SJoseph Chen	echo "Transform OK: Android(${BOOT_IMG}) ==> FIT(${FIT_IMG}) is ready"
75*d4f6d8e3SJoseph Chen	echo
76*d4f6d8e3SJoseph Chen}
77*d4f6d8e3SJoseph Chen
78*d4f6d8e3SJoseph Chenargs_process $*
79*d4f6d8e3SJoseph Chenandroid2fit
80