tools: imximage: display DCD block offset, length
authorEric Nelson <eric@nelint.com>
Thu, 17 Nov 2016 00:13:41 +0000 (17:13 -0700)
committerStefano Babic <sbabic@denx.de>
Tue, 29 Nov 2016 15:37:37 +0000 (16:37 +0100)
These values can be used to sign a U-Boot image for use when
loading an image through the Serial Download Protocol (SDP).

Note that the address of 0x910000 is usable with the stock
configuration of imx_usb_loader on i.MX6 and i.MX7 SOCs:

https://github.com/boundarydevices/imx_usb_loader/blob/master/mx6_usb_work.conf#L3

Refer to the section on imx_usb_loader in this post for more
details:

https://boundarydevices.com/high-assurance-boot-hab-dummies/

Signed-off-by: Eric Nelson <eric@nelint.com>
tools/imximage.c

index c9e42ec5cab54e18a60af4c44c74b7e9c72e8b06..2cd8d884873cc84877c1abe7f4ee88a2e7b5ada5 100644 (file)
@@ -281,7 +281,6 @@ static void set_dcd_rst_v2(struct imx_header *imxhdr, uint32_t dcd_len,
                        d = (struct dcd_v2_cmd *)(((char *)d) + len);
 
                len = (char *)d - (char *)&dcd_v2->header;
-
                dcd_v2->header.tag = DCD_HEADER_TAG;
                dcd_v2->header.length = cpu_to_be16(len);
                dcd_v2->header.version = DCD_VERSION;
@@ -501,10 +500,19 @@ static void print_hdr_v2(struct imx_header *imx_hdr)
                printf("Entry Point:  %08x\n", (uint32_t)fhdr_v2->entry);
                if (fhdr_v2->csf && (imximage_ivt_offset != UNDEFINED) &&
                    (imximage_csf_size != UNDEFINED)) {
+                       uint16_t dcdlen;
+                       int offs;
+
+                       dcdlen = hdr_v2->data.dcd_table.header.length;
+                       offs = (char *)&hdr_v2->data.dcd_table
+                               - (char *)hdr_v2;
+
                        printf("HAB Blocks:   %08x %08x %08x\n",
                               (uint32_t)fhdr_v2->self, 0,
                               hdr_v2->boot_data.size - imximage_ivt_offset -
                               imximage_csf_size);
+                       printf("DCD Blocks:   00910000 %08x %08x\n",
+                              offs, be16_to_cpu(dcdlen));
                }
        } else {
                imx_header_v2_t *next_hdr_v2;