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

Heinrich Schuchardt xypron.glpk at gmx.de
Thu Feb 14 06:25:49 UTC 2019


The SPL image for the Tinker Board has to fit into 32 KiB. This includes
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>
---
v3
	The maximum size should of the image should be 30 KiB. Allowing
	2 KiB for the header. This is 30720 and not 32700 bytes.
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=30720
 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)
-- 
2.20.1



More information about the U-Boot mailing list