sunxi: binman: Add U-Boot binary size check

The U-Boot binary may trip over its actual allocated size in the storage.
In such a case, the environment will not be readable anymore (because
corrupted when the new image was flashed), and any attempt at using saveenv
to reconstruct the environment will result in a corrupted U-Boot binary.

Reviewed-by: Andre Przywara <andre.przywara@arm.com>
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
This commit is contained in:
Maxime Ripard 2017-10-19 11:36:35 +02:00
parent ce2e44d836
commit 819f1e081c

View file

@ -1,5 +1,14 @@
#include <config.h> #include <config.h>
/*
* This is the maximum size the U-Boot binary can be, which is basically
* the start of the environment, minus the start of the U-Boot binary in
* the MMC. This makes the assumption that the MMC is using 512-bytes
* blocks, but devices using something other than that remains to be
* seen.
*/
#define UBOOT_MMC_MAX_SIZE (CONFIG_ENV_OFFSET - (CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR * 512))
/ { / {
binman { binman {
filename = "u-boot-sunxi-with-spl.bin"; filename = "u-boot-sunxi-with-spl.bin";
@ -8,6 +17,9 @@
filename = "spl/sunxi-spl.bin"; filename = "spl/sunxi-spl.bin";
}; };
u-boot-img { u-boot-img {
#ifdef CONFIG_MMC
size = <UBOOT_MMC_MAX_SIZE>;
#endif
pos = <CONFIG_SPL_PAD_TO>; pos = <CONFIG_SPL_PAD_TO>;
}; };
}; };