aboutsummaryrefslogtreecommitdiff
path: root/tools/mkrdaimage.sh
blob: c9573242b6ce9ac402de3c12dd8c4a5cf7ab1f30 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#!/bin/bash

#bootloader layout

#normal bootloader(for pagesize_is_power_of_2)
#################################
#                               #
# 48K (spl.img + padding 0)     #
#                               #
#                               #
#################################
#                               #
#                               #
# 24K resevered for part table  #
#     (fill 0)                  #
#                               #
#################################
#                               #
#                               #
# u-boot                        #
#                               #
#                               #
#################################

#pagesize not aligned bootloader(pagesize is 12288, not power_of_2)
#e.g. 12k pagesize
#################################
#                               #
# spl(1st 2k)                   #
#                               #
#                               #
#################################
#                               #
# 10K (padding with 0xff)       #
#                               #
#                               #
#################################
#                               #
# spl(2nd 2k)                   #
#                               #
#                               #
#################################
#                               #
# 10K (padding with 0xff)       #
#                               #
#                               #
#################################
#                               #
# ....                          #
#                               #
#                               #
#################################
#                               #
# spl(24th 2k)                  #
#                               #
#                               #
#################################
#                               #
# 10K (padding with 0xff)       #
#                               #
#                               #
#################################
#                               #
#                               #
# 24K resevered for part table  #
#     (fill 0)                  #
#                               #
#################################
#                               #
#                               #
# u-boot                        #
#                               #
#                               #
#################################
pagesize=$1
spl_image=$2
uboot_image=$3
spl_append_to=$4
output_image=$5
#expand the spl to whole 48k
dd if=/dev/zero ibs=1k count=48 of=spl-padding.img obs=1k conv=sync  >& /dev/null
dd if=$spl_image of=spl-padding.img bs=2k conv=notrunc >& /dev/null

temp_image=tmp_image
if [ $pagesize -eq 12288 ]
then :
	#segments is the max_sizeof_spl(48K) / 2k(romcode's real pagesize)
	segments=24
	i=0
	iblock=0
	oblock=0
	tr "\000" "\377" < /dev/zero | dd ibs=12k count=26 of=$temp_image conv=sync
	while [ $i -lt $segments ]
	do
		#echo "read " "spl-padding.img" " pos " $iblock
		#echo "write to " $temp_image " pos " $oblock
		dd if=spl-padding.img of=$temp_image ibs=1k skip=$iblock obs=1k\
			seek=$oblock count=2 conv=notrunc >& /dev/null
		i=$[$i + 1]
		iblock=$[$iblock + 2]
		oblock=$[$oblock + 12]
	done
	#echo "write to " $temp_image " pos " $oblock
	dd if=/dev/zero of=$temp_image ibs=1k obs=1k seek=$oblock count=24 \
			conv=notrunc >& /dev/null
else #this is normal case
	dd if=/dev/zero ibs=1k count=$spl_append_to of=$temp_image obs=1k \
			conv=sync >& /dev/null
	dd if=spl-padding.img of=$temp_image bs=2k conv=notrunc >& /dev/null
fi
cat $temp_image $uboot_image > $output_image
rm -rf $temp_image spl-padding.img