xref: /rkbin/tools/burner_image_kits/make.sh (revision 4e66ef7fd0f5107f0f1c3dd32a087231ee7a7a43)
1*4e66ef7fSJon Lin#!/bin/bash
2*4e66ef7fSJon Lin
3*4e66ef7fSJon LinDIR="$( cd "$( dirname "$0"  )" && pwd  )"
4*4e66ef7fSJon Linsrc_path=$1
5*4e66ef7fSJon Lindst_path=$2
6*4e66ef7fSJon Linsoc=$3
7*4e66ef7fSJon Linblock_size=$4
8*4e66ef7fSJon Linpage_size=$5
9*4e66ef7fSJon Linoob_size=$6
10*4e66ef7fSJon Linis_slc_nand=$7
11*4e66ef7fSJon Lin
12*4e66ef7fSJon Linddr=
13*4e66ef7fSJon Linspl=
14*4e66ef7fSJon Lin
15*4e66ef7fSJon Lintransfer_4K_2_2K=$DIR/tools/transfer_4K_2_2K.sh
16*4e66ef7fSJon Linrk_bch=$DIR/tools/rk_bch
17*4e66ef7fSJon Linmkimage=$DIR/../mkimage
18*4e66ef7fSJon Linupgrade_tool=$DIR/../upgrade_tool
19*4e66ef7fSJon Linalign_to_flash_block_size=$DIR/tools/align_to_flash_block_size.sh
20*4e66ef7fSJon Linboot_merger=$DIR/../boot_merger
21*4e66ef7fSJon Lin
22*4e66ef7fSJon Linfunction gen_idblock()
23*4e66ef7fSJon Lin{
24*4e66ef7fSJon Lin	$mkimage -n $soc -T rksd -d $1:$2 idblock1.img.temp > /dev/null
25*4e66ef7fSJon Lin	echo $3": gen_idblock: success!"
26*4e66ef7fSJon Lin	if [[ $is_slc_nand == 1 && $page_size == 4096 ]]; then
27*4e66ef7fSJon Lin		$transfer_4K_2_2K idblock1.img.temp $3
28*4e66ef7fSJon Lin		rm idblock1.img.temp
29*4e66ef7fSJon Lin	else
30*4e66ef7fSJon Lin		mv idblock1.img.temp $3
31*4e66ef7fSJon Lin	fi
32*4e66ef7fSJon Lin}
33*4e66ef7fSJon Lin
34*4e66ef7fSJon Linfunction is_miniloader_or_update_or_parameter()
35*4e66ef7fSJon Lin{
36*4e66ef7fSJon Lin	ret=0
37*4e66ef7fSJon Lin	ls $1 | grep "MiniLoaderAll.bin" > /dev/null
38*4e66ef7fSJon Lin	if [ $? -eq 0 ] ;then
39*4e66ef7fSJon Lin		$boot_merger --unpack $1 > /dev/null
40*4e66ef7fSJon Lin		ddr=FlashData
41*4e66ef7fSJon Lin		spl=FlashBoot
42*4e66ef7fSJon Lin		gen_idblock $ddr $spl $src_path"/"idblock1.img
43*4e66ef7fSJon Lin		is_img_and_gen_file_from_src_2_dst idblock1.img
44*4e66ef7fSJon Lin		gen_idblock $ddr $spl $src_path"/"idblock2.img
45*4e66ef7fSJon Lin		is_img_and_gen_file_from_src_2_dst idblock2.img
46*4e66ef7fSJon Lin		gen_idblock $ddr $spl $src_path"/"idblock3.img
47*4e66ef7fSJon Lin		is_img_and_gen_file_from_src_2_dst idblock3.img
48*4e66ef7fSJon Lin		gen_idblock $ddr $spl $src_path"/"idblock4.img
49*4e66ef7fSJon Lin		is_img_and_gen_file_from_src_2_dst idblock4.img
50*4e66ef7fSJon Lin		rm $src_path"/"idblock*.img
51*4e66ef7fSJon Lin		rm $ddr
52*4e66ef7fSJon Lin		rm $spl
53*4e66ef7fSJon Lin		ret=1
54*4e66ef7fSJon Lin	fi
55*4e66ef7fSJon Lin
56*4e66ef7fSJon Lin	ls $1 | grep "update" > /dev/null
57*4e66ef7fSJon Lin	if [ $? -eq 0 ] ;then
58*4e66ef7fSJon Lin		ret=1
59*4e66ef7fSJon Lin	fi
60*4e66ef7fSJon Lin
61*4e66ef7fSJon Lin	ls $1 | grep "parameter.txt" > /dev/null
62*4e66ef7fSJon Lin	if [ $? -eq 0 ] ;then
63*4e66ef7fSJon Lin		$upgrade_tool gpt $1 $src_path"/"gpt.img > /dev/null
64*4e66ef7fSJon Lin		is_img_and_gen_file_from_src_2_dst gpt.img
65*4e66ef7fSJon Lin		rm $src_path"/"gpt.img
66*4e66ef7fSJon Lin		ret=1
67*4e66ef7fSJon Lin	fi
68*4e66ef7fSJon Lin
69*4e66ef7fSJon Lin	return $ret
70*4e66ef7fSJon Lin}
71*4e66ef7fSJon Lin
72*4e66ef7fSJon Linfunction is_img_and_gen_file_from_src_2_dst()
73*4e66ef7fSJon Lin{
74*4e66ef7fSJon Lin	ls $src_path"/"$1 | grep "img" > /dev/null
75*4e66ef7fSJon Lin	if [ $? -eq 0 ] ;then
76*4e66ef7fSJon Lin		$align_to_flash_block_size $src_path"/"$1 $dst_path"/"$1 $block_size
77*4e66ef7fSJon Lin		if [ $is_slc_nand -eq 1 ] ;then
78*4e66ef7fSJon Lin			$rk_bch $dst_path"/"$1 $dst_path"/"$1".bch" $page_size $oob_size 0
79*4e66ef7fSJon Lin			mv $dst_path"/"$1".bch" $dst_path"/"$1
80*4e66ef7fSJon Lin			echo "$src_path"/"$1: rk_bch: success!"
81*4e66ef7fSJon Lin		fi
82*4e66ef7fSJon Lin	fi
83*4e66ef7fSJon Lin}
84*4e66ef7fSJon Lin
85*4e66ef7fSJon Linif [ -f "$src_path" ]; then
86*4e66ef7fSJon Lin	echo "input error, $src_path is a file!"
87*4e66ef7fSJon Lin	exit
88*4e66ef7fSJon Linfi
89*4e66ef7fSJon Lin
90*4e66ef7fSJon Linif [ ! -x "$src_path" ]; then
91*4e66ef7fSJon Lin	echo "input error, $src_path not exit!"
92*4e66ef7fSJon Lin	exit
93*4e66ef7fSJon Linfi
94*4e66ef7fSJon Lin
95*4e66ef7fSJon Linif [[ $is_slc_nand != 0 && $is_slc_nand != 1 ]]; then
96*4e66ef7fSJon Lin	echo "param is_slc_nand: $is_slc_nand not support!"
97*4e66ef7fSJon Lin	echo "support:"
98*4e66ef7fSJon Lin	echo "  1(for SLC Nand, 8 pins io)"
99*4e66ef7fSJon Lin	echo "  0(others)"
100*4e66ef7fSJon Lin	exit
101*4e66ef7fSJon Linfi
102*4e66ef7fSJon Lin
103*4e66ef7fSJon Linif [ $is_slc_nand -eq 1 ] ;then
104*4e66ef7fSJon Lin	if [[ $oob_size != 64 && $oob_size != 128 && oob_size != 256 ]]; then
105*4e66ef7fSJon Lin	echo "param oob_size: $oob_size not support!"
106*4e66ef7fSJon Lin	echo "support:"
107*4e66ef7fSJon Lin	echo "  64(B)"
108*4e66ef7fSJon Lin	echo "  128(B)"
109*4e66ef7fSJon Lin	echo "  256(B)"
110*4e66ef7fSJon Lin	exit
111*4e66ef7fSJon Linfi
112*4e66ef7fSJon Linfi
113*4e66ef7fSJon Lin
114*4e66ef7fSJon Linif [[ $page_size != 2048 && $page_size != 4096 ]]; then
115*4e66ef7fSJon Lin	echo "param page_size: $page_size not support!"
116*4e66ef7fSJon Lin	echo "support:"
117*4e66ef7fSJon Lin	echo "  2048(B)"
118*4e66ef7fSJon Lin	echo "  4096(B)"
119*4e66ef7fSJon Lin	exit
120*4e66ef7fSJon Linfi
121*4e66ef7fSJon Lin
122*4e66ef7fSJon Linif [[ $block_size != 128 && $block_size != 256 ]]; then
123*4e66ef7fSJon Lin	echo "param block_size: $block_size not support!"
124*4e66ef7fSJon Lin	echo "support:"
125*4e66ef7fSJon Lin	echo "  128(KB)"
126*4e66ef7fSJon Lin	echo "  256(KB)"
127*4e66ef7fSJon Lin	exit
128*4e66ef7fSJon Linfi
129*4e66ef7fSJon Lin
130*4e66ef7fSJon Linif [[ $soc != "rk3308" && $soc != "rv1126" ]]; then
131*4e66ef7fSJon Lin	echo "param soc: $soc not support!"
132*4e66ef7fSJon Lin	echo "support:"
133*4e66ef7fSJon Lin	echo "  rk3308"
134*4e66ef7fSJon Lin	echo "  rv1126"
135*4e66ef7fSJon Lin	exit
136*4e66ef7fSJon Linfi
137*4e66ef7fSJon Lin
138*4e66ef7fSJon Linif [ -x "$dst_path" ]; then
139*4e66ef7fSJon Lin	rm -rf $dst_path
140*4e66ef7fSJon Linfi
141*4e66ef7fSJon Lin
142*4e66ef7fSJon Lindst_path=$dst_path"/"$page_size"B_"$block_size"KB"
143*4e66ef7fSJon Linif [[ $is_slc_nand == 1 ]]; then
144*4e66ef7fSJon Lin	dst_path=$dst_path"_SLC"
145*4e66ef7fSJon Linelse
146*4e66ef7fSJon Lin	dst_path=$dst_path"_SPI"
147*4e66ef7fSJon Linfi
148*4e66ef7fSJon Linmkdir -p $dst_path
149*4e66ef7fSJon Lin
150*4e66ef7fSJon Linfor file in `ls -a $src_path`
151*4e66ef7fSJon Lindo
152*4e66ef7fSJon Lin	if [ -f $src_path"/"$file ] ;then
153*4e66ef7fSJon Lin		is_miniloader_or_update_or_parameter $src_path"/"$file
154*4e66ef7fSJon Lin		if [ $? -eq 0 ] ;then
155*4e66ef7fSJon Lin			is_img_and_gen_file_from_src_2_dst $file
156*4e66ef7fSJon Lin		fi
157*4e66ef7fSJon Lin	fi
158*4e66ef7fSJon Lindone
159