
Hi Maxim,
On 3/19/24 12:10, Maxim Moskalets wrote:
[You don't often get email from maximmosk4@gmail.com. Learn why this is important at https://cas5-0-urlprotect.trendmicro.com:443/wis/clicktime/v1/query?url=http... ]
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 maximmosk4@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