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
812setenv overlay_error " false"
913setenv rootdev " /dev/mmcblk0p1"
@@ -16,8 +20,8 @@ setenv eth1addr "00:50:43:25:fb:84"
1620setenv eth2addr " 00:50:43:84:25:2f"
1721setenv eth3addr " 00:50:43:0d:19:18"
1822setenv 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
2226echo " Boot script loaded from ${devtype}"
2327
@@ -34,23 +38,30 @@ load ${devtype} ${devnum} ${fdt_addr_r} ${prefix}dtb/${fdtfile}
3438fdt addr ${fdt_addr_r}
3539fdt 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}
5064fi
51- setexpr addr_next ${fdt_addr_r} + ${fdt_totalsize}
52- run align_addr_next
53- setenv kernel_addr_r ${addr_next}
5465
5566for 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
6778done
6879
6980if 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}
104115echo " Loading kernel from ${devtype} to ${kernel_addr_r} ..."
105116load ${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
112124echo " Loading ramdisk from ${devtype} to ${ramdisk_addr_r} ..."
113125load ${devtype} ${devnum} ${ramdisk_addr_r} ${prefix}uInitrd
0 commit comments