[U-Boot] [PATCH v2 1/1] configs: rk3288: Tinker Board SPL file must fit into 32 KiB

Simon Goldschmidt simon.k.r.goldschmidt at gmail.com
Wed Feb 13 21:50:41 UTC 2019


Am 13.02.2019 um 22:38 schrieb Heinrich Schuchardt:
> The SPL image for the Tinker Board has to fit into 32 KiB. This includes
> 4 KiB for the device tree and up to 2 KiB for the file header.
> 
> A new configuration variable CONFIG_SPL_WITH_DTB_SIZE_LIMIT is introduced
> to define the board specific limit.
> 
> Signed-off-by: Heinrich Schuchardt <xypron.glpk at gmx.de>

That was fast :)

Reviewed-by: Simon Goldschmidt <simon.k.r.goldschmidt at gmail.com>


> ---
> v2
> 	Instead of using CONFIG_SPL_MAX_SIZE with an estimate of the FDT
> 	size introduce a new test in scripts/Makefile.spl.
> ---
>   Kconfig                         |  8 ++++++++
>   configs/tinker-rk3288_defconfig |  1 +
>   scripts/Makefile.spl            | 16 ++++++++++++++++
>   3 files changed, 25 insertions(+)
> 
> diff --git a/Kconfig b/Kconfig
> index 512c7beb89..7cce53da74 100644
> --- a/Kconfig
> +++ b/Kconfig
> @@ -172,6 +172,14 @@ config TPL_SYS_MALLOC_F_LEN
>   	  particular needs this to operate, so that it can allocate the
>   	  initial serial device and any others that are needed.
>   
> +config SPL_WITH_DTB_SIZE_LIMIT
> +	int "Maximum size of SPL image including device tree"
> +	depends on SPL
> +	default 0
> +	help
> +	  Specifies the maximum length of the U-Boot SPL image including the
> +	  device tree. If this value is zero, it is ignored.
> +
>   menuconfig EXPERT
>   	bool "Configure standard U-Boot features (expert users)"
>   	default y
> diff --git a/configs/tinker-rk3288_defconfig b/configs/tinker-rk3288_defconfig
> index fdcab28185..cc5e59bcf1 100644
> --- a/configs/tinker-rk3288_defconfig
> +++ b/configs/tinker-rk3288_defconfig
> @@ -3,6 +3,7 @@ CONFIG_ARCH_ROCKCHIP=y
>   CONFIG_SYS_TEXT_BASE=0x00000000
>   CONFIG_SYS_MALLOC_F_LEN=0x2000
>   CONFIG_ROCKCHIP_RK3288=y
> +CONFIG_SPL_WITH_DTB_SIZE_LIMIT=32700
>   CONFIG_SPL_ROCKCHIP_BACK_TO_BROM=y
>   CONFIG_TARGET_TINKER_RK3288=y
>   CONFIG_DEBUG_UART_BASE=0xff690000
> diff --git a/scripts/Makefile.spl b/scripts/Makefile.spl
> index 9d5921606e..afc329a410 100644
> --- a/scripts/Makefile.spl
> +++ b/scripts/Makefile.spl
> @@ -254,11 +254,27 @@ FINAL_DTB_CONTAINER = $(obj)/$(SPL_BIN).multidtb.fit
>   endif
>   
>   
> +ifneq ($(CONFIG_SPL_WITH_DTB_SIZE_LIMIT),0)
> +SPL_WITH_DTB_SIZE_CHECK = \
> +	@actual=`wc -c $@ | awk '{print $$1}'`; \
> +	limit=`printf "%d" $(CONFIG_SPL_WITH_DTB_SIZE_LIMIT)`; \
> +	if test $$actual -gt $$limit; then \
> +		echo "$@ exceeds file size limit:" >&2 ; \
> +		echo "  limit:  $$limit bytes" >&2 ; \
> +		echo "  actual: $$actual bytes" >&2 ; \
> +		echo "  excess: $$((actual - limit)) bytes" >&2; \
> +		exit 1; \
> +	fi
> +else
> +SPL_WITH_DTB_SIZE_CHECK =
> +endif
> +
>   ifeq ($(CONFIG_$(SPL_TPL_)OF_CONTROL)$(CONFIG_OF_SEPARATE)$(CONFIG_$(SPL_TPL_)OF_PLATDATA),yy)
>   $(obj)/$(SPL_BIN)-dtb.bin: $(obj)/$(SPL_BIN)-nodtb.bin \
>   		$(if $(CONFIG_SPL_SEPARATE_BSS),,$(obj)/$(SPL_BIN)-pad.bin) \
>   		$(FINAL_DTB_CONTAINER)  FORCE
>   	$(call if_changed,cat)
> +	$(SPL_WITH_DTB_SIZE_CHECK)
>   
>   $(obj)/$(SPL_BIN).bin: $(obj)/$(SPL_BIN)-dtb.bin FORCE
>   	$(call if_changed,copy)
> 



More information about the U-Boot mailing list