[U-Boot] [PATCH v2 08/11] riscv: add a generic FIT generator script

Anup Patel anup at brainfault.org
Mon Jul 29 08:39:24 UTC 2019


On Sun, Jul 28, 2019 at 9:30 PM Lukas Auer
<lukas.auer at aisec.fraunhofer.de> wrote:
>
> Add a generic FIT generator script for RISC-V to generate images
> containing U-Boot, OpenSBI FW_DYNAMIC firmware, and optionally one or
> more device trees. The location of the OpenSBI firmware binary can be
> specified with the OPENSBI environment variable. By default, it is
> assumed to be "fw_dynamic.bin" and located in the U-Boot top-level.
> Device trees are passed as arguments to the generator script. A separate
> configuration entry is created for each device tree.
>
> The load addresses of U-Boot and OpenSBI are parsed from the U-Boot
> configuration. They can be overwritten with the UBOOT_LOAD_ADDR and
> OPENSBI_LOAD_ADDR environment variables.
>
> The script is based on the i.MX (arch/arm/mach-imx/mkimage_fit_atf.sh)
> and Allwinner sunxi (board/sunxi/mksunxi_fit_atf.sh) FIT generator
> scripts.
>
> Signed-off-by: Lukas Auer <lukas.auer at aisec.fraunhofer.de>
> Reviewed-by: Bin Meng <bmeng.cn at gmail.com>
> Tested-by: Bin Meng <bmeng.cn at gmail.com>
> ---
>
> Changes in v2: None
>
>  arch/riscv/lib/mkimage_fit_opensbi.sh | 100 ++++++++++++++++++++++++++
>  1 file changed, 100 insertions(+)
>  create mode 100755 arch/riscv/lib/mkimage_fit_opensbi.sh
>
> diff --git a/arch/riscv/lib/mkimage_fit_opensbi.sh b/arch/riscv/lib/mkimage_fit_opensbi.sh
> new file mode 100755
> index 0000000000..d6f95e5bfd
> --- /dev/null
> +++ b/arch/riscv/lib/mkimage_fit_opensbi.sh
> @@ -0,0 +1,100 @@
> +#!/bin/sh
> +# SPDX-License-Identifier: GPL-2.0+
> +#
> +# script to generate FIT image source for RISC-V boards with OpenSBI
> +# and, optionally, multiple device trees (given on the command line).
> +#
> +# usage: $0 [<dt_name> [<dt_name] ...]
> +
> +[ -z "$OPENSBI" ] && OPENSBI="fw_dynamic.bin"
> +
> +if [ -z "$UBOOT_LOAD_ADDR" ]; then
> +       UBOOT_LOAD_ADDR="$(grep "^CONFIG_SYS_TEXT_BASE=" .config | awk 'BEGIN{FS="="} {print $2}')"
> +fi
> +
> +if [ -z "$OPENSBI_LOAD_ADDR" ]; then
> +       OPENSBI_LOAD_ADDR="$(grep "^CONFIG_SPL_OPENSBI_LOAD_ADDR=" .config | awk 'BEGIN{FS="="} {print $2}')"
> +fi
> +
> +if [ ! -f $OPENSBI ]; then
> +       echo "WARNING: OpenSBI binary \"$OPENSBI\" not found, resulting binary is not functional." >&2
> +       OPENSBI=/dev/null
> +fi
> +
> +cat << __HEADER_EOF
> +/dts-v1/;
> +
> +/ {
> +       description = "Configuration to load OpenSBI before U-Boot";
> +
> +       images {
> +               uboot {
> +                       description = "U-Boot";
> +                       data = /incbin/("u-boot-nodtb.bin");
> +                       type = "standalone";
> +                       os = "U-Boot";
> +                       arch = "riscv";
> +                       compression = "none";
> +                       load = <$UBOOT_LOAD_ADDR>;
> +               };
> +               opensbi {
> +                       description = "RISC-V OpenSBI";
> +                       data = /incbin/("$OPENSBI");
> +                       type = "firmware";
> +                       os = "opensbi";
> +                       arch = "riscv";
> +                       compression = "none";
> +                       load = <$OPENSBI_LOAD_ADDR>;
> +                       entry = <$OPENSBI_LOAD_ADDR>;
> +               };
> +__HEADER_EOF
> +
> +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
> +
> +if [ $# -eq 0 ]; then
> +cat << __CONF_SECTION_EOF
> +               config_1 {
> +                       description = "U-Boot FIT";
> +                       firmware = "opensbi";
> +                       loadables = "uboot";
> +               };
> +__CONF_SECTION_EOF
> +else
> +cnt=1
> +for dtname in $*
> +do
> +cat << __CONF_SECTION_EOF
> +               config_$cnt {
> +                       description = "$(basename $dtname .dtb)";
> +                       firmware = "opensbi";
> +                       loadables = "uboot";
> +                       fdt = "fdt_$cnt";
> +               };
> +__CONF_SECTION_EOF
> +cnt=$((cnt+1))
> +done
> +fi
> +
> +cat << __ITS_EOF
> +       };
> +};
> +__ITS_EOF
> --
> 2.21.0
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> https://lists.denx.de/listinfo/u-boot

Reviewed-by: Anup Patel <anup.patel at wdc.com>

Regards,
Anup


More information about the U-Boot mailing list