Skip to content

Commit 141e23b

Browse files
djurnyigorpecovnik
authored andcommitted
Update boot-mvebu.cmd
- Updated names to reflect function better. - Followed coding style of rest of the file, e.g. `test` instead of `itest` and `if ... ; then`. - If `setexpr` fails, use configured addresses - either the ones defined in boot.cmd or set by armbianEnv.txt.
1 parent 58dbffb commit 141e23b

File tree

1 file changed

+35
-23
lines changed

1 file changed

+35
-23
lines changed

config/bootscripts/boot-mvebu.cmd

Lines changed: 35 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@
33
# Please edit /boot/armbianEnv.txt to set supported parameters
44
#
55

6-
setenv load_addr "0x300000"
6+
setenv load_addr "0x00300000"
7+
setenv fdt_addr_r "0x02040000" # max size 128 KiB (=dtb+dto+fdt_extrasize)
8+
setenv kernel_addr_r "0x02060000" # max size 16 MiB
9+
setenv ramdisk_addr_r "0x03060000"
10+
711
# default values
812
setenv overlay_error "false"
913
setenv rootdev "/dev/mmcblk0p1"
@@ -16,8 +20,8 @@ setenv eth1addr "00:50:43:25:fb:84"
1620
setenv eth2addr "00:50:43:84:25:2f"
1721
setenv eth3addr "00:50:43:0d:19:18"
1822
setenv fdt_extrasize "0x00010000"
19-
setenv addr_align "0x00001000"
20-
setenv align_addr_next 'setexpr modulo ${addr_next} % ${addr_align} ; if itest $modulo -gt 0 ; then setexpr addr_next ${addr_next} / ${addr_align} ; setexpr addr_next ${addr_next} + 1 ; setexpr addr_next ${addr_next} * ${addr_align} ; fi'
23+
setenv align_to "0x00001000"
24+
setenv align_addr_next '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'
2125

2226
echo "Boot script loaded from ${devtype}"
2327

@@ -34,23 +38,30 @@ load ${devtype} ${devnum} ${fdt_addr_r} ${prefix}dtb/${fdtfile}
3438
fdt addr ${fdt_addr_r}
3539
fdt resize ${fdt_extrasize}
3640

37-
# calculate next load address
38-
fdt header get fdt_totalsize totalsize
39-
if itest "${fdt_totalsize}" == ""
40-
then
41-
# 'fdt resize' will align upwards to 4k address boundary
42-
setexpr fdt_totalsize ${filesize} / 0x1000
43-
setexpr fdt_totalsize ${fdt_totalsize} + 1
44-
setexpr fdt_totalsize ${fdt_totalsize} * 0x1000
45-
if itest "${fdt_extrasize}" != ""
46-
then
47-
# add 'extrasize' before aligning
48-
setexpr fdt_totalsize ${fdt_totalsize} + ${fdt_extrasize}
41+
if setexpr setexpr 1 + 1 ; then
42+
setenv setexpr "available"
43+
else
44+
echo "** Command `setexpr` not available - using configured load addresses"
45+
fi
46+
47+
if test "${setexpr}" = "available" ; then
48+
fdt header get fdt_totalsize totalsize
49+
if test "${fdt_totalsize}" = "" ; then
50+
echo "** Command `fdt header` does not support `get <var> <member>` - calculating DT size"
51+
52+
# 'fdt resize' will align upwards to 4k address boundary
53+
setexpr fdt_totalsize ${filesize} / 0x1000
54+
setexpr fdt_totalsize ${fdt_totalsize} + 1
55+
setexpr fdt_totalsize ${fdt_totalsize} * 0x1000
56+
if test "${fdt_extrasize}" != "" ; then
57+
# add 'extrasize' before aligning
58+
setexpr fdt_totalsize ${fdt_totalsize} + ${fdt_extrasize}
59+
fi
4960
fi
61+
setexpr addr_next ${fdt_addr_r} + ${fdt_totalsize}
62+
run align_addr_next
63+
setenv kernel_addr_r ${addr_next}
5064
fi
51-
setexpr addr_next ${fdt_addr_r} + ${fdt_totalsize}
52-
run align_addr_next
53-
setenv kernel_addr_r ${addr_next}
5465

5566
for overlay_file in ${overlays}; do
5667
if load ${devtype} ${devnum} ${load_addr} ${prefix}dtb/overlay/${overlay_prefix}-${overlay_file}.dtbo; then
@@ -67,7 +78,7 @@ for overlay_file in ${user_overlays}; do
6778
done
6879

6980
if test "${overlay_error}" = "true"; then
70-
echo "Error applying DT overlays, restoring original DT"
81+
echo "!! Error applying DT overlays, restoring original DT"
7182
load ${devtype} ${devnum} ${fdt_addr_r} ${prefix}dtb/${fdtfile}
7283
fdt addr ${fdt_addr_r}
7384
fdt resize ${fdt_extrasize}
@@ -104,10 +115,11 @@ fi
104115
echo "Loading kernel from ${devtype} to ${kernel_addr_r} ..."
105116
load ${devtype} ${devnum} ${kernel_addr_r} ${prefix}zImage
106117

107-
# calculate next load address
108-
setexpr addr_next ${kernel_addr_r} + ${filesize}
109-
run align_addr_next
110-
setenv ramdisk_addr_r ${addr_next}
118+
if test "${setexpr}" = "available" ; then
119+
setexpr addr_next ${kernel_addr_r} + ${filesize}
120+
run align_addr_next
121+
setenv ramdisk_addr_r ${addr_next}
122+
fi
111123

112124
echo "Loading ramdisk from ${devtype} to ${ramdisk_addr_r} ..."
113125
load ${devtype} ${devnum} ${ramdisk_addr_r} ${prefix}uInitrd

0 commit comments

Comments
 (0)