bin2hex: handle any file length, not just 8 or 4
authorMatt Johnston <matt@codeconstruct.com.au>
Thu, 27 Oct 2022 06:16:49 +0000 (14:16 +0800)
committerMatt Johnston <matt@codeconstruct.com.au>
Mon, 31 Oct 2022 06:41:15 +0000 (14:41 +0800)
Treat the input as if it was padded with zeroes to a multiple
of 8. This is needed if the .data in a binary changes size, it
won't be a nice multiple of 4 or 8. At present the microwatt
binaries all are multiples of 8, but making code alterations could make
bin2hex fail unexpectedly.

Signed-off-by: Matt Johnston <matt@codeconstruct.com.au>
litedram/gen-src/sdram_init/bin2hex.py

index af278bc91fa6800b68fc05712d1b0323278cb670..b53b2c9660a54fb0f5f2ba6173951415d63697c3 100755 (executable)
@@ -7,11 +7,8 @@ import struct
 with open(sys.argv[1], "rb") as f:
         while True:
             word = f.read(8)
-            if len(word) == 8:
-                print("%016x" % struct.unpack('Q', word));
-            elif len(word) == 4:
-                print("00000000%08x" % struct.unpack('I', word));
-            elif len(word) == 0:
+            if len(word) == 0:
                 exit(0);
-            else:
-                raise Exception("Bad length")
+            if len(word) != 8:
+                word = word + bytes(8 - len(word))
+            print("%016x" % struct.unpack('Q', word));