[PATCH] scripts: imx: add support for additional hab Blocks

Denis Osterland-Heim denis.osterland at diehl.com
Mon Mar 22 12:06:32 GMT 2021


Am Montag, den 22.03.2021, 13:02 +0100 schrieb Denis Osterland-Heim:
> This allows to specifiy additional signed blocks
> in the format `offset+size at address` within the imximg.
>
> It is needed by the uuu tool, which loads the image different to
> the imx-usb-loader. It loads the DCD always to 0x910000 in the OCRAM.
> So this area have to be signed as well.
>
> In my case this needs `hab_blocks 0x42c+0x1f0 at 0x910000`.
>
> It supports to remove quotes to support Kconfig variable here.
>
> Signed-off-by: Denis Osterland-Heim <denis.osterland at diehl.com>
> ---
>  scripts/imx/imx.c | 52 +++++++++++++++++++++++++++++++++++++++++++++--
>  1 file changed, 50 insertions(+), 2 deletions(-)
>
> diff --git a/scripts/imx/imx.c b/scripts/imx/imx.c
> index 6b8dabd04..ce18778f5 100644
> --- a/scripts/imx/imx.c
> +++ b/scripts/imx/imx.c
> @@ -328,6 +328,7 @@ static int do_hab_blocks(struct config_data *data, int argc, char *argv[])
>  {
>  char *str;
>  int ret;
> +int i;
>  uint32_t signed_size = data->load_size;
>  uint32_t offset = data->image_ivt_offset;
>
> @@ -352,7 +353,7 @@ static int do_hab_blocks(struct config_data *data, int argc, char *argv[])
>  }
>
>  if (signed_size > 0) {
> -ret = asprintf(&str, "Blocks = 0x%08x 0x%08x 0x%08x \"%s\"\n",
> +ret = asprintf(&str, "Blocks = 0x%08x 0x%08x 0x%08x \"%s\"",
>  data->image_load_addr + data->image_ivt_offset, offset,
>  signed_size - data->image_ivt_offset, data->outfile);
>  } else {
> @@ -365,10 +366,57 @@ static int do_hab_blocks(struct config_data *data, int argc, char *argv[])
>  return -ENOMEM;
>
>  ret = hab_add_str(data, str);
> +free(str);
>  if (ret)
>  return ret;
>
> -return 0;
> +for (i = 1; i < argc; i++) {
> +uint32_t addr;
> +uint32_t off;
> +uint32_t size;
> +char *b;
> +char *e;
> +
> +b = argv[i];
> +if (*b == '"') // remove leading qoute
> +b++;
> +if (!*b || *b == '"')
> +continue; // skip if empty
> +
> +off = strtoul(b, &e, 0);
> +if (*e != '+') {
> +fprintf(stderr, "failed to find '+' in '%s'\n", b);
> +fprintf(stderr, "format off+size at addr expected, but given: %s\n", argv[i]);
> +return -EINVAL;
> +}
> +
> +b = e + 1;
> +size = strtoul(b, &e, 0);
> +if (*e != '@') {
> +fprintf(stderr, "failed to find '@' in '%s'\n", b);
> +fprintf(stderr, "format off+size at addr expected, but given: %s\n", argv[i]);
> +return -EINVAL;
> +}
> +
> +b = e + 1;
> +addr = strtoul(b, &e, 0);
> +if (*e && *e != '"') { // ignore trailing qoute
> +fprintf(stderr, "unexpected char at the end: '%c'\n", *e);
> +fprintf(stderr, "format off+size at addr expected, but given: %s\n", argv[i]);
> +return -EINVAL;
> +}
> +
> +ret = asprintf(&str, ", 0x%08x 0x%08x 0x%08x \"%s\"", addr, off, size, data->outfile);
> +if (ret < 0)
> +return -ENOMEM;
> +
> +ret = hab_add_str(data, str);
> +free(str);
> +if (ret)
> +return ret;
> +}
> +
> +return hab_add_str(data, "\n");
>  }
>
>  static int do_hab_encrypt(struct config_data *data, int argc, char *argv[])
Diehl Connectivity Solutions GmbH
Geschäftsführung: Horst Leonberger
Sitz der Gesellschaft: Nürnberg - Registergericht: Amtsgericht
Nürnberg: HRB 32315

________________________________

Der Inhalt der vorstehenden E-Mail ist nicht rechtlich bindend. Diese E-Mail enthaelt vertrauliche und/oder rechtlich geschuetzte Informationen.
Informieren Sie uns bitte, wenn Sie diese E-Mail faelschlicherweise erhalten haben. Bitte loeschen Sie in diesem Fall die Nachricht.
Jede unerlaubte Form der Reproduktion, Bekanntgabe, Aenderung, Verteilung und/oder Publikation dieser E-Mail ist strengstens untersagt.

- Informationen zum Datenschutz, insbesondere zu Ihren Rechten, erhalten Sie unter:

https://www.diehl.com/group/de/transparenz-und-informationspflichten/

The contents of the above mentioned e-mail is not legally binding. This e-mail contains confidential and/or legally protected information. Please inform us if you have received this e-mail by
mistake and delete it in such a case. Each unauthorized reproduction, disclosure, alteration, distribution and/or publication of this e-mail is strictly prohibited.

- For general information on data protection and your respective rights please visit:

https://www.diehl.com/group/en/transparency-and-information-obligations/


-------------- next part --------------
A non-text attachment was scrubbed...
Name: 1616414542.Vfd01Idfd8d0M526972.mbox
Type: application/mbox
Size: 3420 bytes
Desc: 1616414542.Vfd01Idfd8d0M526972.mbox
URL: <http://lists.infradead.org/pipermail/barebox/attachments/20210322/3211e710/attachment.mbox>


More information about the barebox mailing list