]> git.sur5r.net Git - u-boot/blobdiff - tools/mkimage.c
tools: mkimage: add firmware-ivt image type for HAB verification
[u-boot] / tools / mkimage.c
index 49d5d1ed70a715f76033cb9aa1eb5e6a8ca4a63e..f48135ff7988d546262185835c1bd9ea07c0eaeb 100644 (file)
@@ -9,6 +9,7 @@
  */
 
 #include "mkimage.h"
+#include "imximage.h"
 #include <image.h>
 #include <version.h>
 
@@ -508,6 +509,37 @@ int main(int argc, char **argv)
                } else {
                        copy_file(ifd, params.datafile, pad_len);
                }
+               if (params.type == IH_TYPE_FIRMWARE_IVT) {
+                       /* Add alignment and IVT */
+                       uint32_t aligned_filesize = (params.file_size + 0x1000
+                                       - 1) & ~(0x1000 - 1);
+                       flash_header_v2_t ivt_header = { { 0xd1, 0x2000, 0x40 },
+                                       params.addr, 0, 0, 0, params.addr
+                                                       + aligned_filesize
+                                                       - tparams->header_size,
+                                       params.addr + aligned_filesize
+                                                       - tparams->header_size
+                                                       + 0x20, 0 };
+                       int i = params.file_size;
+                       for (; i < aligned_filesize; i++) {
+                               if (write(ifd, &i, 1) != 1) {
+                                       fprintf(stderr,
+                                                       "%s: Write error on %s: %s\n",
+                                                       params.cmdname,
+                                                       params.imagefile,
+                                                       strerror(errno));
+                                       exit(EXIT_FAILURE);
+                               }
+                       }
+                       if (write(ifd, &ivt_header, sizeof(flash_header_v2_t))
+                                       != sizeof(flash_header_v2_t)) {
+                               fprintf(stderr, "%s: Write error on %s: %s\n",
+                                               params.cmdname,
+                                               params.imagefile,
+                                               strerror(errno));
+                               exit(EXIT_FAILURE);
+                       }
+               }
        }
 
        /* We're a bit of paranoid */