Infineon: Add support for CYW89829 devices, improve swap with status algorithm speed
diff --git a/boot/cypress/BlinkyApp/BlinkyApp.md b/boot/cypress/BlinkyApp/BlinkyApp.md
index dc29c4c..e85f239 100644
--- a/boot/cypress/BlinkyApp/BlinkyApp.md
+++ b/boot/cypress/BlinkyApp/BlinkyApp.md
@@ -4,7 +4,17 @@
 
 Implements a simple Blinky LED application to demonstrate the MCUBootApp bootloader application operation for the boot and upgrade processes.
 
-It is validated and started by MCUBootApp, which is running on the CM0p core of PSoC™ 6 devices, or CM33 core for the CYW20829 device.
+This demo supports PSoC™ 6 chips with the 1M-, 2M-, and 512K-flash on board; XMC7200, XMC7100; CYW20829/CYW89829 chips with no internal flash.
+The evaluation kits are:
+* `CY8CPROTO-062-4343W`
+* `CY8CKIT-062-WIFI-BT`
+* `CY8CPROTO-062S3-4343W`
+* `CYW920829M2EVB-01`
+* `CYW989829M2EVB-01`
+* `CYBLE-416045-EVAL`
+* `CY8CPROTO-063-BLE`
+* `CY8CKIT-062-BLE`
+* `KIT_XMC72_EVK`
 
 Functionality:
 
@@ -45,7 +55,7 @@
 These values are set by specifying the following macros (default values shown):
 `SLOT_SIZE ?= 0x10000` - for slot located in internal flash of PSoC™ 6 chips
 `SLOT_SIZE ?= 0x40200` - for slot located in external flash of PsoC™ 6 kits
-`SLOT_SIZE ?= 0x20000` - for slot located in external flash of CYW20829 kits
+`SLOT_SIZE ?= 0x20000` - for slot located in external flash of CYW20829/CYW89829 kits
 
 During pre-build action, the GCC preprocessor is used to generate the target linker script from a template `BlinkyApp_template.ld`.
 
@@ -55,11 +65,11 @@
 
 ### Building an application
 
-Toolchain is set by default in `toolchains.mk` file, depending on `COMPILER` makefile variable. MCUBoot is currently support only `GCC_ARM` as compiler. Toolchain path can be redefined, by setting `TOOLCHAIN_PATH` build flag to desired toolchain path. Below is an example on how to set toolchain path from **ModusToolbox™ IDE 3.0**:
+Toolchain is set by default in `toolchains.mk` file, depending on `COMPILER` makefile variable. MCUBoot is currently support only `GCC_ARM` as compiler. Toolchain path can be redefined, by setting `TOOLCHAIN_PATH` build flag to desired toolchain path. Below is an example on how to set toolchain path from **ModusToolbox™ IDE**:
 
-    make clean_boot app APP_NAME=BlinkyApp PLATFORM=PSOC_062_2M BUILDCFG=Debug FLASH_MAP=platforms/memory/PSOC6/flashmap/psoc6_swap_single.json TOOLCHAIN_PATH=c:/Users/${USERNAME}/ModusToolbox/tools_3.0/gcc
+    make clean_boot app APP_NAME=BlinkyApp PLATFORM=PSOC_062_2M BUILDCFG=Debug FLASH_MAP=platforms/memory/PSOC6/flashmap/psoc6_swap_single.json TOOLCHAIN_PATH=c:/Users/${USERNAME}/ModusToolbox/tools_3.2/gcc
 
-    make clean_boot app APP_NAME=BlinkyApp PLATFORM=XMC7200 BUILDCFG=Debug FLASH_MAP=platforms/memory/XMC7000/flashmap/xmc7000_overwrite_single.json PLATFORM_CONFIG=platforms/memory/XMC7000/flashmap/xmc7200_platform.json CORE=CM7 APP_CORE=CM7 CORE_ID=0 IMG_TYPE=BOOT IMG_ID=1 TOOLCHAIN_PATH=c:/Users/${USERNAME}/ModusToolbox/tools_3.0/gcc
+    make clean_boot app APP_NAME=BlinkyApp PLATFORM=XMC7200 BUILDCFG=Debug FLASH_MAP=platforms/memory/XMC7000/flashmap/xmc7000_overwrite_single.json PLATFORM_CONFIG=platforms/memory/XMC7000/flashmap/xmc7200_platform.json CORE=CM7 APP_CORE=CM7 CORE_ID=0 IMG_TYPE=BOOT IMG_ID=1 TOOLCHAIN_PATH=c:/Users/${USERNAME}/ModusToolbox/tools_3.2/gcc
 
 The supported platforms:
 
@@ -68,6 +78,7 @@
 * PSOC_062_512K
 * PSOC_063_1M
 * CYW20829
+* CYW89829
 * XMC7200
 * XMC7100
 
@@ -130,7 +141,7 @@
 
     make clean_upgrade app APP_NAME=BlinkyApp PLATFORM=PSOC_062_2M IMG_TYPE=UPGRADE FLASH_MAP=platforms/memory/PSOC6/flashmap/psoc6_overwrite_single_smif.json IMG_ID=1
 
-`ERASED_VALUE` defines the memory cell contents in the erased state. It is `0x00` for PSoC™ 6 internal flash and `0xff` for S25FL512S. For `CYW20289` default value is `0xff` since it only uses an external flash.
+`ERASED_VALUE` defines the memory cell contents in the erased state. It is `0x00` for PSoC™ 6 internal flash and `0xff` for S25FL512S. For `CYW20829` default value is `0xff` since it only uses an external flash.
 
 In the multi-image configuration, an upgrade image for the second application is built using the command:
 
@@ -146,7 +157,7 @@
 
 This also suggests that the user has already placed a corresponding *.pem key in the \keys folder. The key variables are defined in the root Makefile as SIGN_KEY_FILE and ENC_KEY_FILE
 
