
On Thu, 26 Oct 2017, Kever Yang wrote:
Add a script to generate binaries from bl31.elf, and generate u-boot.its file for FIT image including u-boot, dtb and atf binaries.
Signed-off-by: Kever Yang kever.yang@rock-chips.com
board/rockchip/evb_rk3328/mk_fit_atf.sh | 108 ++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100755 board/rockchip/evb_rk3328/mk_fit_atf.sh
diff --git a/board/rockchip/evb_rk3328/mk_fit_atf.sh b/board/rockchip/evb_rk3328/mk_fit_atf.sh new file mode 100755 index 0000000..192c303 --- /dev/null +++ b/board/rockchip/evb_rk3328/mk_fit_atf.sh @@ -0,0 +1,108 @@ +#!/bin/sh +# +# script to generate FIT image source for rk3399 boards with
Why the RK3399 here (no answer needed ... I know it's copied from the rk3399 file)?
+# ARM Trusted Firmware and multiple device trees (given on the command line) +# +# usage: $0 <dt_name> [<dt_name> [<dt_name] ...]
+[ -z "$BL31" ] && BL31="bl31.elf"
+if [ ! -f $BL31 ]; then
- echo "WARNING: BL31 file $BL31 NOT found, resulting binary is non-functional" >&2
- BL31=/dev/null
+fi
+cat << __HEADER_EOF +/dts-v1/;
+/ {
- description = "Configuration to load ATF before U-Boot";
- #address-cells = <1>;
- images {
uboot@1 {
description = "U-Boot (64-bit)";
data = /incbin/("u-boot-nodtb.bin");
type = "standalone";
arch = "arm64";
compression = "none";
load = <0x00200000>;
};
+__HEADER_EOF
+atf_cnt=1
+for l in `readelf -l $BL31 | grep -A1 LOAD | gawk --non-decimal-data \
- '{if (NR % 2) {printf "%d:0x%x:", $2,$4} else {printf "%d\n", $1}}'`
+do
- offset=${l%%:*}
- ll=${l#*:}
- phy_offset=${ll%:*}
- filesz=${ll##*:}
- #echo "$offset/$phy_offset/$filesz"
- of=bl31_${phy_offset}.bin
- dd if=$BL31 of=$of bs=1 skip=$offset count=$filesz
- out_string="${out_string}:${phy_offset}"
- cat << __ATF1_EOF
atf@$atf_cnt {
description = "ARM Trusted Firmware";
data = /incbin/("$of");
type = "firmware";
arch = "arm64";
compression = "none";
load = <$phy_offset>;
+__ATF1_EOF
- if [ "$atf_cnt" -eq 1 ]; then
cat << __ATF2_EOF
entry = <$phy_offset>;
+__ATF2_EOF
fi
- cat << __ATF3_EOF
};
+__ATF3_EOF
- atf_cnt=$((atf_cnt + 1))
+done
+cnt=1 +for dtname in $* +do
- cat << __FDT_IMAGE_EOF
fdt@$cnt {
description = "$(basename $dtname .dtb)";
data = /incbin/("$dtname");
type = "flat_dt";
compression = "none";
};
+__FDT_IMAGE_EOF
- cnt=$((cnt+1))
+done
+cat << __CONF_HEADER_EOF
- };
- configurations {
default = "config@1";
+__CONF_HEADER_EOF
+cnt=1 +for dtname in $* +do
- cat << __CONF_SECTION_EOF
config@$cnt {
description = "$(basename $dtname .dtb)";
firmware = "uboot@1";
loadables = "atf@1","atf@2";
fdt = "fdt@1";
};
+__CONF_SECTION_EOF
- cnt=$((cnt+1))
+done
+cat << __ITS_EOF
- };
+}; +__ITS_EOF
Given that this is copied verbatim from the evb_rk3399/mk_fit_atf.sh file: please merge this and use a common file.