[PATCH 1/3] fixup! scripts: imx-image: Fix writing image with IVT offset = 0

Ahmad Fatoum a.fatoum at pengutronix.de
Sun Jul 12 19:08:12 EDT 2020


When data.header_gap == 0, like on i.MX6, we seek to the start of the
file after writing the barebox header there and proceed to overwrite
it again.

Therefore we can no longer detect the filetype and affected images
can't be booted/flashed directly on < i.MX8 anymore. Fix this up:

- on i.MX8, there is nothing at the start, so it's ok to write there
- on i.MX6, we overwrite buf[0..sizeof_bb_header-1], but that's the way
  it was before

Signed-off-by: Ahmad Fatoum <a.fatoum at pengutronix.de>
---
 scripts/imx/imx-image.c | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/scripts/imx/imx-image.c b/scripts/imx/imx-image.c
index 64be682417e0..de04962b09d1 100644
--- a/scripts/imx/imx-image.c
+++ b/scripts/imx/imx-image.c
@@ -978,10 +978,7 @@ int main(int argc, char *argv[])
 	}
 
 	if (data.cpu_type == IMX_CPU_IMX35) {
-		xwrite(outfd, add_barebox_header ? bb_header : buf,
-		       sizeof_bb_header);
-		xwrite(outfd, buf + sizeof_bb_header,
-		       header_len - sizeof_bb_header);
+		xwrite(outfd, buf, header_len);
 		xwrite(outfd, buf, header_len);
 	} else {
 		if (add_barebox_header &&
@@ -990,9 +987,6 @@ int main(int argc, char *argv[])
 			exit(1);
 		}
 
-		xwrite(outfd, add_barebox_header ? bb_header : buf,
-		       sizeof_bb_header);
-
 		if (lseek(outfd, data.header_gap, SEEK_SET) < 0) {
 			perror("lseek");
 			exit(1);
@@ -1001,6 +995,9 @@ int main(int argc, char *argv[])
 		xwrite(outfd, buf, header_len);
 	}
 
+	if (add_barebox_header)
+		pwrite(outfd, bb_header, sizeof_bb_header, 0);
+
 	xwrite(outfd, infile, insize);
 
 	/* pad until next 4k boundary */
-- 
2.27.0




More information about the barebox mailing list