[U-Boot] [PATCH v2 1/3] rockchip: rk3399-evb: add script for atf fit
Kever Yang
kever.yang at rock-chips.com
Mon Aug 21 13:00:16 UTC 2017
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 at rock-chips.com>
Reviewed-by: Mark Kettenis <kettenis at openbsd.org>
Tested-by: Mark Kettenis <kettenis at openbsd.org>
---
Changes in v2: None
board/rockchip/evb_rk3399/mk_fit_atf.sh | 110 ++++++++++++++++++++++++++++++++
1 file changed, 110 insertions(+)
create mode 100755 board/rockchip/evb_rk3399/mk_fit_atf.sh
diff --git a/board/rockchip/evb_rk3399/mk_fit_atf.sh b/board/rockchip/evb_rk3399/mk_fit_atf.sh
new file mode 100755
index 0000000..146550a
--- /dev/null
+++ b/board/rockchip/evb_rk3399/mk_fit_atf.sh
@@ -0,0 +1,110 @@
+#!/bin/sh
+#
+# script to generate FIT image source for rk3399 boards with
+# 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
+
+#tools/mkimage -n rk3399 -T rksd -d spl/u-boot-spl.bin idbspl.img
+
+cat << __HEADER_EOF
+/dts-v1/;
+
+/ {
+ description = "Configuration to load ATF before U-Boot";
+ #address-cells = <1>;
+
+ images {
+ uboot at 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=rk3399bl31_${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 at 1";
+
+__CONF_HEADER_EOF
+
+cnt=1
+for dtname in $*
+do
+ cat << __CONF_SECTION_EOF
+ config@$cnt {
+ description = "$(basename $dtname .dtb)";
+ firmware = "uboot at 1";
+ loadables = "atf at 1","atf at 2","atf at 3";
+ fdt = "fdt at 1";
+ };
+__CONF_SECTION_EOF
+ cnt=$((cnt+1))
+done
+
+cat << __ITS_EOF
+ };
+};
+__ITS_EOF
--
1.9.1
More information about the U-Boot
mailing list