Skip to content

Commit d027115

Browse files
djurnyigorpecovnik
authored andcommitted
Bootscript enhancements
- Added FDT resize/trim to allow big DT and overlays and still use configured load addresses in case `setexpr` not available - Moved FDT resize and next load address alignment - Added filename information to load instructions - Moved all "global" variable determinations to the top of the bootscript
1 parent dc9a1fc commit d027115

File tree

1 file changed

+34
-30
lines changed

1 file changed

+34
-30
lines changed

config/bootscripts/boot-mvebu.cmd

Lines changed: 34 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,15 @@ setenv align_to "0x00001000"
2525
setenv align_overlap_oboe_avoidance "on"
2626
setenv align_addr_next 'if test "${align_overlap_oboe_avoidance}" = "on" ; then setexpr addr_next ${addr_next} + 1 ; fi ; setexpr modulo ${addr_next} % ${align_to} ; if itest ${modulo} -gt 0 ; then setexpr addr_next ${addr_next} / ${align_to} ; setexpr addr_next ${addr_next} + 1 ; setexpr addr_next ${addr_next} * ${align_to} ; fi'
2727

28+
if setexpr setexpr 1 + 1 ; then
29+
setenv setexpr "available"
30+
else
31+
echo "** Command `setexpr` not available - using configured load addresses"
32+
fi
33+
2834
echo "Boot script loaded from ${devtype}"
2935

30-
setenv something "environment from ${devtype} to ${load_addr}"
36+
setenv something "environment ${prefix}armbianEnv.txt from ${devtype} to ${load_addr}"
3137
echo "Loading ${something} ..."
3238
if load ${devtype} ${devnum} ${load_addr} ${prefix}armbianEnv.txt; then
3339
env import -t ${load_addr} ${filesize}
@@ -37,7 +43,7 @@ fi
3743

3844
setenv bootargs "console=ttyS0,115200 root=${rootdev} rootwait rootfstype=${rootfstype} ubootdev=${devtype} scandelay loglevel=${verbosity} usb-storage.quirks=${usbstoragequirks} ${extraargs}"
3945

40-
setenv something "DT from ${devtype} to ${fdt_addr_r}"
46+
setenv something "DT ${prefix}dtb/${fdtfile} from ${devtype} to ${fdt_addr_r}"
4147
echo "Loading ${something} ..."
4248
if load ${devtype} ${devnum} ${fdt_addr_r} ${prefix}dtb/${fdtfile} ; then
4349
else
@@ -47,34 +53,10 @@ else
4753
fi
4854
fi
4955

56+
setenv fdt_filesize ${filesize}
5057
fdt addr ${fdt_addr_r}
5158
fdt resize ${fdt_extrasize}
5259

53-
if setexpr setexpr 1 + 1 ; then
54-
setenv setexpr "available"
55-
else
56-
echo "** Command `setexpr` not available - using configured load addresses"
57-
fi
58-
59-
if test "${setexpr}" = "available" ; then
60-
fdt header get fdt_totalsize totalsize
61-
if test "${fdt_totalsize}" = "" ; then
62-
echo "** Command `fdt header` does not support `get <var> <member>` - calculating DT size"
63-
64-
# 'fdt resize' will align upwards to 4k address boundary
65-
setexpr fdt_totalsize ${filesize} / 0x1000
66-
setexpr fdt_totalsize ${fdt_totalsize} + 1
67-
setexpr fdt_totalsize ${fdt_totalsize} * 0x1000
68-
if test "${fdt_extrasize}" != "" ; then
69-
# add 'extrasize' before aligning
70-
setexpr fdt_totalsize ${fdt_totalsize} + ${fdt_extrasize}
71-
fi
72-
fi
73-
setexpr addr_next ${fdt_addr_r} + ${fdt_totalsize}
74-
run align_addr_next
75-
setenv kernel_addr_r ${addr_next}
76-
fi
77-
7860
for overlay_file in ${overlays}; do
7961
setenv something "kernel provided DT overlay ${overlay_prefix}-${overlay_file}.dtbo from ${devtype} to ${load_addr}"
8062
echo "Loading ${something} ..."
@@ -145,7 +127,29 @@ if test "${spi_workaround}" = "on"; then
145127
fdt set /soc/spi@10680/spi-flash@0 status "okay"
146128
fi
147129

148-
setenv something "kernel from ${devtype} to ${kernel_addr_r}"
130+
echo "Trimming DT ..."
131+
fdt resize
132+
133+
if test "${setexpr}" = "available" ; then
134+
fdt header get fdt_totalsize totalsize
135+
if test "${fdt_totalsize}" = "" ; then
136+
echo "** Command `fdt header` does not support `get <var> <member>` - calculating DT size"
137+
138+
# 'fdt resize' will align upwards to 4k address boundary
139+
setexpr fdt_totalsize ${fdt_filesize} / 0x1000
140+
setexpr fdt_totalsize ${fdt_totalsize} + 1
141+
setexpr fdt_totalsize ${fdt_totalsize} * 0x1000
142+
if test "${fdt_extrasize}" != "" ; then
143+
# add 'extrasize' before aligning
144+
setexpr fdt_totalsize ${fdt_totalsize} + ${fdt_extrasize}
145+
fi
146+
fi
147+
setexpr addr_next ${fdt_addr_r} + ${fdt_totalsize}
148+
run align_addr_next
149+
setenv kernel_addr_r ${addr_next}
150+
fi
151+
152+
setenv something "kernel ${prefix}zImage from ${devtype} to ${kernel_addr_r}"
149153
echo "Loading ${something} ..."
150154
if load ${devtype} ${devnum} ${kernel_addr_r} ${prefix}zImage ; then
151155
else
@@ -161,7 +165,7 @@ if test "${setexpr}" = "available" ; then
161165
setenv ramdisk_addr_r ${addr_next}
162166
fi
163167

164-
setenv something "initial ramdisk from ${devtype} to ${ramdisk_addr_r}"
168+
setenv something "initial ramdisk ${prefix}uInitrd from ${devtype} to ${ramdisk_addr_r}"
165169
echo "Loading ${something} ..."
166170
if load ${devtype} ${devnum} ${ramdisk_addr_r} ${prefix}uInitrd ; then
167171
else
@@ -171,7 +175,7 @@ else
171175
fi
172176
fi
173177

174-
setenv something "kernel"
178+
setenv something "kernel from ${kernel_addr_r}"
175179
echo "Booting ${something} ..."
176180
if bootz ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r} ; then
177181
else

0 commit comments

Comments
 (0)