boot/zephyr: Kconfig for hooks enabling
Added global property which allows to enable hooks
implementations.
Signed-off-by: Andrzej Puzdrowski <andrzej.puzdrowski@nordicsemi.no>
diff --git a/boot/zephyr/CMakeLists.txt b/boot/zephyr/CMakeLists.txt
index b9bf517..ef79744 100644
--- a/boot/zephyr/CMakeLists.txt
+++ b/boot/zephyr/CMakeLists.txt
@@ -302,3 +302,27 @@
${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 4371589..f612b6d 100644
--- a/boot/zephyr/Kconfig
+++ b/boot/zephyr/Kconfig
@@ -642,6 +642,24 @@
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 4719d6d..56839b6 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.