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/cypress/common_libs.mk b/boot/cypress/common_libs.mk
index f5d11f8..d380107 100644
--- a/boot/cypress/common_libs.mk
+++ b/boot/cypress/common_libs.mk
@@ -28,62 +28,124 @@
 ################################################################################
 # PDL library
 ################################################################################
-PSOC6_LIBS_PATH = $(PRJ_DIR)/libs
+CY_LIBS_PATH = $(PRJ_DIR)/libs
 
-ifeq ($(CORE),CM0P)
-CORE_SIFFX=m0plus
-else
-CORE_SIFFX=m4
-endif
+# Collect common source files for PDL
+SOURCES_PDL := $(wildcard $(CY_LIBS_PATH)/mtb-pdl-cat1/drivers/source/*.c)
+SOURCES_PDL += $(wildcard $(CY_LIBS_PATH)/mtb-pdl-cat1/devices/COMPONENT_CAT$(PDL_CAT_SUFFIX)/source/*.c)
 
-# Collect source files for PDL
-SOURCES_PDL := $(wildcard $(PSOC6_LIBS_PATH)/mtb-pdl-cat1/drivers/source/*.c)
-SOURCES_PDL += $(wildcard $(PSOC6_LIBS_PATH)/mtb-pdl-cat1/devices/COMPONENT_CAT1A/source/*.c)
+COMPONENT_CORE_PATH := $(CY_LIBS_PATH)/mtb-pdl-cat1/devices/COMPONENT_CAT$(PDL_CAT_SUFFIX)/templates/COMPONENT_MTB/COMPONENT_$(CORE)
 
 # PDL startup related files
-SOURCES_PDL_STARTUP := $(PSOC6_LIBS_PATH)/mtb-pdl-cat1/devices/COMPONENT_CAT1A/templates/COMPONENT_MTB/COMPONENT_$(CORE)/system_psoc6_c$(CORE_SIFFX).c
+SYSTEM_FILE_NAME := $(PLATFORM_SYSTEM_FILE_NAME)
+SOURCES_PDL_SYSTEM := $(COMPONENT_CORE_PATH)/$(SYSTEM_FILE_NAME)
+SOURCES_PDL_STARTUP := $(COMPONENT_CORE_PATH)/$(PLATFORM_SOURCES_PDL_STARTUP)
+
+# Collect source files for Retarget-io
+SOURCES_RETARGET_IO := $(PLATFORM_SOURCES_RETARGET_IO)
+
+# HAL source files
+SOURCES_HAL := $(PLATFORM_SOURCES_HAL)
+
+# Add platform folder to build
+SOURCES_PLATFORM := $(wildcard $(PRJ_DIR)/platforms/$(FAMILY)/*.c)
+SOURCES_PLATFORM += $(wildcard $(PRJ_DIR)/platforms/$(FAMILY)/secure/*.c)
 
 # PDL related include directories
-INCLUDE_DIRS_PDL := $(PSOC6_LIBS_PATH)/mtb-pdl-cat1/drivers/include
-INCLUDE_DIRS_PDL += $(PSOC6_LIBS_PATH)/mtb-pdl-cat1/devices/COMPONENT_CAT1A/include/ip
-INCLUDE_DIRS_PDL += $(PSOC6_LIBS_PATH)/mtb-pdl-cat1/devices/COMPONENT_CAT1A/include
-INCLUDE_DIRS_PDL += $(PSOC6_LIBS_PATH)/mtb-pdl-cat1/cmsis/include
-
-# PDL startup related files
-INCLUDE_DIRS_PDL_STARTUP := $(PSOC6_LIBS_PATH)/mtb-pdl-cat1/devices/COMPONENT_CAT1A/templates/COMPONENT_MTB
+INCLUDE_DIRS_PDL := $(CY_LIBS_PATH)/mtb-pdl-cat1/drivers/include
+INCLUDE_DIRS_PDL += $(CY_LIBS_PATH)/mtb-pdl-cat1/devices/COMPONENT_CAT$(PDL_CAT_SUFFIX)/include/ip
+INCLUDE_DIRS_PDL += $(CY_LIBS_PATH)/mtb-pdl-cat1/devices/COMPONENT_CAT$(PDL_CAT_SUFFIX)/include
+INCLUDE_DIRS_PDL += $(CY_LIBS_PATH)/mtb-pdl-cat1/cmsis/include
+INCLUDE_DIRS_PDL += $(CY_LIBS_PATH)/mtb-pdl-cat1/devices/COMPONENT_CAT$(PDL_CAT_SUFFIX)/templates/COMPONENT_MTB
 
 # core-libs related include directories
-INCLUDE_DIRS_CORE_LIB := $(PSOC6_LIBS_PATH)/core-lib/include
+INCLUDE_DIRS_CORE_LIB := $(CY_LIBS_PATH)/core-lib/include
 
-STARTUP_FILE := $(PSOC6_LIBS_PATH)/mtb-pdl-cat1/devices/COMPONENT_CAT1A/templates/COMPONENT_MTB/COMPONENT_$(CORE)/TOOLCHAIN_$(COMPILER)/startup_psoc6_$(PLATFORM_SUFFIX)_c$(CORE_SIFFX)
+# PDL startup related files
+INCLUDE_DIRS_PDL_STARTUP += $(COMPONENT_CORE_PATH)/HEADER_FILES
 
-ifeq ($(COMPILER), GCC_ARM)
-	ASM_FILES_STARTUP := $(STARTUP_FILE).S
-else
-$(error Only GCC ARM is supported at this moment)
-endif
+# Retarget-io related include directories
+INCLUDE_DIRS_RETARGET_IO := $(PLATFORM_INCLUDE_DIRS_RETARGET_IO)
 
+# HAL include directories files
+INCLUDE_DIRS_HAL := $(PLATFORM_INCLUDE_DIRS_HAL)
+
+# Include platforms folder
+INCLUDE_DIRS_PLATFORM := $(PRJ_DIR)/platforms/$(FAMILY)
+INCLUDE_DIRS_PLATFORM += $(PRJ_DIR)/platforms/$(FAMILY)/secure
+
+# Assembler startup file for platform
+ASM_FILES_STARTUP := $(PLATFORM_STARTUP_FILE)
 
 # Collected source files for libraries
 SOURCES_LIBS := $(SOURCES_PDL)
+SOURCES_LIBS += $(SOURCES_PDL_SYSTEM)
 SOURCES_LIBS += $(SOURCES_PDL_STARTUP)
+SOURCES_LIBS += $(SOURCES_PDL_RUNTIME)
+SOURCES_LIBS += $(SOURCES_HAL)
+SOURCES_LIBS += $(SOURCES_RETARGET_IO)
 
 # Collected include directories for libraries
 INCLUDE_DIRS_LIBS := $(addprefix -I,$(INCLUDE_DIRS_PDL))
 INCLUDE_DIRS_LIBS += $(addprefix -I,$(INCLUDE_DIRS_PDL_STARTUP))
 INCLUDE_DIRS_LIBS += $(addprefix -I,$(INCLUDE_DIRS_CORE_LIB))
+INCLUDE_DIRS_LIBS += $(addprefix -I,$(INCLUDE_DIRS_HAL))
+INCLUDE_DIRS_LIBS += $(addprefix -I,$(INCLUDE_DIRS_PLATFORM))
+INCLUDE_DIRS_LIBS += $(addprefix -I,$(INCLUDE_DIRS_RETARGET_IO))
 
-ASM_FILES_PDL :=
-ifeq ($(COMPILER), GCC_ARM)
-ASM_FILES_PDL += $(PSOC6_LIBS_PATH)/mtb-pdl-cat1/drivers/source/TOOLCHAIN_GCC_ARM/cy_syslib_gcc.S
-else
-$(error Only GCC ARM is supported at this moment)
-endif
+# Syslib files
+ASM_FILES_PDL += $(CY_LIBS_PATH)/mtb-pdl-cat1/drivers/source/TOOLCHAIN_GCC_ARM/cy_syslib_gcc.S
 
 ASM_FILES_LIBS := $(ASM_FILES_PDL)
 
 # Add define for PDL version
 DEFINES_PDL += -DPDL_VERSION=$(PDL_VERSION)
 
-DEFINES_LIBS := $(DEFINES_PLATFORM)
+DEFINES_LIBS := $(PLATFORM_DEFINES)
+DEFINES_LIBS += $(PLATFORM_DEFINES_LIBS)
 DEFINES_LIBS += $(DEFINES_PDL)
+DEFINES_LIBS += -DCOMPONENT_CAT1
+DEFINES_LIBS += -DCOMPONENT_CAT$(PDL_CAT_SUFFIX)
+
+###############################################################################
+# Print debug information about all settings used and/or set in this file
+ifeq ($(VERBOSE), 1)
+$(info #### common_libs.mk ####)
+$(info ASM_FILES_LIBS --> $(ASM_FILES_LIBS))
+$(info ASM_FILES_PDL <-> $(ASM_FILES_PDL))
+$(info ASM_FILES_STARTUP --> $(ASM_FILES_STARTUP))
+$(info COMPONENT_CORE_PATH <-> $(COMPONENT_CORE_PATH))
+$(info CORE <-- $(CORE))
+$(info CY_LIBS_PATH <-- $(CY_LIBS_PATH))
+$(info DEFINES_LIBS --> $(DEFINES_LIBS))
+$(info DEFINES_PDL <-> $(DEFINES_PDL))
+$(info FAMILY <-- $(FAMILY))
+$(info INCLUDE_DIRS_CORE_LIB <-> $(INCLUDE_DIRS_CORE_LIB))
+$(info INCLUDE_DIRS_HAL <-> $(INCLUDE_DIRS_HAL))
+$(info INCLUDE_DIRS_LIBS --> $(INCLUDE_DIRS_LIBS))
+$(info INCLUDE_DIRS_PDL <-> $(INCLUDE_DIRS_PDL))
+$(info INCLUDE_DIRS_PDL_STARTUP <-> $(INCLUDE_DIRS_PDL_STARTUP))
+$(info INCLUDE_DIRS_PLATFORM <-> $(INCLUDE_DIRS_PLATFORM))
+$(info INCLUDE_DIRS_RETARGET_IO <-> $(INCLUDE_DIRS_RETARGET_IO))
+$(info PDL_CAT_SUFFIX <-- $(PDL_CAT_SUFFIX))
+$(info PDL_VERSION <-- $(PDL_VERSION))
+$(info PLATFORM_DEFINES <-- $(PLATFORM_DEFINES))
+$(info PLATFORM_DEFINES_LIBS <-- $(PLATFORM_DEFINES_LIBS))
+$(info PLATFORM_INCLUDE_DIRS_HAL <-- $(PLATFORM_INCLUDE_DIRS_HAL))
+$(info PLATFORM_INCLUDE_DIRS_RETARGET_IO <-- $(PLATFORM_INCLUDE_DIRS_RETARGET_IO))
+$(info PLATFORM_SOURCES_HAL <-- $(PLATFORM_SOURCES_HAL))
+$(info PLATFORM_SOURCES_PDL_STARTUP <-- $(PLATFORM_SOURCES_PDL_STARTUP))
+$(info PLATFORM_SOURCES_RETARGET_IO <-- $(PLATFORM_SOURCES_RETARGET_IO))
+$(info PLATFORM_STARTUP_FILE <-- $(PLATFORM_STARTUP_FILE))
+$(info PLATFORM_SYSTEM_FILE_NAME <-- $(PLATFORM_SYSTEM_FILE_NAME))
+$(info PRJ_DIR <-- $(PRJ_DIR))
+$(info SOURCES_HAL <-> $(SOURCES_HAL))
+$(info SOURCES_LIBS --> $(SOURCES_LIBS))
+$(info SOURCES_PDL <-> $(SOURCES_PDL))
+$(info SOURCES_PDL_RUNTIME <-- $(SOURCES_PDL_RUNTIME))
+$(info SOURCES_PDL_STARTUP <-> $(SOURCES_PDL_STARTUP))
+$(info SOURCES_PDL_SYSTEM <-> $(SOURCES_PDL_SYSTEM))
+$(info SOURCES_PLATFORM --> $(SOURCES_PLATFORM))
+$(info SOURCES_RETARGET_IO <-> $(SOURCES_RETARGET_IO))
+$(info SYSTEM_FILE_NAME <-> $(SYSTEM_FILE_NAME))
+endif