Skip to contentSkip to conversation

mkimage : Fix generating multi and script images

PATCH In review Philippe De Swert 3 participants 5 messages Dec 3, 2015 – Dec 7, 2015

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 mkimage : Fix generating multi and script images

Seems 92a655c3 broke creating multi and script type images. Since the file1:file2:file3 string does not get split up, it fails on trying to open an non-existing file.

mkimage -A arm -O linux -T multi -C none -d zImage:splash.bmp:device.dtb uimage tools/mkimage: Can't open zImage:splash.bmp:device.dtb: No such file or directory

Since the sizes of the different parts seem to get added in the actual routine that handles multi and script type images, we can probably skip the bit of the code that causes the failure for that type of images.

---
 tools/mkimage.c | 31 ++++++++++++++++++-------------
 1 file changed, 18 insertions(+), 13 deletions(-)
tools/mkimage.c +18 -13
index 8af9d50..ae01cb1 100644
@@ -311,21 +311,26 @@ NXTARG:		;
 		exit (retval);
 	}
 
-	dfd = open(params.datafile, O_RDONLY | O_BINARY);
-	if (dfd < 0) {
-		fprintf(stderr, "%s: Can't open %s: %s\n",
-			params.cmdname, params.datafile, strerror(errno));
-		exit(EXIT_FAILURE);
-	}
+	if (!params.type == IH_TYPE_MULTI ||
+	    !params.type == IH_TYPE_SCRIPT) {
+		dfd = open(params.datafile, O_RDONLY | O_BINARY);
+		if (dfd < 0) {
+			fprintf(stderr, "%s: Can't open %s: %s\n",
+				params.cmdname, params.datafile,
+				strerror(errno));
+			exit(EXIT_FAILURE);
+		}
 
-	if (fstat(dfd, &sbuf) < 0) {
-		fprintf(stderr, "%s: Can't stat %s: %s\n",
-			params.cmdname, params.datafile, strerror(errno));
-		exit(EXIT_FAILURE);
-	}
+		if (fstat(dfd, &sbuf) < 0) {
+			fprintf(stderr, "%s: Can't stat %s: %s\n",
+				params.cmdname, params.datafile,
+				strerror(errno));
+			exit(EXIT_FAILURE);
+		}
 
-	params.file_size = sbuf.st_size + tparams->header_size;
-	close(dfd);
+		params.file_size = sbuf.st_size + tparams->header_size;
+		close(dfd);
+	}
 
 	/*
 	 * In case there an header with a variable
Signature · 1 line
2.1.4
#1 lore raw
Quoted 4 lines · Philippe De Swert

Seems 92a655c3 broke creating multi and script type images. Since the file1:file2:file3 string does not get split up, it fails on trying to open an non-existing file.

Quoted 8 lines

mkimage -A arm -O linux -T multi -C none -d zImage:splash.bmp:device.dtb uimage tools/mkimage: Can't open zImage:splash.bmp:device.dtb: No such file or directory

Since the sizes of the different parts seem to get added in the actual routine that handles multi and script type images, we can probably skip the bit of the code that causes the failure for that type of images.

Applied to u-boot/master, thanks!

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20151206/de61ef1e/attachment.sig>
#2 lore raw

PATCH 1/1 mkimage : Fix generating multi and script images

In reply to Philippe De Swert

Hi Philippe,

Quoted 22 lines · Philippe De Swert

Seems 92a655c3 broke creating multi and script type images. Since the file1:file2:file3 string does not get split up, it fails on trying to open an non-existing file.

mkimage -A arm -O linux -T multi -C none -d zImage:splash.bmp:device.dtb uimage tools/mkimage: Can't open zImage:splash.bmp:device.dtb: No such file or directory

Since the sizes of the different parts seem to get added in the actual routine that handles multi and script type images, we can probably skip the bit of the code that causes the failure for that type of images.

---
 tools/mkimage.c | 31 ++++++++++++++++++-------------
 1 file changed, 18 insertions(+), 13 deletions(-)
tools/mkimage.c +0 -0
index 8af9d50..ae01cb1 100644
@@ -311,21 +311,26 @@ NXTARG:           ;
                exit (retval);

tools/mkimage.c NXTARG: ; · line 315

Quoted 10 lines
tools/mkimage.c +2 -6
        }
 
-       dfd = open(params.datafile, O_RDONLY | O_BINARY);
-       if (dfd < 0) {
-               fprintf(stderr, "%s: Can't open %s: %s\n",
-                       params.cmdname, params.datafile, strerror(errno));
-               exit(EXIT_FAILURE);
-       }
+       if (!params.type == IH_TYPE_MULTI ||
+           !params.type == IH_TYPE_SCRIPT) {

This breaks rockchip image generation. I'm not sure what the above two lines are supposed to do, but if they are correct they are very confusing. Can you please take a look? I'll send a revert in the meantime.

Quoted 29 lines
tools/mkimage.c +16 -8
+               dfd = open(params.datafile, O_RDONLY | O_BINARY);
+               if (dfd < 0) {
+                       fprintf(stderr, "%s: Can't open %s: %s\n",
+                               params.cmdname, params.datafile,
+                               strerror(errno));
+                       exit(EXIT_FAILURE);
+               }
 
-       if (fstat(dfd, &sbuf) < 0) {
-               fprintf(stderr, "%s: Can't stat %s: %s\n",
-                       params.cmdname, params.datafile, strerror(errno));
-               exit(EXIT_FAILURE);
-       }
+               if (fstat(dfd, &sbuf) < 0) {
+                       fprintf(stderr, "%s: Can't stat %s: %s\n",
+                               params.cmdname, params.datafile,
+                               strerror(errno));
+                       exit(EXIT_FAILURE);
+               }
 
-       params.file_size = sbuf.st_size + tparams->header_size;
-       close(dfd);
+               params.file_size = sbuf.st_size + tparams->header_size;
+               close(dfd);
+       }
 
        /*
         * In case there an header with a variable
--
Quoted 1 line

2.1.4

Regards,
Simon

#3 lore raw

PATCH 1/1 mkimage : Fix generating multi and script images

Hi Simon,

Quoted 9 lines · Simon Glass
tools/mkimage.c +2 -6
-       dfd = open(params.datafile, O_RDONLY | O_BINARY);
-       if (dfd < 0) {
-               fprintf(stderr, "%s: Can't open %s: %s\n",
-                       params.cmdname, params.datafile, strerror(errno));
-               exit(EXIT_FAILURE);
-       }
+       if (!params.type == IH_TYPE_MULTI ||
+           !params.type == IH_TYPE_SCRIPT) {
Quoted 4 lines

This breaks rockchip image generation. I'm not sure what the above two lines are supposed to do, but if they are correct they are very confusing. Can you please take a look? I'll send a revert in the meantime.

Weird, those lines only do something if -T multi or -T script. These seem have command lines that will
not work at all due to things not being expanded and the open below failing. I have no idea what the used command line would be for rockchip though, so I would need more
info to avoid breaking that with a new patch. Are you btw sure this is the commit that breaks it?

Quoted 9 lines

tools/mkimage.c NXTARG: ; · line 322

Quoted 9 lines
tools/mkimage.c +7 -0
+               dfd = open(params.datafile, O_RDONLY | O_BINARY);
+               if (dfd < 0) {
+                       fprintf(stderr, "%s: Can't open %s: %s\n",
+                               params.cmdname, params.datafile,
+                               strerror(errno));
+                       exit(EXIT_FAILURE);
+               }

Thanks,

Philippe

#4 lore raw

PATCH 1/1 mkimage : Fix generating multi and script images

Hi Philippe,

Quoted 20 lines · Philippe De Swert

Hi Simon,

On 07/12/15 06:31, Simon Glass wrote:

tools/mkimage.c +2 -6
-       dfd = open(params.datafile, O_RDONLY | O_BINARY);
-       if (dfd < 0) {
-               fprintf(stderr, "%s: Can't open %s: %s\n",
-                       params.cmdname, params.datafile, strerror(errno));
-               exit(EXIT_FAILURE);
-       }
+       if (!params.type == IH_TYPE_MULTI ||
+           !params.type == IH_TYPE_SCRIPT) {

This breaks rockchip image generation. I'm not sure what the above two lines are supposed to do, but if they are correct they are very confusing. Can you please take a look? I'll send a revert in the meantime.

Quoted 7 lines

Weird, those lines only do something if -T multi or -T script. These seem have command lines that will
not work at all due to things not being expanded and the open below failing. I have no idea what the used command line would be for rockchip though, so I would need more
info to avoid breaking that with a new patch. Are you btw sure this is the commit that breaks it?

Not as written they don't. Do you mean this:

if (params.type != IH_TYPE_MULTI && params.type != IH_TYPE_SCRIPT)

or should the ! have brackets after it?

You can build firefly-rk3288 and then run the mkimage command under 'Booting from an SD card' in README.rockchip:

./firefly-rk3288/tools/mkimage -T rksd -d \
firefly-rk3288/spl/u-boot-spl-dtb.bin out

assuming you built it with O=firefly-rk3288

tools/mkimage.c NXTARG: ; · line 322

Quoted 8 lines
tools/mkimage.c +7 -0
+               dfd = open(params.datafile, O_RDONLY | O_BINARY);
+               if (dfd < 0) {
+                       fprintf(stderr, "%s: Can't open %s: %s\n",
+                               params.cmdname, params.datafile,
+                               strerror(errno));
+                       exit(EXIT_FAILURE);
+               }

Regards,
Simon