imximage: Fix imximage IVT bug for EIM-NOR boot
authorYe.Li <Ye.Li@freescale.com>
Wed, 20 Aug 2014 08:55:32 +0000 (16:55 +0800)
committerStefano Babic <sbabic@denx.de>
Tue, 9 Sep 2014 14:39:02 +0000 (16:39 +0200)
The load region size of EIM-NOR are defined to 0. For this case,
the parameter "imximage_init_loadsize" must be calculated.
The imximage tool implements the calculation in the "imximage_generate"
function, but the following function "imximage_set_header" resets the value
and not calculate. This bug cause some fields of IVT head are not
correct, for example the boot_data and DCD overlay the application area.

Signed-off-by: Ye.Li <B37916@freescale.com>
tools/imximage.c

index 18dc051c5ee67e1f98e247515bc50d56c4368736..faba23860f5471ecd1ebdc751c5182984b1beab2 100644 (file)
@@ -568,6 +568,13 @@ static void imximage_set_header(void *ptr, struct stat *sbuf, int ifd,
        /* Parse dcd configuration file */
        dcd_len = parse_cfg_file(imxhdr, params->imagename);
 
+       if (imximage_version == IMXIMAGE_V2) {
+               if (imximage_init_loadsize < imximage_ivt_offset +
+                       sizeof(imx_header_v2_t))
+                               imximage_init_loadsize = imximage_ivt_offset +
+                                       sizeof(imx_header_v2_t);
+       }
+
        /* Set the imx header */
        (*set_imx_hdr)(imxhdr, dcd_len, params->ep, imximage_ivt_offset);