Add initial implementation of MCUBoot application for Cypress PSOC6 platform
Signed-off-by: Roman Okhrimenko <roman.okhrimenko@cypress.com>
diff --git a/boot/cypress/MCUBootApp/main.c b/boot/cypress/MCUBootApp/main.c
new file mode 100644
index 0000000..47f494a
--- /dev/null
+++ b/boot/cypress/MCUBootApp/main.c
@@ -0,0 +1,80 @@
+/***************************************************************************//**
+* \file main.c
+* \version 1.0
+********************************************************************************
+* \copyright
+* SPDX-License-Identifier: Apache-2.0
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*******************************************************************************/
+
+/* Cypress pdl headers */
+#include "cy_pdl.h"
+#include "cyhal.h"
+#include "cy_retarget_io.h"
+#include "cy_result.h"
+
+#include "sysflash/sysflash.h"
+#include "flash_map_backend/flash_map_backend.h"
+
+#include "bootutil/image.h"
+#include "bootutil/bootutil.h"
+#include "bootutil/sign_key.h"
+
+#include "bootutil/bootutil_log.h"
+
+/* Define pins for UART debug output */
+
+#define CY_DEBUG_UART_TX (P5_1)
+#define CY_DEBUG_UART_RX (P5_0)
+
+static void do_boot(struct boot_rsp *rsp)
+{
+ uint32_t app_addr = 0;
+
+ app_addr = (rsp->br_image_off + rsp->br_hdr->ih_hdr_size);
+
+ BOOT_LOG_INF("Starting User Application on CM4 (wait)...");
+ Cy_SysLib_Delay(100);
+
+ cy_retarget_io_deinit();
+
+ Cy_SysEnableCM4(app_addr);
+
+ while (1)
+ {
+ __WFI() ;
+ }
+}
+
+int main(void)
+{
+ cy_rslt_t rc = !CY_RSLT_SUCCESS;
+ struct boot_rsp rsp ;
+
+ /* enable interrupts */
+ __enable_irq();
+
+ /* Initialize retarget-io to use the debug UART port */
+ cy_retarget_io_init(CY_DEBUG_UART_TX, CY_DEBUG_UART_RX, CY_RETARGET_IO_BAUDRATE);
+
+ BOOT_LOG_INF("MCUBoot Bootloader Started");
+
+ if (boot_go(&rsp) == 0) {
+ BOOT_LOG_INF("User Application validated successfully");
+ do_boot(&rsp);
+ } else
+ BOOT_LOG_INF("MCUBoot Bootloader found none of bootable images") ;
+
+ return 0;
+}