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
|