Hi Maxim, On 3/19/24 12:10, Maxim Moskalets wrote: > [You don't often get email from maximmo...@gmail.com. Learn why this is > important at > https://cas5-0-urlprotect.trendmicro.com:443/wis/clicktime/v1/query?url=https%3a%2f%2faka.ms%2fLearnAboutSenderIdentification&umid=d3728a4f-0e7b-4ded-94bc-5bd133b6deef&auth=d807158c60b7d2502abde8a2fc01f40662980862-7a67d937c0016d0d3292f79af55f0ce3d78f480b > ] > > Some operating systems (e.g. seL4) and embedded applications are ELF > images. It is convenient to use FIT-images to implement trusted boot. > Added "elf" image type for booting using bootm command.
Why not use objcopy to create a binary? --Sean > Signed-off-by: Maxim Moskalets <maximmo...@gmail.com> > --- > boot/bootm_os.c | 21 +++++++++++++++++++++ > boot/image-fit.c | 3 ++- > boot/image.c | 3 +++ > include/image.h | 1 + > 4 files changed, 27 insertions(+), 1 deletion(-) > > diff --git a/boot/bootm_os.c b/boot/bootm_os.c > index ccde72d22c..71bfb34926 100644 > --- a/boot/bootm_os.c > +++ b/boot/bootm_os.c > @@ -395,6 +395,24 @@ static int do_bootm_qnxelf(int flag, struct bootm_info > *bmi) > } > #endif > > +#if defined(CONFIG_CMD_ELF) > +static int do_bootm_elf(int flag, struct bootm_info *bmi) > +{ > + struct bootm_headers *images = bmi->images; > + char *local_args[2] = {NULL}; > + char str[19] = ""; /* "0x" + 16 digits + "\0" */ > + > + sprintf(str, "0x%lx", images->ep); /* write entry-point into string */ > + str[18] = '\0'; > + local_args[0] = bmi->argv[0]; > + local_args[1] = str; /* and provide it via the arguments */ > + > + do_bootelf(NULL, 0, 2, local_args); > + > + return 1; > +} > +#endif > + > #ifdef CONFIG_INTEGRITY > static int do_bootm_integrity(int flag, struct bootm_info *bmi) > { > @@ -536,6 +554,9 @@ static boot_os_fn *boot_os[] = { > #ifdef CONFIG_BOOTM_EFI > [IH_OS_EFI] = do_bootm_efi, > #endif > +#if defined(CONFIG_CMD_ELF) > + [IH_OS_ELF] = do_bootm_elf, > +#endif > }; > > /* Allow for arch specific config before we boot */ > diff --git a/boot/image-fit.c b/boot/image-fit.c > index 89e377563c..0419bef6d2 100644 > --- a/boot/image-fit.c > +++ b/boot/image-fit.c > @@ -2180,7 +2180,8 @@ int fit_image_load(struct bootm_headers *images, ulong > addr, > fit_image_check_os(fit, noffset, IH_OS_TEE) || > fit_image_check_os(fit, noffset, IH_OS_OPENRTOS) || > fit_image_check_os(fit, noffset, IH_OS_EFI) || > - fit_image_check_os(fit, noffset, IH_OS_VXWORKS); > + fit_image_check_os(fit, noffset, IH_OS_VXWORKS) || > + fit_image_check_os(fit, noffset, IH_OS_ELF); > > /* > * If either of the checks fail, we should report an error, but > diff --git a/boot/image.c b/boot/image.c > index 073931cd7a..5b88d6808c 100644 > --- a/boot/image.c > +++ b/boot/image.c > @@ -134,6 +134,9 @@ static const table_entry_t uimage_os[] = { > #endif > { IH_OS_OPENSBI, "opensbi", "RISC-V OpenSBI", }, > { IH_OS_EFI, "efi", "EFI Firmware" }, > +#ifdef CONFIG_CMD_ELF > + { IH_OS_ELF, "elf", "ELF Image" }, > +#endif > > { -1, "", "", }, > }; > diff --git a/include/image.h b/include/image.h > index 21de70f0c9..9a40bca22c 100644 > --- a/include/image.h > +++ b/include/image.h > @@ -100,6 +100,7 @@ enum { > IH_OS_TEE, /* Trusted Execution Environment */ > IH_OS_OPENSBI, /* RISC-V OpenSBI */ > IH_OS_EFI, /* EFI Firmware (e.g. GRUB2) */ > + IH_OS_ELF, /* ELF Image (e.g. seL4) */ > > IH_OS_COUNT, > }; > -- > 2.39.2 > [Embedded World 2024, SECO SpA]<https://www.messe-ticket.de/Nuernberg/embeddedworld2024/Register/ew24517689>