diff mbox series

[U-Boot,4/8] rockchip: rk3328-evb: add script for atf fit

Message ID 1509001896-7182-5-git-send-email-kever.yang@rock-chips.com
State Superseded
Delegated to: Philipp Tomsich
Headers show
Series rockchip: enable TPL/SPL for rk3328 | expand

Commit Message

Kever Yang Oct. 26, 2017, 7:11 a.m. UTC
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

Comments

Philipp Tomsich Nov. 7, 2017, 2:59 p.m. UTC | #1
> 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
> 

Acked-by: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
Philipp Tomsich Nov. 7, 2017, 3:09 p.m. UTC | #2
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.
diff mbox series

Patch

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
+# 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