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@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@0x910000`. > > It supports to remove quotes to support Kconfig variable here. > > Signed-off-by: Denis Osterland-Heim > --- > 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@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@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@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/