Commit 14961292 authored by Jamie McCrae's avatar Jamie McCrae Committed by Jamie
Browse files

boot: zephyr: Add optional MCUboot boot banner



Adds an optional MCUboot boot banner which displays the MCUboot
version and zephyr version

Signed-off-by: default avatarJamie McCrae <jamie.mccrae@nordicsemi.no>
parent 7174dd2b
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -358,6 +358,11 @@ zephyr_library_sources(
)
endif()

if(CONFIG_MCUBOOT_BOOT_BANNER)
  # Replace Zephyr's boot banner with the MCUboot one
  zephyr_sources(kernel/banner.c)
endif()

if(SYSBUILD)
  function(align_up num align result)
    math(EXPR out "(((${num}) + ((${align}) - 1)) & ~((${align}) - 1))")
+17 −0
Original line number Diff line number Diff line
@@ -700,6 +700,23 @@ config BOOT_DISABLE_CACHES
	  increases protection against data leakage from MCUboot to applications via
	  these caches.

config MCUBOOT_BOOT_BANNER
	bool "Use MCUboot boot banner"
	depends on BOOT_BANNER
	depends on "$(APP_VERSION_EXTENDED_STRING)" != ""
	default y
	help
	  Uses a MCUboot boot banner instead of the default zephyr one, which will output the
	  MCUboot name and version, followed by the zephyr name and version.

	  For example:

	    *** Booting MCUboot v2.0.0-72-g8c0e36c88663 ***
	    *** Using Zephyr OS build v3.6.0-2607-gd0be2010c31f ***

config BOOT_BANNER_STRING
        default "Using Zephyr OS build" if MCUBOOT_BOOT_BANNER

endmenu

config MCUBOOT_DEVICE_SETTINGS
+46 −0
Original line number Diff line number Diff line
/*
 * Copyright (c) 2020 Intel Corporation
 * Copyright (c) 2024 Nordic Semiconductor ASA
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include <zephyr/kernel.h>
#include <zephyr/init.h>
#include <zephyr/device.h>
#include <version.h>
#include <app_version.h>

#if defined(CONFIG_BOOT_DELAY) && (CONFIG_BOOT_DELAY > 0)
#define DELAY_STR STRINGIFY(CONFIG_BOOT_DELAY)
#define BANNER_POSTFIX " (delayed boot " DELAY_STR "ms)"
#else
#define BANNER_POSTFIX ""
#endif /* defined(CONFIG_BOOT_DELAY) && (CONFIG_BOOT_DELAY > 0) */

#ifndef BANNER_VERSION
#if defined(BUILD_VERSION) && !IS_EMPTY(BUILD_VERSION)
#define BANNER_VERSION STRINGIFY(BUILD_VERSION)
#else
#define BANNER_VERSION KERNEL_VERSION_STRING
#endif /* BUILD_VERSION */
#endif /* !BANNER_VERSION */

#if defined(APP_BUILD_VERSION)
#define APPLICATION_BANNER_VERSION STRINGIFY(APP_BUILD_VERSION)
#elif defined(APP_VERSION_EXTENDED_STRING)
#define APPLICATION_BANNER_VERSION APP_VERSION_EXTENDED_STRING
#endif

#if defined(APPLICATION_BANNER_VERSION)
void boot_banner(void)
{
#if defined(CONFIG_BOOT_DELAY) && (CONFIG_BOOT_DELAY > 0)
	printk("***** delaying boot " DELAY_STR "ms (per build configuration) *****\n");
	k_busy_wait(CONFIG_BOOT_DELAY * USEC_PER_MSEC);
#endif /* defined(CONFIG_BOOT_DELAY) && (CONFIG_BOOT_DELAY > 0) */

	printk("*** Booting MCUboot " APPLICATION_BANNER_VERSION " ***\n");
	printk("*** " CONFIG_BOOT_BANNER_STRING " " BANNER_VERSION BANNER_POSTFIX " ***\n");
}
#endif /* APP_BUILD_VERSION */