[U-Boot] [PATCH v1 2/2] imx: mkimage: add size check to the u-boot.imx make target

Marcel Ziswiler marcel at ziswiler.com
Wed Nov 7 22:39:47 UTC 2018


From: Marcel Ziswiler <marcel.ziswiler at toradex.com>

The make macro to check if the binary exceeds the board size limit is
taken straight from the root Makefile.

Without this and e.g. enabled EFI Vybrid fails booting as the regular
size limit check does not take the final u-boot.imx binary size into
account which is bigger due to alignment as well as IMX header stuff.

Signed-off-by: Marcel Ziswiler <marcel.ziswiler at toradex.com>

---

 arch/arm/mach-imx/Makefile | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile
index 72fe23a2b9..53d9e5f42b 100644
--- a/arch/arm/mach-imx/Makefile
+++ b/arch/arm/mach-imx/Makefile
@@ -58,6 +58,21 @@ obj-$(CONFIG_CMD_HDMIDETECT) += cmd_hdmidet.o
 obj-$(CONFIG_CMD_DEKBLOB) += cmd_dek.o
 endif
 
+ifneq ($(CONFIG_BOARD_SIZE_LIMIT),)
+BOARD_SIZE_CHECK = \
+        @actual=`wc -c $@ | awk '{print $$1}'`; \
+        limit=`printf "%d" $(CONFIG_BOARD_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
+BOARD_SIZE_CHECK =
+endif
+
 PLUGIN = board/$(BOARDDIR)/plugin
 
 ifeq ($(CONFIG_USE_IMXIMG_PLUGIN),y)
@@ -101,6 +116,7 @@ u-boot.imx: MKIMAGEOUTPUT = u-boot.imx.log
 
 u-boot.imx: u-boot.bin u-boot.cfgout $(PLUGIN).bin FORCE
 	$(call if_changed,mkimage)
+	$(BOARD_SIZE_CHECK)
 
 ifeq ($(CONFIG_OF_SEPARATE),y)
 MKIMAGEFLAGS_u-boot-dtb.imx = -n $(filter-out $(PLUGIN).bin $< $(PHONY),$^) \
-- 
2.14.5



More information about the U-Boot mailing list