The firmware created for other PSoC architectures is not compatible with PSoC 6. The major difference is that PSoC 6 is a dualcore architecture, with both Arm® Cortex®-M0+ and Cortex-M4 cores. Firmware must provide code for each core (such as the main.c file) when creating a PSoC 6 design.
Additionally, both PSoC 5 and PSoC 6 MCU devices use Component-based APIs. However, for PSoC 6 MCU, APIs are built on top of the Cypress Peripheral Driver Library (PDL) . Each Component has been re-engineered to support the dual-core architecture transparently. What this means from the firmware perspective is that the code and APIs generated for PSoC 5 are incompatible with PSoC 6 and the PDL.
For example, consider the case of an SCB UART Component. You can use a Component-based function call to enable the peripheral:
where UART is the name of the instance of SCB UART Component. The actual generated code behind that call is completely different for PSoC 4 and PSoC 6 MCU. Other UART API calls are also different, with different parameters. For PSoC 6 MCU, the Component-based API is a wrapper over PDL functions. The UART_Start() function calls the PDL function Cy_SCB_UART_Init().
For PSoC 6 MCU, you can call the PDL functions directly, without using the PSoC Creator Component API. In this case, you write:
Cy_SCB_UART_Init(UART_HW, &UART_config, &UART_context);
where UART_HW, UART_config and UART_context are the pointer to the base address of the hardware, the pointer to the instancespecific configuration structure, and the pointer to the context structure respectively. PDL enables developers to create firmware for the PSoC 6 MCU architecture without using PSoC Creator™, should they choose to do so.
So, porting the project means creating a new one from scratch where you will need to use PDL specific APIs instead of the Component Specific APIs in PSoC5.
Yes, since you are using PSoC5, just wanted to make sure you do not think the KBA is any different. It applies to PSoC5 too.