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