diff --git a/boot/zephyr/CMakeLists.txt b/boot/zephyr/CMakeLists.txt index b9bf5178..ef79744b 100644 --- a/boot/zephyr/CMakeLists.txt +++ b/boot/zephyr/CMakeLists.txt @@ -302,3 +302,27 @@ zephyr_library_sources( ${BOOT_DIR}/zephyr/arm_cleanup.c ) endif() + +if(CONFIG_BOOT_IMAGE_ACCESS_HOOKS) + + if(IS_ABSOLUTE ${CONFIG_BOOT_IMAGE_ACCESS_HOOKS_FILE}) + if(EXISTS ${CONFIG_BOOT_IMAGE_ACCESS_HOOKS_FILE}) + set(HOOKS_FILE ${CONFIG_BOOT_IMAGE_ACCESS_HOOKS_FILE}) + endif() + elseif((DEFINED CONF_DIR) AND + (EXISTS ${CONF_DIR}/${CONFIG_BOOT_IMAGE_ACCESS_HOOKS_FILE})) + set(HOOKS_FILE ${CONF_DIR}/${CONFIG_BOOT_SIGNATURE_KEY_FILE}) + else(EXISTS ${BOOT_DIR}/zephyr/${CONFIG_BOOT_IMAGE_ACCESS_HOOKS_FILE}) + set(HOOKS_FILE ${BOOT_DIR}/zephyr/${CONFIG_BOOT_IMAGE_ACCESS_HOOKS_FILE}) + endif() + + + if(DEFINED HOOKS_FILE) + zephyr_library_sources( + ${HOOKS_FILE} + ) + else() + message(WARNING "Can't access hooks implementation file.") + endif() + +endif() diff --git a/boot/zephyr/Kconfig b/boot/zephyr/Kconfig index 43715892..f612b6dc 100644 --- a/boot/zephyr/Kconfig +++ b/boot/zephyr/Kconfig @@ -642,6 +642,24 @@ config BOOT_WATCHDOG_FEED Enables implementation of MCUBOOT_WATCHDOG_FEED() macro which is used to feed watchdog while doing time consuming operations. +config BOOT_IMAGE_ACCESS_HOOKS + bool "Enable hooks for overriding MCUboot's native routines" + help + Allow to provide procedures for override or extend native + MCUboot's routines required for access the image data and the image + update. + +config BOOT_IMAGE_ACCESS_HOOKS_FILE + string "Hooks implementation file path" + depends on BOOT_IMAGE_ACCESS_HOOKS + help + Path to the file which implements hooks. + You can use either absolute or relative path. + In case relative path is used, the build system assumes that it starts + from the directory where the MCUBoot KConfig configuration file is + located. If the key file is not there, the build system uses relative + path that starts from the zephyr port cmake directory (boot/zephyr/). + endmenu config MCUBOOT_DEVICE_SETTINGS diff --git a/boot/zephyr/include/mcuboot_config/mcuboot_config.h b/boot/zephyr/include/mcuboot_config/mcuboot_config.h index 4719d6d2..56839b65 100644 --- a/boot/zephyr/include/mcuboot_config/mcuboot_config.h +++ b/boot/zephyr/include/mcuboot_config/mcuboot_config.h @@ -163,6 +163,10 @@ #define MCUBOOT_MGMT_CUSTOM_IMG_LIST #endif +#ifdef CONFIG_BOOT_IMAGE_ACCESS_HOOKS +#define MCUBOOT_IMAGE_ACCESS_HOOKS +#endif + /* * The configuration option enables direct image upload with the * serial recovery.