-Refer to [CYW20829.md](../platforms/CYW20829.md) for details of encrypted image build for the CYW20289 platfrom.
+Refer to [CYW20829.md](../platforms/CYW20829.md) for details of encrypted image build for the CYW20829/CYW89829 platforms.
 
 ### Complete build flags description
 - `BUILDCFG` - The configuration type
@@ -159,7 +170,8 @@
     - `PSOC_062_2M`
     - `PSOC_062_1M`
     - `PSOC_062_512K`
-    - `CYW20289`
+    - `CYW20829`
+    - `CYW89829`
     - `XMC7200`
     - `XMC7100`
 - `SLOT_SIZE` - The size of the primary/secondary slot of MCUBootApp. This app will be used with
@@ -171,8 +183,8 @@
     - `0x0` - Internal memory.
     - `0xff` - External memory.
 - `TOOLCHAIN_PATH` - The path to the GCC compiler to use for the build.
-    - Example: TOOLCHAIN_PATH=/home/user/ModusToolbox/tools_2.4/gcc
-    - Example: TOOLCHAIN_PATH=C:/ModusToolbox/tools_2.4/gcc
+    - Example: TOOLCHAIN_PATH=/home/user/ModusToolbox/tools_3.2/gcc
+    - Example: TOOLCHAIN_PATH=C:/ModusToolbox/tools_3.2/gcc
 
 Flags are set by pre-build action. Result of pre-build can be found in autogenerated file `BlinkyApp/memorymap.mk`.   
 
@@ -192,7 +204,7 @@
 
 Flags passed to `imgtool` for a signature are defined in the `SIGN_ARGS` variable in BlinkyApp.mk.
 
-For `CYW20829`, `cysecuretools` is used for the image signing.
+For `CYWxx829` and `XMC7x00` platforms, `cysecuretools` is used for the image signing.
 
 ### How to program an application
 
@@ -202,11 +214,11 @@
 
 Connect a board to your computer. Switch Kitprog3 to DAP-BULK mode by clicking the `SW3 MODE` button until `LED2 STATUS` constantly shines.
 
-The OpenOCD package is supplied with ModusToolbox™ IDE and can be found in the ModusToolbox™ installation folder `ModusToolbox/tools_2.4/openocd`.
+The OpenOCD package is supplied with ModusToolbox™ IDE and can be found in the ModusToolbox™ installation folder `ModusToolbox/tools_3.2/openocd`.
 
 Open the terminal application and execute the following command after substitution of the `PATH_TO_APPLICATION.hex` and `OPENOCD_PATH` paths:
 
-        export OPENOCD_PATH=/Applications/ModusToolbox/tools_2.4/openocd 
+        export OPENOCD_PATH=/Applications/ModusToolbox/tools_3.2/openocd 
 
         ${OPENOCD_PATH}/bin/openocd -s ${OPENOCD_PATH}/scripts \
                             -f ${OPENOCD_PATH}/scripts/interface/kitprog3.cfg \
diff --git a/boot/cypress/BlinkyApp/BlinkyApp.mk b/boot/cypress/BlinkyApp/BlinkyApp.mk
index 905ef47..0fd575f 100644
--- a/boot/cypress/BlinkyApp/BlinkyApp.mk
+++ b/boot/cypress/BlinkyApp/BlinkyApp.mk
@@ -34,6 +34,7 @@
 IMG_TYPE ?= BOOT
 IMG_ID ?= 1
 USE_HW_KEY ?= 0
+DISABLE_WDT_FREE ?= 0
 
 # image type can be BOOT or UPGRADE
 IMG_TYPES = BOOT UPGRADE
@@ -45,9 +46,9 @@
 # TODO: optimize here and in MCUBootApp.mk
 # Output folder
 ifeq ($(IMG_ID), 1)
-        OUT := $(APP_NAME)/out
+        OUT ?= $(APP_NAME)/out
 else
-        OUT := $(APP_NAME)/out.id$(IMG_ID)
+        OUT ?= $(APP_NAME)/out.id$(IMG_ID)
 endif
 
 # Output folder to contain build artifacts
@@ -86,7 +87,7 @@
 include $(PRJ_DIR)/common_libs.mk
 
 #Blinky Release XIP mode workaround
-ifneq ($(PLATFORM), CYW20829)
+ifneq ($(FAMILY), CYW20829)
 ifeq ($(BUILDCFG), Release)
 ifeq ($(USE_EXTERNAL_FLASH), 1)
 CFLAGS_OPTIMIZATION := -Og -g3
@@ -233,11 +234,8 @@
 endif
 
 # Overwite path to linker script if custom is required, otherwise default from BSP is used
-ifeq ($(COMPILER), GCC_ARM)
+
 LINKER_SCRIPT := $(CUR_APP_PATH)/linker/$(APP_NAME).ld
-else
-$(error Only GCC ARM is supported at this moment)
-endif
 
 ASM_FILES_APP :=
 ASM_FILES_APP += $(ASM_FILES_STARTUP)
@@ -277,6 +275,11 @@
 
 $(info $(SIGN_ARGS))
 
+# Disble wdt free hal call
+ifneq ($(DISABLE_WDT_FREE), 0)
+DEFINES_APP += -DISABLE_WDT_FREE
+endif
+
 pre_build:
 	$(info [PRE_BUILD] - Generating linker script for application $(CUR_APP_PATH)/linker/$(APP_NAME).ld)
 	@$(CC) -E -x c $(CFLAGS) $(INCLUDE_DIRS) $(CUR_APP_PATH)/linker/$(APP_NAME)_$(CORE)_template$(LD_SUFFIX).ld | grep -v '^#' >$(CUR_APP_PATH)/linker/$(APP_NAME).ld
@@ -298,6 +301,7 @@
 $(info CURDIR <-- $(CURDIR))
 $(info CUR_APP_PATH <-- $(CUR_APP_PATH))
 $(info DEFINES_APP --> $(DEFINES_APP))
+$(info DISABLE_WDT_FREE <-- $(DISABLE_WDT_FREE))
 $(info ENC_IMG --> $(ENC_IMG))
 $(info ERASED_VALUE <-> $(ERASED_VALUE))
 $(info FAMILY <-- $(FAMILY))
diff --git a/boot/cypress/BlinkyApp/BlinkyApp_CM4_Debug_boot_2M.launch b/boot/cypress/BlinkyApp/BlinkyApp_CM4_Debug_boot_2M.launch
deleted file mode 100644
index ea1d541..0000000
--- a/boot/cypress/BlinkyApp/BlinkyApp_CM4_Debug_boot_2M.launch
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="ilg.gnumcueclipse.debug.gdbjtag.openocd.launchConfigurationType">
-    <booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doContinue" value="true"/>
-    <booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doDebugInRam" value="false"/>
-    <booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doFirstReset" value="false"/>
-    <booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doGdbServerAllocateConsole" value="true"/>
-    <booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doGdbServerAllocateTelnetConsole" value="false"/>
-    <booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doSecondReset" value="true"/>
-    <booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doStartGdbCLient" value="true"/>
-    <booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doStartGdbServer" value="true"/>
-    <booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.enableSemihosting" value="true"/>
-    <stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.firstResetType" value="run"/>
-    <stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.gdbClientOtherCommands" value="set mem inaccessible-by-default off&#13;&#10;set remotetimeout 15"/>
-    <stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.gdbClientOtherOptions" value=""/>
-    <stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.gdbServerConnectionAddress" value=""/>
-    <stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.gdbServerExecutable" value="${cy_tools_path:openocd}/bin/openocd"/>
-    <intAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.gdbServerGdbPortNumber" value="3333"/>
-    <stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.gdbServerLog" value=""/>
-    <stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.gdbServerOther" value="-s &quot;${openocd_path}/../scripts&quot;&#13;&#10;-s &quot;${cy_prj_path}/boot/cypress/platforms/memory/PSOC6/smif_cfg_dbg&quot;&#13;&#10;-c &quot;source [find interface/kitprog3.cfg]&quot;&#13;&#10;-c &quot;puts stderr {Started by GNU MCU Eclipse}&quot;&#13;&#10;-c &quot;source [find target/psoc6_2m.cfg]&quot;&#13;&#10;-c &quot;psoc6.cpu.cm4 configure -rtos auto -rtos-wipe-on-reset-halt 1&quot;&#13;&#10;-c &quot;gdb_port 3332&quot;&#13;&#10;-c &quot;psoc6 sflash_restrictions 1&quot;&#13;&#10;-c &quot;init; reset init&quot;"/>
-    <stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.gdbServerTclPortNumber" value="6666"/>
-    <intAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.gdbServerTelnetPortNumber" value="4444"/>
-    <stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.otherInitCommands" value=""/>
-    <stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.otherRunCommands" value=""/>
-    <stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.secondResetType" value="run"/>
-    <stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.svdPath" value=""/>
-    <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageFileName" value="/Users/rnok/repos/cy_mcuboot_project/cy_mcuboot/boot/cypress/BlinkyApp/out/boot/CY8CKIT-064S2-4343W/Debug/BlinkyApp.elf"/>
-    <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageOffset" value=""/>
-    <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.ipAddress" value="localhost"/>
-    <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.jtagDevice" value="GNU MCU OpenOCD"/>
-    <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.loadImage" value="false"/>
-    <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.loadSymbols" value="true"/>
-    <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.pcRegister" value=""/>
-    <intAttribute key="org.eclipse.cdt.debug.gdbjtag.core.portNumber" value="3333"/>
-    <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setPcRegister" value="false"/>
-    <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setResume" value="false"/>
-    <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setStopAt" value="true"/>
-    <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.stopAt" value="main"/>
-    <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsFileName" value="${cy_prj_path}/boot/cypress/BlinkyApp/out/PSOC_062_2M/Debug/boot/BlinkyApp.elf"/>
-    <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsOffset" value=""/>
-    <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForImage" value="false"/>
-    <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForSymbols" value="true"/>
-    <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useProjBinaryForImage" value="true"/>
-    <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useProjBinaryForSymbols" value="false"/>
-    <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useRemoteTarget" value="true"/>
-    <stringAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_NAME" value="${cy_tools_path:CY_TOOL_arm-none-eabi-gdb_EXE}"/>
-    <booleanAttribute key="org.eclipse.cdt.dsf.gdb.UPDATE_THREADLIST_ON_SUSPEND" value="false"/>
-    <intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="0"/>
-    <stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value=""/>
-    <stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_REGISTER_GROUPS" value=""/>
-    <stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="${cy_prj_path}/boot/cypress/BlinkyApp/out/PSOC_062_2M/Debug/boot/BlinkyApp.elf"/>
-    <stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="cy_mcuboot"/>
-    <booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="true"/>
-    <stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="0.1249144476"/>
-    <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-        <listEntry value="/cy_mcuboot"/>
-    </listAttribute>
-    <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-        <listEntry value="4"/>
-    </listAttribute>
-    <stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;memoryBlockExpressionList context=&quot;Context string&quot;&gt;&#10;    &lt;memoryBlockExpression address=&quot;268566528&quot; label=&quot;0x10020000&quot;/&gt;&#10;    &lt;memoryBlockExpression address=&quot;268632064&quot; label=&quot;0x10030000&quot;/&gt;&#10;    &lt;memoryBlockExpression address=&quot;268534743&quot; label=&quot;0x100183d7&quot;/&gt;&#10;&lt;/memoryBlockExpressionList&gt;&#10;"/>
-    <stringAttribute key="process_factory_id" value="org.eclipse.cdt.dsf.gdb.GdbProcessFactory"/>
-</launchConfiguration>
diff --git a/boot/cypress/BlinkyApp/BlinkyApp_CM4_Debug_upgrade_2M.launch b/boot/cypress/BlinkyApp/BlinkyApp_CM4_Debug_upgrade_2M.launch
deleted file mode 100644
index cc4a413..0000000
--- a/boot/cypress/BlinkyApp/BlinkyApp_CM4_Debug_upgrade_2M.launch
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="ilg.gnumcueclipse.debug.gdbjtag.openocd.launchConfigurationType">
-    <booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doContinue" value="true"/>
-    <booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doDebugInRam" value="false"/>
-    <booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doFirstReset" value="false"/>
-    <booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doGdbServerAllocateConsole" value="true"/>
-    <booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doGdbServerAllocateTelnetConsole" value="false"/>
-    <booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doSecondReset" value="true"/>
-    <booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doStartGdbCLient" value="true"/>
-    <booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.doStartGdbServer" value="true"/>
-    <booleanAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.enableSemihosting" value="true"/>
-    <stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.firstResetType" value="run"/>
-    <stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.gdbClientOtherCommands" value="set mem inaccessible-by-default off&#13;&#10;set remotetimeout 15"/>
-    <stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.gdbClientOtherOptions" value=""/>
-    <stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.gdbServerConnectionAddress" value=""/>
-    <stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.gdbServerExecutable" value="${cy_tools_path:openocd}/bin/openocd"/>
-    <intAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.gdbServerGdbPortNumber" value="3333"/>
-    <stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.gdbServerLog" value=""/>
-    <stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.gdbServerOther" value="-s &quot;${openocd_path}/../scripts&quot;&#13;&#10;-s &quot;${cy_prj_path}/boot/cypress/platforms/memory/PSOC6/smif_cfg_dbg&quot;&#13;&#10;-c &quot;source [find interface/kitprog3.cfg]&quot;&#13;&#10;-c &quot;puts stderr {Started by GNU MCU Eclipse}&quot;&#13;&#10;-c &quot;source [find target/psoc6_2m.cfg]&quot;&#13;&#10;-c &quot;psoc6.cpu.cm4 configure -rtos auto -rtos-wipe-on-reset-halt 1&quot;&#13;&#10;-c &quot;gdb_port 3332&quot;&#13;&#10;-c &quot;psoc6 sflash_restrictions 1&quot;&#13;&#10;-c &quot;init; reset init&quot;"/>
-    <stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.gdbServerTclPortNumber" value="6666"/>
-    <intAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.gdbServerTelnetPortNumber" value="4444"/>
-    <stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.otherInitCommands" value=""/>
-    <stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.otherRunCommands" value=""/>
-    <stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.openocd.secondResetType" value="run"/>
-    <stringAttribute key="ilg.gnumcueclipse.debug.gdbjtag.svdPath" value=""/>
-    <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageFileName" value="/Users/rnok/repos/cy_mcuboot_project/cy_mcuboot/boot/cypress/BlinkyApp/out/boot/CY8CKIT-064S2-4343W/Debug/BlinkyApp.elf"/>
-    <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.imageOffset" value=""/>
-    <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.ipAddress" value="localhost"/>
-    <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.jtagDevice" value="GNU MCU OpenOCD"/>
-    <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.loadImage" value="false"/>
-    <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.loadSymbols" value="true"/>
-    <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.pcRegister" value=""/>
-    <intAttribute key="org.eclipse.cdt.debug.gdbjtag.core.portNumber" value="3333"/>
-    <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setPcRegister" value="false"/>
-    <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setResume" value="false"/>
-    <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.setStopAt" value="true"/>
-    <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.stopAt" value="main"/>
-    <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsFileName" value="${cy_prj_path}/boot/cypress/BlinkyApp/out/PSOC_062_2M/Debug/upgrade/BlinkyApp.elf"/>
-    <stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.symbolsOffset" value=""/>
-    <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForImage" value="false"/>
-    <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useFileForSymbols" value="true"/>
-    <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useProjBinaryForImage" value="true"/>
-    <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useProjBinaryForSymbols" value="false"/>
-    <booleanAttribute key="org.eclipse.cdt.debug.gdbjtag.core.useRemoteTarget" value="true"/>
-    <stringAttribute key="org.eclipse.cdt.dsf.gdb.DEBUG_NAME" value="${cy_tools_path:CY_TOOL_arm-none-eabi-gdb_EXE}"/>
-    <booleanAttribute key="org.eclipse.cdt.dsf.gdb.UPDATE_THREADLIST_ON_SUSPEND" value="false"/>
-    <intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="0"/>
-    <stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value=""/>
-    <stringAttribute key="org.eclipse.cdt.launch.DEBUGGER_REGISTER_GROUPS" value=""/>
-    <stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="${cy_prj_path}/boot/cypress/BlinkyApp/out/PSOC_062_2M/Debug/upgrade/BlinkyApp.elf"/>
-    <stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="cy_mcuboot"/>
-    <booleanAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_AUTO_ATTR" value="true"/>
-    <stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="0.1249144476"/>
-    <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-        <listEntry value="/cy_mcuboot"/>
-    </listAttribute>
-    <listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-        <listEntry value="4"/>
-    </listAttribute>
-    <stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;&#10;&lt;memoryBlockExpressionList context=&quot;Context string&quot;&gt;&#10;    &lt;memoryBlockExpression address=&quot;268566528&quot; label=&quot;0x10020000&quot;/&gt;&#10;    &lt;memoryBlockExpression address=&quot;268632064&quot; label=&quot;0x10030000&quot;/&gt;&#10;    &lt;memoryBlockExpression address=&quot;268534743&quot; label=&quot;0x100183d7&quot;/&gt;&#10;&lt;/memoryBlockExpressionList&gt;&#10;"/>
-    <stringAttribute key="process_factory_id" value="org.eclipse.cdt.dsf.gdb.GdbProcessFactory"/>
-</launchConfiguration>
diff --git a/boot/cypress/BlinkyApp/Readme.md b/boot/cypress/BlinkyApp/Readme.md
deleted file mode 100644
index ba5340e..0000000
--- a/boot/cypress/BlinkyApp/Readme.md
+++ /dev/null
@@ -1,165 +0,0 @@
-### Blinking LED test application for MCUboot bootloader
-
-### Description
-
-Implements simple Blinky LED CM4 application to demonstrate MCUboot Application operation in terms of BOOT and UPGRADE process.
-
-It is started by MCUboot Application which is running on CM0p.
-
-Functionality:
-
-* Blinks RED led with 2 different rates, depending on type of image - BOOT or UPGRADE.
-* Prints debug info and version of itself to terminal at 115200 baud.
-* Can be built for BOOT slot or UPGRADE slot of bootloader.
-
-Currently supported platforms
-
-* PSOC_062_2M
-* PSOC_062_1M
-* PSOC_062_512K
-
-### Hardware limitations
-
-Since this application is created to demonstrate MCUboot library features and not as reference examples some considerations are taken.
-
-1. Port/pin `P5_0` and `P5_1` used to configure serial port for debug prints. These pins are the most commonly used for serial port connection among available Cypress PSoC 6 kits. If you try to use custom hardware with this application - change definitions of `CY_DEBUG_UART_TX` and `CY_DEBUG_UART_RX` in `main.c` of BlinkyApp to port/pin pairs corresponding to your design.
-2. Port `GPIO_PRT13` pin `7U` used to define user connection LED. This pin is the most commonly used for USER_LED connection among available Cypress PSoC 6 kits. If you try to use custom hardware with this application - change definitions of `LED_PORT` and `LED_PIN` in `main.c` of BlinkyApp to port/pin pairs corresponding to your design.
-
-### Pre-build action
-
-Pre-build action is implemented for defining start address and size of flash, as well as RAM start address and size for BlinkyApp.
-These values are set by specifing following macros: `-DUSER_APP_SIZE`, `-DUSER_APP_START`, `-DRAM_SIZE`, `-DRAM_START` in makefile.
-
-Pre-build action calls GCC preprocessor which intantiates defines for particular values in `BlinkyApp_template.ld`.
-
-Default values set for currently supported targets:
-* `BlinkyApp.mk` to `-DUSER_APP_START=0x10018000`
-
-**Important**: make sure RAM areas of CM4-based BlinkyApp and CM0p-based MCUBootApp bootloader do not overlap.
-Memory (stack) corruption of CM0p application can cause failure if SystemCall-served operations invoked from CM4.
-
-### Building an application
-
-Root directory for build is **boot/cypress.**
-
-The following command will build regular HEX file of a BlinkyApp for BOOT slot. Substitute `PLATFORM=` to a paltform name you use in all following commands.
-
-    make app APP_NAME=BlinkyApp PLATFORM=PSOC_062_2M IMG_TYPE=BOOT
-
-This have following defaults suggested:
-
-    BUILDCFG=Debug
-    IMG_TYPE=BOOT
-
-To build UPGRADE image use following command:
-
-    make app APP_NAME=BlinkyApp PLATFORM=PSOC_062_2M IMG_TYPE=UPGRADE HEADER_OFFSET=0x10000
-
-    Note: HEADER_OFFSET=%SLOT_SIZE%
-
-Example command-line for single-image:
-
-    make app APP_NAME=BlinkyApp PLATFORM=PSOC_062_2M IMG_TYPE=BOOT
-
-**Building Multi-Image**
-
-`BlinkyApp` can be built to use in multi-image bootloader configuration.
-
-To get appropriate artifacts to use with multi image MCUBootApp, makefile flag `HEADER_OFFSET=` can be used.
-
-Example usage:
-
-Considering default config:
-
-* first image BOOT (PRIMARY) slot start `0x10018000`
-* slot size `0x10000`
-* second image BOOT (PRIMARY) slot start `0x10038000`
-
-To get appropriate artifact for second image PRIMARY slot run this command:
-
-    make app APP_NAME=BlinkyApp PLATFORM=PSOC_062_2M IMG_TYPE=BOOT HEADER_OFFSET=0x20000
-
-*Note:* only 2 images are supported at the moment.
-
-**How to build upgrade image for external memory:**
-
-To prepare MCUBootApp for work with external memory please refer to `MCUBootApp/ExternalMemory.md`.
-
-For build BlinkyApp upgrade image for external memory use command:
-
-    make app APP_NAME=BlinkyApp PLATFORM=PSOC_062_2M IMG_TYPE=UPGRADE HEADER_OFFSET=0x7FE8000 ERASED_VALUE=0xff
-
-`HEADER_OFFSET` defines the offset from original boot image address. This one in line above suggests secondary slot will start from `0x18000000`.
-
-`ERASED_VALUE` defines the memory cell contents in erased state. It is `0x00` for PSoC6's internal Flash and `0xff` for S25FL512S.
-
-In case of using muti-image configuration, upgrade image for second application can be built using next command:
-
-    make app APP_NAME=BlinkyApp PLATFORM=PSOC_062_2M IMG_TYPE=UPGRADE HEADER_OFFSET=0x8028000 ERASED_VALUE=0xff
-
-    Note: for S25FL512S block address shuld be mutiple by 0x40000
-
-**How to build encrypted upgrade image :**
-
-To prepare MCUBootApp for work with encrypted upgrade image please refer to `MCUBootApp/Readme.md`.
-
-To obtain encrypted upgrade image of BlinkyApp extra flag `ENC_IMG=1` should be passed in command line, for example:
-
-    make app APP_NAME=BlinkyApp PLATFORM=PSOC_062_2M IMG_TYPE=UPGRADE HEADER_OFFSET=0x20000 ENC_IMG=1
-
-This also suggests user already placed corresponing `*.pem` key in `\keys` folder. The key variables are defined in root `Makefile` as `SIGN_KEY_FILE` and `ENC_KEY_FILE`
-
-### Post-build
-
-Post build action is executed at compile time for `BlinkyApp`. In case of build for `PSOC_062_2M` platform it calls `imgtool` from `MCUboot` scripts and adds signature to compiled image.
-
-Flags passed to `imgtool` for signature are defined in `SIGN_ARGS` variable in BlinkyApp.mk.
-
-### How to program an application
-
-Use any preferred tool for programming hex files.
-
-Hex file names to use for programming:
-
-`BlinkyApp` always produce build artifacts in 2 separate folders - `boot` and `upgrade`.
-
-`BlinkyApp` built to run with `MCUBootApp` produces files with name BlinkyApp.hex in `boot` directory and `BlinkyApp_upgrade.hex` in `upgrade` folder. These files are ready to be flashed to the board.
-
-`BlinkyApp_unsigned.hex` hex file is also preserved in both cases for possible troubleshooting.
-
-Files to use for programming are:
-
-`BOOT` - boot/BlinkyApp.hex
-`UPGRADE` - upgrade/BlinkyApp_upgrade.hex
-
-**Flags:**
-- `BUILDCFG` - configuration **Release** or **Debug**
-- `MAKEINFO` - 0 (default) - less build info, 1 - verbose output of compilation.
-- `HEADER_OFFSET` - 0 (default) - no offset of output hex file, 0x%VALUE% - offset for output hex file. Value 0x10000 is slot size MCUboot Bootloader in this example.
-- `IMG_TYPE` - `BOOT` (default) - build image for BOOT slot of MCUboot Bootloader, `UPGRADE` - build image for UPGRADE slot of MCUboot Bootloader.
-- `ENC_IMG` - 0 (default) - build regular upgrade image, `1` - build encrypted upgrade image (MCUBootApp should also be built with this flash set 1)
-
-**NOTE**: In case of `UPGRADE` image `HEADER_OFFSET` should be set to MCUboot Bootloader slot size.
-
-### Example terminal output
-
-When user application programmed in BOOT slot:
-
-    ===========================
-    [BlinkyApp] BlinkyApp v1.0 [CM4]
-    ===========================
-    [BlinkyApp] GPIO initialized
-    [BlinkyApp] UART initialized
-    [BlinkyApp] Retarget I/O set to 115200 baudrate
-    [BlinkyApp] Red led blinks with 1 sec period
-
-When user application programmed in UPRADE slot and upgrade procedure was successful:
-
-    ===========================
-    [BlinkyApp] BlinkyApp v2.0 [+]
-    ===========================
-
-    [BlinkyApp] GPIO initialized
-    [BlinkyApp] UART initialized
-    [BlinkyApp] Retarget I/O set to 115200 baudrate
-    [BlinkyApp] Red led blinks with 0.25 sec period
diff --git a/boot/cypress/BlinkyApp/linker/BlinkyApp_CM33_template_xip.ld b/boot/cypress/BlinkyApp/linker/BlinkyApp_CM33_template_xip.ld
index 4b8b0d8..704c3b4 100644
--- a/boot/cypress/BlinkyApp/linker/BlinkyApp_CM33_template_xip.ld
+++ b/boot/cypress/BlinkyApp/linker/BlinkyApp_CM33_template_xip.ld
@@ -1,5 +1,5 @@
 /***************************************************************************//**
-* \file cyw20829_ns.ld
+* \file cyw20829_ns_flash_sahb.ld
 * \version 1.0.0
 *
 * Linker file for the GNU C compiler.
@@ -8,7 +8,7 @@
 * input files should be mapped into the output file, and to control the memory
 * layout of the output file.
 *
-* \note The entry point location is fixed and starts at 0x10000000. The valid
+* \note The entry point location starts at 0x0401e000. The valid
 * application image should be placed there.
 *
 * \note The linker files included with the PDL template projects must be generic
@@ -19,7 +19,8 @@
 *
 ********************************************************************************
 * \copyright
-* Copyright 2016-2020 Cypress Semiconductor Corporation
+* Copyright (c) (2020-2022), Cypress Semiconductor Corporation (an Infineon company) or
+* an affiliate of Cypress Semiconductor Corporation.
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
@@ -41,6 +42,9 @@
 GROUP(libgcc.a libc.a libm.a libnosys.a)
 ENTRY(Reset_Handler)
 
+/* Memory reserved for Bootstrap code and data */
+BOOTSTRAP_SIZE = DEFINED(APP_BOOTSTRAP_SIZE) ? APP_BOOTSTRAP_SIZE : 0x00002400 ;
+
 /* The size of the stack section at the end of CM4 SRAM */
 STACK_SIZE = 0x1000;
 
@@ -49,39 +53,38 @@
 FLASH_START_ADDR_SAHB       = 0x60000000 + USER_APP_START_ADDR;
 FLASH_START_ADDR_CBUS       = 0x08000000 + USER_APP_START_ADDR;
 RAM_START_ADDR_SAHB         = 0x20000000;
-RAM_START_ADDR_CBUS         = 0x04000000;
 RAM_END_ADDR_SAHB           = 0x20040000; /* 256K */
-RAM_END_ADDR_CBUS           = 0x04040000; /* 256K */
+
+RAM_START_ADDR_CBUS         = 0x20000000;
+RAM_END_ADDR_CBUS           = 0x20040000; /* 256K */
+
 FLASH_END_ADDR_SAHB         = 0x60080000; /* 512K */
 
-BOOTSTRAP_OFFSET_FLASH      = 0x00000050; /* toc2=0x10, l1_desc=0x1C, sign_header=0x20, padding=0x4 (encrypted data should be aligned to 0x10 boundary) */
-BOOTSTRAP_OFFSET_RAM        = 0x0001E000; /* was 0x00004000 Modify this value to change the size of Bootstrap code + Data */
-APPCODE_OFFSET_FLASH        = 0x00002200;
+BOOTSTRAP_OFFSET_FLASH      = 0x00000050; /* toc2=0x10, l1_desc=0x1C, sign_header=0x20 */
 
 RAMVECTORS_ALIGNMENT        = 512;
+FLASH_ALIGNMENT_SIZE        = 0x00000200;
 
-/* Memory reserved for Bootstrap code and data */
-BOOTSTRAP_SIZE              = RAM_END_ADDR_SAHB - RAM_START_ADDR_SAHB - BOOTSTRAP_OFFSET_RAM; /* 0x00002000 */
 /* vma for bootstrap code region */
-CODE_VMA                    = RAM_START_ADDR_CBUS + BOOTSTRAP_OFFSET_RAM; /* 0x0401E000 */
+CODE_VMA                    = RAM_START_ADDR_CBUS + (RAM_END_ADDR_SAHB - RAM_START_ADDR_SAHB - BOOTSTRAP_SIZE); /* 0x2003DC00 */
 /* lma for bootstrap code region */
-CODE_LMA                    = FLASH_START_ADDR_SAHB + BOOTSTRAP_OFFSET_FLASH; /* 0x6000004C */
+CODE_LMA                    = FLASH_START_ADDR_SAHB + BOOTSTRAP_OFFSET_FLASH; /* 0x60000050 */
 /* Maximum bootstrap code + data size */
-CODE_BS_SIZE                   = BOOTSTRAP_SIZE; /* 8KB */
+CODE_BS_SIZE                = BOOTSTRAP_SIZE; /* 9KB */
 /* vma for bootstrap data region */
-DATA_BS_VMA                 = RAM_START_ADDR_SAHB + BOOTSTRAP_OFFSET_RAM; /* 0x2001E000 */
+DATA_BS_VMA                 = RAM_END_ADDR_SAHB - BOOTSTRAP_SIZE; /* 0x2003DC00 */
 /* vma for bootstrap and app data region */
 DATA_VMA                    = RAM_START_ADDR_SAHB; /* 0x20000000 */
 /* vma for appCodeRam region */
-DATA_CBUS_VMA               = RAM_START_ADDR_CBUS; /* 0x04000000 */
+DATA_CBUS_VMA               = RAM_START_ADDR_CBUS; /* 0x20000000 */
 /* lma for bootstrap and app data region */
-DATA_LMA                    = CODE_LMA + CODE_BS_SIZE; /* 0x6000204C */
+DATA_LMA                    = CODE_LMA + CODE_BS_SIZE; /* 0x60002450 */
 /* data size */
-DATA_SIZE                   = RAM_END_ADDR_SAHB - DATA_VMA - BOOTSTRAP_SIZE; /* 0x1E000 */
+DATA_SIZE                   = RAM_END_ADDR_SAHB - DATA_VMA - BOOTSTRAP_SIZE; /* 0x3DC00 */
 /* vma for application XIP region */
-XIP_VMA                     = FLASH_START_ADDR_CBUS + APPCODE_OFFSET_FLASH; /* 0x08002200 */
+XIP_VMA                     = FLASH_START_ADDR_CBUS + BOOTSTRAP_SIZE + FLASH_ALIGNMENT_SIZE; /* 0x08002600 */
 /* lma for application XIP region */
-XIP_LMA                     = FLASH_START_ADDR_SAHB + APPCODE_OFFSET_FLASH; /* 0x60002200 */
+XIP_LMA                     = FLASH_START_ADDR_SAHB + BOOTSTRAP_SIZE + FLASH_ALIGNMENT_SIZE; /* 0x60002600 */
 /* size of XIP region */
 XIP_SIZE                    = FLASH_END_ADDR_SAHB - XIP_LMA;
 /* Total size of SRAM */
@@ -161,7 +164,7 @@
      * size of stack_dummy section */
     . = ALIGN(32);
     __StackTop = RAM_START_ADDR_SAHB + STACK_SIZE;
-    __StackLimit = __StackTop - SIZEOF(.stack_dummy);
+    __StackLimit = __StackTop - STACK_SIZE;
     PROVIDE(__stack = __StackTop);
 
     . = ALIGN(RAMVECTORS_ALIGNMENT);
@@ -189,9 +192,12 @@
         *cy_smif.o(.text*)
         *cy_smif_memslot.o(.text*)
         *cy_smif_sfdp.o(.text*)
-        *cy_gpio.o(.text*)
-        *cy_smif_hybrid_sect.o(.text*)
 
+        KEEP( *(.text.cy_os_common*))
+        KEEP (*(.text.cy_btstack_common*))
+        KEEP (*(.text.cy_btstack_gatt*))
+        KEEP (*(.text.cy_ipc*))
+        KEEP (*(.text.cy_btstack_porting*))
         . = ALIGN(4);
         __app_text_ram_end__ = .;
 
@@ -235,10 +241,6 @@
         KEEP(*(.jcr*))
         . = ALIGN(4);
 
-        . = ALIGN(4);
-        KEEP(*(.cy_l2func*))
-        . = ALIGN(4);
-
         __data_end__ = .;
 
     } > data
@@ -310,24 +312,24 @@
         . = ALIGN(4);
 
         /* startup code */
-        *ns_start_cyw20829.o(.text*)
-        *ns_system_cyw20829.o(.text*)
+        *startup_cat1b_cm33.o(.text*)
+        *system_cyw20829.o(.text*)
 
         /* drivers */
         *cy_device.o(.text*)
         *cy_btss.o(.text*)
-        *cy_gpio.o(.text*)
         *cy_sysclk_v2.o(.text*)
         *cy_syspm_v2.o(.text*)
         *cy_sysint_v2.o(.text*)
         *cy_syslib*.o(.text*)
         *ppu_v1.o(.text*)
         *cy_mpc.o(.text*)
-        *cy_pd_ppu.o(.text*)
-        *cy_smif.o(.text*)
-        *cy_smif_memslot.o(.text*)
-        *cy_smif_sfdp.o(.text*)
-        *cyhal_system.o(.text*)
+        *cy_syspm_ppu.o(.text*)
+
+        *memcpy*.o (.text*)   /* add memcpy from the NewLib library here*/
+        *memset*.o (.text*)        /* add memcpy from the NewLib library here*/
+        *memmove*.o (.text*)       /* add memcpy from the NewLib library here*/
+        *s_fabs.o (.text*)
 
         KEEP(*(.cy_l1func*))
 
@@ -356,13 +358,12 @@
         . = ALIGN(4);
 
         /* startup code */
-        *ns_start_cyw20829.o(.data* .rodata .rodata.* .constdata .constdata.* .conststring .conststring.*)
-        *ns_system_cyw20829.o(.data* .rodata .rodata.* .constdata .constdata.* .conststring .conststring.*)
+        *startup_cat1b_cm33.o(.data* .rodata .rodata.* .constdata .constdata.* .conststring .conststring.*)
+        *system_cyw20829.o(.data* .rodata .rodata.* .constdata .constdata.* .conststring .conststring.*)
 
         /* drivers */
         *cy_device.o(.data* .rodata .rodata.* .constdata .constdata.* .conststring .conststring.*)
         *cy_btss.o(.data* .rodata .rodata.* .constdata .constdata.* .conststring .conststring.*)
-        *cy_gpio.o(.data* .rodata .rodata.* .constdata .constdata.* .conststring .conststring.*)
         *cy_sysclk_v2.o(.data* .rodata .rodata.* .constdata .constdata.* .conststring .conststring.*)
         *cy_syspm_v2.o(.data* .rodata .rodata.* .constdata .constdata.* .conststring .conststring.*)
         *cy_sysint_v2.o(.data* .rodata .rodata.* .constdata .constdata.* .conststring .conststring.*)
@@ -370,33 +371,26 @@
         *ppu_v1.o(.data* .rodata .rodata.* .constdata .constdata.* .conststring .conststring.*)
         *cy_mpc.o(.data* .rodata .rodata.* .constdata .constdata.* .conststring .conststring.*)
         *cy_pd_ppu.o(.data* .rodata .rodata.* .constdata .constdata.* .conststring .conststring.*)
-        *cy_smif.o(.data* .rodata .rodata.* .constdata .constdata.* .conststring .conststring.*)
-        *cy_smif_memslot.o(.data* .rodata .rodata.* .constdata .constdata.* .conststring .conststring.*)
-        *cy_smif_sfdp.o(.data* .rodata .rodata.* .constdata .constdata.* .conststring .conststring.*)
-        *cycfg_qspi_memslot.o(.data* .rodata .rodata.* .constdata .constdata.* .conststring .conststring.*)
-        *cyhal_system.o(.data* .rodata .rodata.* .constdata .constdata.* .conststring .conststring.*)
 
         KEEP(*(.cy_l1data*))
 
         . = ALIGN(4);
-
         __bootstrapData_end__ = .;
-        __bootstrap_size_end__ = .;
     } > bsData
 
+    __bootstrap_size_end__ = .;
     .bootstrapBss (NOLOAD):
     {
         . = ALIGN(4);
         __bootstrap_bss_start__ = .;
 
         /* startup code */
-        *ns_start_cyw20829.o(.bss* COMMON)
-        *ns_system_cyw20829.o(.bss* COMMON)
+        *startup_cat1b_cm33.o(.bss* COMMON)
+        *system_cyw20829.o(.bss* COMMON)
 
         /* drivers */
         *cy_device.o(.bss* COMMON)
         *cy_btss.o(.bss* COMMON)
-        *cy_gpio.o(.bss* COMMON)
         *cy_sysclk_v2.o(.bss* COMMON)
         *cy_syspm_v2.o(.bss* COMMON)
         *cy_sysint_v2.o(.bss* COMMON)
@@ -404,10 +398,6 @@
         *ppu_v1.o(.bss* COMMON)
         *cy_mpc.o(.bss* COMMON)
         *cy_pd_ppu.o(.bss* COMMON)
-        *cy_smif.o(.bss* COMMON)
-        *cy_smif_memslot.o(.bss* COMMON)
-        *cy_smif_sfdp.o(.bss* COMMON)
-
         KEEP(*(.cy_l1bss*))
 
         . = ALIGN(4);
@@ -427,11 +417,8 @@
         . = ALIGN(4);
         __text_begin = .;
 
-        *(EXCLUDE_FILE(*cy_gpio.o
-                       *cy_smif.o
-                       *cy_smif_memslot.o
-                       *cy_smif_sfdp.o
-                       *cy_smif_hybrid_sect.o) .text*)
+        *(EXCLUDE_FILE(*cy_smif.o
+                        *cy_smif_memslot.o *cy_smif_sfdp.o) .text*)
 
         KEEP(*(.init))
         KEEP(*(.fini))
@@ -497,7 +484,7 @@
 }
 
 /* start of bootstrap code sahb address */
-__bootstrap_start_addr__    = RAM_START_ADDR_SAHB + BOOTSTRAP_OFFSET_RAM;
+__bootstrap_start_addr__    = RAM_END_ADDR_SAHB - BOOTSTRAP_SIZE;
 /* bootstrap size */
 __bootstrap_size__          = __bootstrap_size_end__ - __bootstrap_start_addr__;
 
diff --git a/boot/cypress/BlinkyApp/main.c b/boot/cypress/BlinkyApp/main.c
index 5bc5a59..444f858 100644
--- a/boot/cypress/BlinkyApp/main.c
+++ b/boot/cypress/BlinkyApp/main.c
@@ -57,10 +57,12 @@
 
     printf("[BlinkyApp] Image type: " IMAGE_TYPE " on %s core\r\n", detect_core_message);
 
-    /* Disable watchdog timer to mark successful start up of application. */
+#if !defined(DISABLE_WDT_FREE)
+    /* Disable watchdog timer to mark successful start up of application. The default BlikyApp flow */
     cyhal_wdt_free(NULL);
 
     printf(WATCHDOG_FREE_MESSAGE);
+#endif /* !(DISABLE_WDT_FREE) */
 
     for (;;) {
         /* Toggle the user LED periodically */