Infineon: Add cyw20829 platform, shared slot feature, json memory map, psoc6 xip
Based in 1.8.0 release of MCUBoot library
This commit adds CYW20829 Infineon platform support with following capabilities:
1. Overwrite and swap upgrade mode support
2. Multi-image with up to 4 images
3. Hardware security counter is supported for CYW20829 platform
Add XIP support for PSOC6 platform - place BOOT slot in external memory and execute it in place using SMIF in XIP mode
and some new features for Infineon devices.
1. Shared upgrade slot feature - use one shared area for upgrade slots of multiple images
2. Memory map defined using JSON file - define memory regions for bootloader and user app in conventional way using JSON file
diff --git a/boot/zephyr/Kconfig b/boot/zephyr/Kconfig
index 2e7ac39..5d71cd2 100644
--- a/boot/zephyr/Kconfig
+++ b/boot/zephyr/Kconfig
@@ -30,7 +30,6 @@
# When building for ECDSA, we use our own copy of mbedTLS, so the
# Zephyr one must not be enabled or the MBEDTLS_CONFIG_FILE macros
# will collide.
- depends on ! MBEDTLS
help
Use TinyCrypt for crypto primitives.
@@ -41,7 +40,6 @@
# When building for ECDSA, we use our own copy of mbedTLS, so the
# Zephyr one must not be enabled or the MBEDTLS_CONFIG_FILE macros
# will collide.
- depends on ! MBEDTLS
help
Use cc310 for crypto primitives.
@@ -298,15 +296,6 @@
memory usage; larger values allow it to support larger images.
If unsure, leave at the default value.
-config BOOT_ERASE_PROGRESSIVELY
- bool "Erase flash progressively when receiving new firmware"
- default y if SOC_FAMILY_NRF
- help
- If enabled, flash is erased as necessary when receiving new firmware,
- instead of erasing the whole image slot at once. This is necessary
- on some hardware that has long erase times, to prevent long wait
- times at the beginning of the DFU process.
-
config MEASURED_BOOT
bool "Store the boot state/measurements in shared memory"
default n
@@ -364,7 +353,7 @@
config BOOT_USB_DFU_WAIT
bool "Wait for a prescribed duration to see if USB DFU is invoked"
- select USB
+ select USB_DEVICE_STACK
select USB_DFU_CLASS
select IMG_MANAGER
help
@@ -374,7 +363,7 @@
config BOOT_USB_DFU_GPIO
bool "Use GPIO to detect whether to trigger DFU mode"
- select USB
+ select USB_DEVICE_STACK
select USB_DFU_CLASS
select IMG_MANAGER
help
@@ -403,7 +392,8 @@
default 6 if BOARD_NRF9160DK_NRF9160
default 11 if BOARD_NRF52840DK_NRF52840
default 13 if BOARD_NRF52DK_NRF52832
- default 23 if BOARD_NRF5340_DK_NRF5340_CPUAPP || BOARD_NRF5340_DK_NRF5340_CPUAPPNS
+ default 23 if BOARD_NRF5340_DK_NRF5340_CPUAPP || BOARD_NRF5340_DK_NRF5340_CPUAPP_NS
+ default 43 if BOARD_BL5340_DVK_CPUAPP || BOARD_BL5340_DVK_CPUAPP_NS
help
Pin on the DFU detect port that triggers DFU mode.
@@ -468,7 +458,6 @@
select SERIAL
select UART_INTERRUPT_DRIVEN
select BASE64
- select TINYCBOR
help
If y, enables a serial-port based update mode. This allows
MCUboot itself to load update images into flash over a UART.
@@ -487,12 +476,25 @@
config BOOT_SERIAL_CDC_ACM
bool "CDC ACM"
- select USB
select USB_DEVICE_STACK
- select USB_CDC_ACM
endchoice
+config MCUBOOT_SERIAL_DIRECT_IMAGE_UPLOAD
+ bool "Allow to select image number for DFU"
+ help
+ With the option enabled, the mcuboot serial recovery will
+ respect the "image" field in mcumgr image update frame
+ header.
+ The mapping of image number to partition is as follows:
+ 0 -> default behaviour, same as 1;
+ 1 -> image-0 (primary slot of the first image);
+ 2 -> image-1 (secondary slot of the first image);
+ 3 -> image-2;
+ 4 -> image-3.
+ Note that 0 is default upload target when no explicit
+ selection is done.
+
config MCUBOOT_INDICATION_LED
bool "Turns on LED indication when device is in DFU"
default n
@@ -518,9 +520,9 @@
int "Pin to trigger serial recovery mode"
default 6 if BOARD_NRF9160DK_NRF9160
default 11 if BOARD_NRF52840DK_NRF52840
- default 13 if BOARD_NRF52DK_NRF52832
- default 23 if BOARD_NRF5340PDK_NRF5340_CPUAPP || BOARD_NRF5340PDK_NRF5340_CPUAPPNS || \
- BOARD_NRF5340DK_NRF5340_CPUAPP || BOARD_NRF5340DK_NRF5340_CPUAPPNS
+ default 13 if BOARD_NRF52DK_NRF52832 || BOARD_NRF52833DK_NRF52833
+ default 23 if BOARD_NRF5340PDK_NRF5340_CPUAPP || BOARD_NRF5340PDK_NRF5340_CPUAPP_NS || \
+ BOARD_NRF5340DK_NRF5340_CPUAPP || BOARD_NRF5340DK_NRF5340_CPUAPP_NS
help
Pin on the serial detect port that triggers serial recovery mode.
@@ -540,18 +542,40 @@
Useful for powering on when using the same button as
the one used to place the device in bootloader mode.
-# Workaround for not being able to have commas in macro arguments
-DT_CHOSEN_Z_CONSOLE := zephyr,console
-
-config RECOVERY_UART_DEV_NAME
- string "UART Device Name for Recovery UART"
- default "$(dt_chosen_label,$(DT_CHOSEN_Z_CONSOLE))" if HAS_DTS
- default "UART_0"
- depends on BOOT_SERIAL_UART
+config BOOT_ERASE_PROGRESSIVELY
+ bool "Erase flash progressively when receiving new firmware"
+ default y if SOC_FAMILY_NRF
help
- This option specifies the name of UART device to be used for
- serial recovery.
+ If enabled, flash is erased as necessary when receiving new firmware,
+ instead of erasing the whole image slot at once. This is necessary
+ on some hardware that has long erase times, to prevent long wait
+ times at the beginning of the DFU process.
+menuconfig ENABLE_MGMT_PERUSER
+ bool "Enable system specific mcumgr commands"
+ help
+ The option enables processing of system specific mcumgr commands;
+ system specific commands are within group MGMT_GROUP_ID_PERUSER (64)
+ and above, as defined within mcumgr library.
+ These are system specific command and system specific implementation
+ function is required to process these commands.
+
+if ENABLE_MGMT_PERUSER
+config BOOT_MGMT_CUSTOM_STORAGE_ERASE
+ bool "Enable storage erase command"
+ help
+ The option enables mcumgr command that allows to erase storage
+ partition.
+ Note that the storage partition needs to be defined, in DTS, otherwise
+ enabling the option will cause a compilation to fail.
+
+config BOOT_MGMT_CUSTOM_IMG_LIST
+ bool "Enable custom image list command"
+ help
+ The option enables command which returns versions and installation
+ statuses (custom property) for all images.
+
+endif # ENABLE_MGMT_PERUSER
endif # MCUBOOT_SERIAL
config BOOT_INTR_VEC_RELOC
@@ -604,6 +628,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
@@ -638,10 +680,6 @@
default n if SOC_FAMILY_NRF
default y
-config LOG_IMMEDIATE
- default n if MULTITHREADING
- default y
-
config LOG_PROCESS_THREAD
default n # mcuboot has its own log processing thread