Re: [U-Boot] [PATCH v2 5/7] tools: add padding of data image file for imximage

2013-08-19 Thread Stefano Babic
Hi Marek,

On 13/08/2013 07:10, Marek Vasut wrote:
 Dear Stefano Babic,
 
 Implement function vrec_header to be able to pad the final
 data image file according the what has been calculated for
 boot_data.length.

 Signed-off-by: Stefano Babic sba...@denx.de
 ---
 
 [...]
 
 +if (!imxhdr) {
 +fprintf(stderr, %s: malloc return failure: %s\n,
 +params-cmdname, strerror(errno));
 +exit(EXIT_FAILURE);
 +}
 +
 +memset(imxhdr, 0, alloc_len);
 +
 +tparams-header_size = alloc_len;
 +tparams-hdr = imxhdr;
 +
 +/* determine data image file length */
 
 Why dont you just call stat(2) here instead of the open+fstat+close combo?

Thanks, replaced in V3.

Best regards,
Stefano Babic


-- 
=
DENX Software Engineering GmbH, MD: Wolfgang Denk  Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sba...@denx.de
=
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


[U-Boot] [PATCH v2 5/7] tools: add padding of data image file for imximage

2013-08-12 Thread Stefano Babic
Implement function vrec_header to be able to pad the final
data image file according the what has been calculated for
boot_data.length.

Signed-off-by: Stefano Babic sba...@denx.de
---
Changes in v2: None

 tools/imximage.c |   82 --
 1 file changed, 80 insertions(+), 2 deletions(-)

diff --git a/tools/imximage.c b/tools/imximage.c
index 2b4909e..5981625 100644
--- a/tools/imximage.c
+++ b/tools/imximage.c
@@ -571,18 +571,96 @@ int imximage_check_params(struct mkimage_params *params)
(params-xflag) || !(strlen(params-imagename));
 }
 
+static int imximage_generate(struct mkimage_params *params,
+   struct image_type_params *tparams)
+{
+   struct imx_header *imxhdr;
+   size_t alloc_len;
+   int dfd;
+   struct stat sbuf;
+   char *datafile = params-datafile;
+   uint32_t pad_len;
+
+   memset(imximage_header, 0, sizeof(imximage_header));
+
+   /*
+* In order to not change the old imx cfg file
+* by adding VERSION command into it, here need
+* set up function ptr group to V1 by default.
+*/
+   imximage_version = IMXIMAGE_V1;
+   /* Be able to detect if the cfg file has no BOOT_FROM tag */
+   imximage_ivt_offset = FLASH_OFFSET_UNDEFINED;
+   imximage_csf_size = 0;
+   set_hdr_func(imxhdr);
+
+   /* Parse dcd configuration file */
+   parse_cfg_file(imximage_header, params-imagename);
+
+   /* TODO: check i.MX image V1 handling, for now use 'old' style */
+   if (imximage_version == IMXIMAGE_V1)
+   alloc_len = 4096;
+   else
+   alloc_len = imximage_init_loadsize - imximage_ivt_offset;
+
+   if (alloc_len  sizeof(struct imx_header)) {
+   fprintf(stderr, %s: header error\n,
+   params-cmdname);
+   exit(EXIT_FAILURE);
+   }
+
+   imxhdr = malloc(alloc_len);
+
+   if (!imxhdr) {
+   fprintf(stderr, %s: malloc return failure: %s\n,
+   params-cmdname, strerror(errno));
+   exit(EXIT_FAILURE);
+   }
+
+   memset(imxhdr, 0, alloc_len);
+
+   tparams-header_size = alloc_len;
+   tparams-hdr = imxhdr;
+
+   /* determine data image file length */
+   dfd = open(datafile, O_RDONLY|O_BINARY);
+   if (dfd  0) {
+   fprintf(stderr, %s: Can't open %s: %s\n,
+   params-cmdname, datafile, strerror(errno));
+   exit(EXIT_FAILURE);
+   }
+
+   if (fstat(dfd, sbuf)  0) {
+   fprintf(stderr, %s: Can't stat %s: %s\n,
+   params-cmdname, datafile, strerror(errno));
+   exit(EXIT_FAILURE);
+   }
+
+   pad_len = ROUND(sbuf.st_size, 4096) - sbuf.st_size;
+
+   close(dfd);
+
+   /* TODO: check i.MX image V1 handling, for now use 'old' style */
+   if (imximage_version == IMXIMAGE_V1)
+   return 0;
+   else
+   return pad_len;
+}
+
+
 /*
  * imximage parameters
  */
 static struct image_type_params imximage_params = {
.name   = Freescale i.MX Boot Image support,
-   .header_size= sizeof(struct imx_header),
-   .hdr= (void *)imximage_header,
+   .header_size= 0,
+   .hdr= NULL,
.check_image_type = imximage_check_image_types,
.verify_header  = imximage_verify_header,
.print_header   = imximage_print_header,
.set_header = imximage_set_header,
.check_params   = imximage_check_params,
+   .vrec_header= imximage_generate,
 };
 
 void init_imx_image_type(void)
-- 
1.7.9.5

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v2 5/7] tools: add padding of data image file for imximage

2013-08-12 Thread Marek Vasut
Dear Stefano Babic,

 Implement function vrec_header to be able to pad the final
 data image file according the what has been calculated for
 boot_data.length.
 
 Signed-off-by: Stefano Babic sba...@denx.de
 ---

[...]

 + if (!imxhdr) {
 + fprintf(stderr, %s: malloc return failure: %s\n,
 + params-cmdname, strerror(errno));
 + exit(EXIT_FAILURE);
 + }
 +
 + memset(imxhdr, 0, alloc_len);
 +
 + tparams-header_size = alloc_len;
 + tparams-hdr = imxhdr;
 +
 + /* determine data image file length */

Why dont you just call stat(2) here instead of the open+fstat+close combo?

 + dfd = open(datafile, O_RDONLY|O_BINARY);
 + if (dfd  0) {
 + fprintf(stderr, %s: Can't open %s: %s\n,
 + params-cmdname, datafile, strerror(errno));
 + exit(EXIT_FAILURE);
 + }
 +
 + if (fstat(dfd, sbuf)  0) {
 + fprintf(stderr, %s: Can't stat %s: %s\n,
 + params-cmdname, datafile, strerror(errno));
 + exit(EXIT_FAILURE);
 + }
 +
 + pad_len = ROUND(sbuf.st_size, 4096) - sbuf.st_size;
 +
 + close(dfd);
 +
 + /* TODO: check i.MX image V1 handling, for now use 'old' style */

[...]

Best regards,
Marek Vasut
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot