On 05/03/2015 11:55 PM, Andrey Smirnov wrote: > If called with '-b' option 'imx-image' tool prepends barebox header to > the image, but the tool does not fill the data at image size offset > correctly. Fix that. > > Signed-off-by: Andrey Smirnov > --- > > This patch supercedes the one sent earlier titled: > "[PATCH 1/8] Makefile.lib: Fix i.MX image size after generation" > > scripts/imx/Makefile | 2 ++ > scripts/imx/imx-image.c | 12 ++++++++++-- > 2 files changed, 12 insertions(+), 2 deletions(-) > > diff --git a/scripts/imx/Makefile b/scripts/imx/Makefile > index be0b490..ee0acc1 100644 > --- a/scripts/imx/Makefile > +++ b/scripts/imx/Makefile > @@ -6,5 +6,7 @@ always := $(hostprogs-y) > HOSTCFLAGS_imx-usb-loader.o = `pkg-config --cflags libusb-1.0` > HOSTLOADLIBES_imx-usb-loader = `pkg-config --libs libusb-1.0` > > +HOSTCFLAGS_imx-image.o = -I$(srctree) > + > imx-usb-loader-objs := imx-usb-loader.o > imx-image-objs := imx-image.o > diff --git a/scripts/imx/imx-image.c b/scripts/imx/imx-image.c > index 25ea4d8..c0181df 100644 > --- a/scripts/imx/imx-image.c > +++ b/scripts/imx/imx-image.c > @@ -27,6 +27,8 @@ > #include > #include > > +#include > + > #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) > #define offsetof(TYPE, MEMBER) __builtin_offsetof(TYPE, MEMBER) > #define roundup(x, y) ((((x) + ((y) - 1)) / (y)) * (y)) > @@ -92,8 +94,11 @@ static int add_header_v1(void *buf, int offset, uint32_t loadaddr, uint32_t imag > struct imx_flash_header *hdr; > int dcdsize = curdcd * sizeof(uint32_t); > > - if (add_barebox_header) > + if (add_barebox_header) { > + uint32_t *psize = buf + ARM_HEAD_SIZE_OFFSET; > memcpy(buf, bb_header, sizeof(bb_header)); > + *psize = imagesize; > + } > > buf += offset; > hdr = buf; > @@ -178,8 +183,11 @@ static int add_header_v2(void *buf, int offset, uint32_t loadaddr, uint32_t imag > struct imx_flash_header_v2 *hdr; > int dcdsize = curdcd * sizeof(uint32_t); > > - if (add_barebox_header) > + if (add_barebox_header) { > + uint32_t *psize = buf + ARM_HEAD_SIZE_OFFSET; > memcpy(buf, bb_header, sizeof(bb_header)); > + *psize = imagesize; > + } In the HAB case, the resulting image will be CSF_LEN bytes bigger, see: "if (prepare_sign)" below. (A signature + padding will be appended to the barebox image.) What does the size in the barebox header mean exactly? Marc -- Pengutronix e.K. | Marc Kleine-Budde | Industrial Linux Solutions | Phone: +49-231-2826-924 | Vertretung West/Dortmund | Fax: +49-5121-206917-5555 | Amtsgericht Hildesheim, HRA 2686 | http://www.pengutronix.de |