mbed library sources. Supersedes mbed-src.

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

Committer:
AnnaBridge
Date:
Wed Feb 20 22:31:08 2019 +0000
Revision:
189:f392fc9709a3
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 189:f392fc9709a3 1 /***************************************************************************//**
AnnaBridge 189:f392fc9709a3 2 * \file system_psoc6_cm4.c
AnnaBridge 189:f392fc9709a3 3 * \version 2.30
AnnaBridge 189:f392fc9709a3 4 *
AnnaBridge 189:f392fc9709a3 5 * The device system-source file.
AnnaBridge 189:f392fc9709a3 6 *
AnnaBridge 189:f392fc9709a3 7 ********************************************************************************
AnnaBridge 189:f392fc9709a3 8 * \copyright
AnnaBridge 189:f392fc9709a3 9 * Copyright 2016-2019 Cypress Semiconductor Corporation
AnnaBridge 189:f392fc9709a3 10 * SPDX-License-Identifier: Apache-2.0
AnnaBridge 189:f392fc9709a3 11 *
AnnaBridge 189:f392fc9709a3 12 * Licensed under the Apache License, Version 2.0 (the "License");
AnnaBridge 189:f392fc9709a3 13 * you may not use this file except in compliance with the License.
AnnaBridge 189:f392fc9709a3 14 * You may obtain a copy of the License at
AnnaBridge 189:f392fc9709a3 15 *
AnnaBridge 189:f392fc9709a3 16 * http://www.apache.org/licenses/LICENSE-2.0
AnnaBridge 189:f392fc9709a3 17 *
AnnaBridge 189:f392fc9709a3 18 * Unless required by applicable law or agreed to in writing, software
AnnaBridge 189:f392fc9709a3 19 * distributed under the License is distributed on an "AS IS" BASIS,
AnnaBridge 189:f392fc9709a3 20 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
AnnaBridge 189:f392fc9709a3 21 * See the License for the specific language governing permissions and
AnnaBridge 189:f392fc9709a3 22 * limitations under the License.
AnnaBridge 189:f392fc9709a3 23 *******************************************************************************/
AnnaBridge 189:f392fc9709a3 24
AnnaBridge 189:f392fc9709a3 25 #include <stdint.h>
AnnaBridge 189:f392fc9709a3 26 #include <stdbool.h>
AnnaBridge 189:f392fc9709a3 27 #include "cy_device.h"
AnnaBridge 189:f392fc9709a3 28 #include "device.h"
AnnaBridge 189:f392fc9709a3 29 #include "system_psoc6.h"
AnnaBridge 189:f392fc9709a3 30 #include "cy_device_headers.h"
AnnaBridge 189:f392fc9709a3 31 #include "psoc6_utils.h"
AnnaBridge 189:f392fc9709a3 32 #include "cy_syslib.h"
AnnaBridge 189:f392fc9709a3 33 #include "cy_wdt.h"
AnnaBridge 189:f392fc9709a3 34 #include "cycfg.h"
AnnaBridge 189:f392fc9709a3 35
AnnaBridge 189:f392fc9709a3 36 #if !defined(CY_IPC_DEFAULT_CFG_DISABLE)
AnnaBridge 189:f392fc9709a3 37 #include "cy_ipc_sema.h"
AnnaBridge 189:f392fc9709a3 38 #include "cy_ipc_pipe.h"
AnnaBridge 189:f392fc9709a3 39 #include "cy_ipc_drv.h"
AnnaBridge 189:f392fc9709a3 40
AnnaBridge 189:f392fc9709a3 41 #if defined(CY_DEVICE_PSOC6ABLE2)
AnnaBridge 189:f392fc9709a3 42 #include "cy_flash.h"
AnnaBridge 189:f392fc9709a3 43 #endif /* defined(CY_DEVICE_PSOC6ABLE2) */
AnnaBridge 189:f392fc9709a3 44 #endif /* !defined(CY_IPC_DEFAULT_CFG_DISABLE) */
AnnaBridge 189:f392fc9709a3 45
AnnaBridge 189:f392fc9709a3 46
AnnaBridge 189:f392fc9709a3 47 /*******************************************************************************
AnnaBridge 189:f392fc9709a3 48 * SystemCoreClockUpdate()
AnnaBridge 189:f392fc9709a3 49 *******************************************************************************/
AnnaBridge 189:f392fc9709a3 50
AnnaBridge 189:f392fc9709a3 51 /** Default HFClk frequency in Hz */
AnnaBridge 189:f392fc9709a3 52 #define CY_CLK_HFCLK0_FREQ_HZ_DEFAULT (8000000UL)
AnnaBridge 189:f392fc9709a3 53
AnnaBridge 189:f392fc9709a3 54 /** Default PeriClk frequency in Hz */
AnnaBridge 189:f392fc9709a3 55 #define CY_CLK_PERICLK_FREQ_HZ_DEFAULT (4000000UL)
AnnaBridge 189:f392fc9709a3 56
AnnaBridge 189:f392fc9709a3 57 /** Default SlowClk system core frequency in Hz */
AnnaBridge 189:f392fc9709a3 58 #define CY_CLK_SYSTEM_FREQ_HZ_DEFAULT (8000000UL)
AnnaBridge 189:f392fc9709a3 59
AnnaBridge 189:f392fc9709a3 60 /** IMO frequency in Hz */
AnnaBridge 189:f392fc9709a3 61 #define CY_CLK_IMO_FREQ_HZ (8000000UL)
AnnaBridge 189:f392fc9709a3 62
AnnaBridge 189:f392fc9709a3 63 /** HVILO frequency in Hz */
AnnaBridge 189:f392fc9709a3 64 #define CY_CLK_HVILO_FREQ_HZ (32000UL)
AnnaBridge 189:f392fc9709a3 65
AnnaBridge 189:f392fc9709a3 66 /** PILO frequency in Hz */
AnnaBridge 189:f392fc9709a3 67 #define CY_CLK_PILO_FREQ_HZ (32768UL)
AnnaBridge 189:f392fc9709a3 68
AnnaBridge 189:f392fc9709a3 69 /** WCO frequency in Hz */
AnnaBridge 189:f392fc9709a3 70 #define CY_CLK_WCO_FREQ_HZ (32768UL)
AnnaBridge 189:f392fc9709a3 71
AnnaBridge 189:f392fc9709a3 72 /** ALTLF frequency in Hz */
AnnaBridge 189:f392fc9709a3 73 #define CY_CLK_ALTLF_FREQ_HZ (32768UL)
AnnaBridge 189:f392fc9709a3 74
AnnaBridge 189:f392fc9709a3 75
AnnaBridge 189:f392fc9709a3 76 /**
AnnaBridge 189:f392fc9709a3 77 * Holds the SlowClk (Cortex-M0+) or FastClk (Cortex-M4) system core clock,
AnnaBridge 189:f392fc9709a3 78 * which is the system clock frequency supplied to the SysTick timer and the
AnnaBridge 189:f392fc9709a3 79 * processor core clock.
AnnaBridge 189:f392fc9709a3 80 * This variable implements CMSIS Core global variable.
AnnaBridge 189:f392fc9709a3 81 * Refer to the [CMSIS documentation]
AnnaBridge 189:f392fc9709a3 82 * (http://www.keil.com/pack/doc/CMSIS/Core/html/group__system__init__gr.html "System and Clock Configuration")
AnnaBridge 189:f392fc9709a3 83 * for more details.
AnnaBridge 189:f392fc9709a3 84 * This variable can be used by debuggers to query the frequency
AnnaBridge 189:f392fc9709a3 85 * of the debug timer or to configure the trace clock speed.
AnnaBridge 189:f392fc9709a3 86 *
AnnaBridge 189:f392fc9709a3 87 * \attention Compilers must be configured to avoid removing this variable in case
AnnaBridge 189:f392fc9709a3 88 * the application program is not using it. Debugging systems require the variable
AnnaBridge 189:f392fc9709a3 89 * to be physically present in memory so that it can be examined to configure the debugger. */
AnnaBridge 189:f392fc9709a3 90 uint32_t SystemCoreClock = CY_CLK_SYSTEM_FREQ_HZ_DEFAULT;
AnnaBridge 189:f392fc9709a3 91
AnnaBridge 189:f392fc9709a3 92 /** Holds the HFClk0 clock frequency. Updated by \ref SystemCoreClockUpdate(). */
AnnaBridge 189:f392fc9709a3 93 uint32_t cy_Hfclk0FreqHz = CY_CLK_HFCLK0_FREQ_HZ_DEFAULT;
AnnaBridge 189:f392fc9709a3 94
AnnaBridge 189:f392fc9709a3 95 /** Holds the PeriClk clock frequency. Updated by \ref SystemCoreClockUpdate(). */
AnnaBridge 189:f392fc9709a3 96 uint32_t cy_PeriClkFreqHz = CY_CLK_PERICLK_FREQ_HZ_DEFAULT;
AnnaBridge 189:f392fc9709a3 97
AnnaBridge 189:f392fc9709a3 98 /** Holds the Alternate high frequency clock in Hz. Updated by \ref SystemCoreClockUpdate(). */
AnnaBridge 189:f392fc9709a3 99 #if (defined (CY_IP_MXBLESS) && (CY_IP_MXBLESS == 1UL)) || defined (CY_DOXYGEN)
AnnaBridge 189:f392fc9709a3 100 uint32_t cy_BleEcoClockFreqHz = CY_CLK_ALTHF_FREQ_HZ;
AnnaBridge 189:f392fc9709a3 101 #endif /* (defined (CY_IP_MXBLESS) && (CY_IP_MXBLESS == 1UL)) || defined (CY_DOXYGEN) */
AnnaBridge 189:f392fc9709a3 102
AnnaBridge 189:f392fc9709a3 103 /* SCB->CPACR */
AnnaBridge 189:f392fc9709a3 104 #define SCB_CPACR_CP10_CP11_ENABLE (0xFUL << 20u)
AnnaBridge 189:f392fc9709a3 105
AnnaBridge 189:f392fc9709a3 106
AnnaBridge 189:f392fc9709a3 107 /*******************************************************************************
AnnaBridge 189:f392fc9709a3 108 * SystemInit()
AnnaBridge 189:f392fc9709a3 109 *******************************************************************************/
AnnaBridge 189:f392fc9709a3 110
AnnaBridge 189:f392fc9709a3 111 /* CLK_FLL_CONFIG default values */
AnnaBridge 189:f392fc9709a3 112 #define CY_FB_CLK_FLL_CONFIG_VALUE (0x01000000u)
AnnaBridge 189:f392fc9709a3 113 #define CY_FB_CLK_FLL_CONFIG2_VALUE (0x00020001u)
AnnaBridge 189:f392fc9709a3 114 #define CY_FB_CLK_FLL_CONFIG3_VALUE (0x00002800u)
AnnaBridge 189:f392fc9709a3 115 #define CY_FB_CLK_FLL_CONFIG4_VALUE (0x000000FFu)
AnnaBridge 189:f392fc9709a3 116
AnnaBridge 189:f392fc9709a3 117
AnnaBridge 189:f392fc9709a3 118 /*******************************************************************************
AnnaBridge 189:f392fc9709a3 119 * SystemCoreClockUpdate (void)
AnnaBridge 189:f392fc9709a3 120 *******************************************************************************/
AnnaBridge 189:f392fc9709a3 121
AnnaBridge 189:f392fc9709a3 122 /* Do not use these definitions directly in your application */
AnnaBridge 189:f392fc9709a3 123 #define CY_DELAY_MS_OVERFLOW_THRESHOLD (0x8000u)
AnnaBridge 189:f392fc9709a3 124 #define CY_DELAY_1K_THRESHOLD (1000u)
AnnaBridge 189:f392fc9709a3 125 #define CY_DELAY_1K_MINUS_1_THRESHOLD (CY_DELAY_1K_THRESHOLD - 1u)
AnnaBridge 189:f392fc9709a3 126 #define CY_DELAY_1M_THRESHOLD (1000000u)
AnnaBridge 189:f392fc9709a3 127 #define CY_DELAY_1M_MINUS_1_THRESHOLD (CY_DELAY_1M_THRESHOLD - 1u)
AnnaBridge 189:f392fc9709a3 128 uint32_t cy_delayFreqHz = CY_CLK_SYSTEM_FREQ_HZ_DEFAULT;
AnnaBridge 189:f392fc9709a3 129
AnnaBridge 189:f392fc9709a3 130 uint32_t cy_delayFreqKhz = (CY_CLK_SYSTEM_FREQ_HZ_DEFAULT + CY_DELAY_1K_MINUS_1_THRESHOLD) /
AnnaBridge 189:f392fc9709a3 131 CY_DELAY_1K_THRESHOLD;
AnnaBridge 189:f392fc9709a3 132
AnnaBridge 189:f392fc9709a3 133 uint8_t cy_delayFreqMhz = (uint8_t)((CY_CLK_SYSTEM_FREQ_HZ_DEFAULT + CY_DELAY_1M_MINUS_1_THRESHOLD) /
AnnaBridge 189:f392fc9709a3 134 CY_DELAY_1M_THRESHOLD);
AnnaBridge 189:f392fc9709a3 135
AnnaBridge 189:f392fc9709a3 136 uint32_t cy_delay32kMs = CY_DELAY_MS_OVERFLOW_THRESHOLD *
AnnaBridge 189:f392fc9709a3 137 ((CY_CLK_SYSTEM_FREQ_HZ_DEFAULT + CY_DELAY_1K_MINUS_1_THRESHOLD) / CY_DELAY_1K_THRESHOLD);
AnnaBridge 189:f392fc9709a3 138
AnnaBridge 189:f392fc9709a3 139 #define CY_ROOT_PATH_SRC_IMO (0UL)
AnnaBridge 189:f392fc9709a3 140 #define CY_ROOT_PATH_SRC_EXT (1UL)
AnnaBridge 189:f392fc9709a3 141 #if (SRSS_ECO_PRESENT == 1U)
AnnaBridge 189:f392fc9709a3 142 #define CY_ROOT_PATH_SRC_ECO (2UL)
AnnaBridge 189:f392fc9709a3 143 #endif /* (SRSS_ECO_PRESENT == 1U) */
AnnaBridge 189:f392fc9709a3 144 #if (SRSS_ALTHF_PRESENT == 1U)
AnnaBridge 189:f392fc9709a3 145 #define CY_ROOT_PATH_SRC_ALTHF (3UL)
AnnaBridge 189:f392fc9709a3 146 #endif /* (SRSS_ALTHF_PRESENT == 1U) */
AnnaBridge 189:f392fc9709a3 147 #define CY_ROOT_PATH_SRC_DSI_MUX (4UL)
AnnaBridge 189:f392fc9709a3 148 #define CY_ROOT_PATH_SRC_DSI_MUX_HVILO (16UL)
AnnaBridge 189:f392fc9709a3 149 #define CY_ROOT_PATH_SRC_DSI_MUX_WCO (17UL)
AnnaBridge 189:f392fc9709a3 150 #if (SRSS_ALTLF_PRESENT == 1U)
AnnaBridge 189:f392fc9709a3 151 #define CY_ROOT_PATH_SRC_DSI_MUX_ALTLF (18UL)
AnnaBridge 189:f392fc9709a3 152 #endif /* (SRSS_ALTLF_PRESENT == 1U) */
AnnaBridge 189:f392fc9709a3 153 #if (SRSS_PILO_PRESENT == 1U)
AnnaBridge 189:f392fc9709a3 154 #define CY_ROOT_PATH_SRC_DSI_MUX_PILO (19UL)
AnnaBridge 189:f392fc9709a3 155 #endif /* (SRSS_PILO_PRESENT == 1U) */
AnnaBridge 189:f392fc9709a3 156
AnnaBridge 189:f392fc9709a3 157
AnnaBridge 189:f392fc9709a3 158 /*******************************************************************************
AnnaBridge 189:f392fc9709a3 159 * Function Name: SystemInit
AnnaBridge 189:f392fc9709a3 160 ****************************************************************************//**
AnnaBridge 189:f392fc9709a3 161 * \cond
AnnaBridge 189:f392fc9709a3 162 * Initializes the system:
AnnaBridge 189:f392fc9709a3 163 * - Restores FLL registers to the default state for single core devices.
AnnaBridge 189:f392fc9709a3 164 * - Unlocks and disables WDT.
AnnaBridge 189:f392fc9709a3 165 * - Calls Cy_PDL_Init() function to define the driver library.
AnnaBridge 189:f392fc9709a3 166 * - Calls the Cy_SystemInit() function, if compiled from PSoC Creator.
AnnaBridge 189:f392fc9709a3 167 * - Calls \ref SystemCoreClockUpdate().
AnnaBridge 189:f392fc9709a3 168 * \endcond
AnnaBridge 189:f392fc9709a3 169 *******************************************************************************/
AnnaBridge 189:f392fc9709a3 170 void SystemInit(void)
AnnaBridge 189:f392fc9709a3 171 {
AnnaBridge 189:f392fc9709a3 172 Cy_PDL_Init(CY_DEVICE_CFG);
AnnaBridge 189:f392fc9709a3 173
AnnaBridge 189:f392fc9709a3 174 #ifdef __CM0P_PRESENT
AnnaBridge 189:f392fc9709a3 175 #if (__CM0P_PRESENT == 0)
AnnaBridge 189:f392fc9709a3 176 /* Restore FLL registers to the default state as they are not restored by the ROM code */
AnnaBridge 189:f392fc9709a3 177 uint32_t copy = SRSS->CLK_FLL_CONFIG;
AnnaBridge 189:f392fc9709a3 178 copy &= ~SRSS_CLK_FLL_CONFIG_FLL_ENABLE_Msk;
AnnaBridge 189:f392fc9709a3 179 SRSS->CLK_FLL_CONFIG = copy;
AnnaBridge 189:f392fc9709a3 180
AnnaBridge 189:f392fc9709a3 181 copy = SRSS->CLK_ROOT_SELECT[0u];
AnnaBridge 189:f392fc9709a3 182 copy &= ~SRSS_CLK_ROOT_SELECT_ROOT_DIV_Msk; /* Set ROOT_DIV = 0*/
AnnaBridge 189:f392fc9709a3 183 SRSS->CLK_ROOT_SELECT[0u] = copy;
AnnaBridge 189:f392fc9709a3 184
AnnaBridge 189:f392fc9709a3 185 SRSS->CLK_FLL_CONFIG = CY_FB_CLK_FLL_CONFIG_VALUE;
AnnaBridge 189:f392fc9709a3 186 SRSS->CLK_FLL_CONFIG2 = CY_FB_CLK_FLL_CONFIG2_VALUE;
AnnaBridge 189:f392fc9709a3 187 SRSS->CLK_FLL_CONFIG3 = CY_FB_CLK_FLL_CONFIG3_VALUE;
AnnaBridge 189:f392fc9709a3 188 SRSS->CLK_FLL_CONFIG4 = CY_FB_CLK_FLL_CONFIG4_VALUE;
AnnaBridge 189:f392fc9709a3 189
AnnaBridge 189:f392fc9709a3 190 /* Unlock and disable WDT */
AnnaBridge 189:f392fc9709a3 191 Cy_WDT_Unlock();
AnnaBridge 189:f392fc9709a3 192 Cy_WDT_Disable();
AnnaBridge 189:f392fc9709a3 193 #endif /* (__CM0P_PRESENT == 0) */
AnnaBridge 189:f392fc9709a3 194 #endif /* __CM0P_PRESENT */
AnnaBridge 189:f392fc9709a3 195
AnnaBridge 189:f392fc9709a3 196 Cy_SystemInit();
AnnaBridge 189:f392fc9709a3 197 SystemCoreClockUpdate();
AnnaBridge 189:f392fc9709a3 198
AnnaBridge 189:f392fc9709a3 199 #if !defined(CY_IPC_DEFAULT_CFG_DISABLE)
AnnaBridge 189:f392fc9709a3 200
AnnaBridge 189:f392fc9709a3 201 #ifdef __CM0P_PRESENT
AnnaBridge 189:f392fc9709a3 202 #if (__CM0P_PRESENT == 0)
AnnaBridge 189:f392fc9709a3 203 /* Allocate and initialize semaphores for the system operations. */
AnnaBridge 189:f392fc9709a3 204 static uint32_t ipcSemaArray[CY_IPC_SEMA_COUNT / CY_IPC_SEMA_PER_WORD];
AnnaBridge 189:f392fc9709a3 205 (void) Cy_IPC_Sema_Init(CY_IPC_CHAN_SEMA, CY_IPC_SEMA_COUNT, ipcSemaArray);
AnnaBridge 189:f392fc9709a3 206 #else
AnnaBridge 189:f392fc9709a3 207 (void) Cy_IPC_Sema_Init(CY_IPC_CHAN_SEMA, 0ul, NULL);
AnnaBridge 189:f392fc9709a3 208 #endif /* (__CM0P_PRESENT) */
AnnaBridge 189:f392fc9709a3 209 #else
AnnaBridge 189:f392fc9709a3 210 (void) Cy_IPC_Sema_Init(CY_IPC_CHAN_SEMA, 0ul, NULL);
AnnaBridge 189:f392fc9709a3 211 #endif /* __CM0P_PRESENT */
AnnaBridge 189:f392fc9709a3 212
AnnaBridge 189:f392fc9709a3 213
AnnaBridge 189:f392fc9709a3 214 /********************************************************************************
AnnaBridge 189:f392fc9709a3 215 *
AnnaBridge 189:f392fc9709a3 216 * Initializes the system pipes. The system pipes are used by BLE and Flash.
AnnaBridge 189:f392fc9709a3 217 *
AnnaBridge 189:f392fc9709a3 218 * If the default startup file is not used, or SystemInit() is not called in your
AnnaBridge 189:f392fc9709a3 219 * project, call the following three functions prior to executing any flash or
AnnaBridge 189:f392fc9709a3 220 * EmEEPROM write or erase operation:
AnnaBridge 189:f392fc9709a3 221 * -# Cy_IPC_Sema_Init()
AnnaBridge 189:f392fc9709a3 222 * -# Cy_IPC_Pipe_Config()
AnnaBridge 189:f392fc9709a3 223 * -# Cy_IPC_Pipe_Init()
AnnaBridge 189:f392fc9709a3 224 * -# Cy_Flash_Init()
AnnaBridge 189:f392fc9709a3 225 *
AnnaBridge 189:f392fc9709a3 226 *******************************************************************************/
AnnaBridge 189:f392fc9709a3 227 /* Create an array of endpoint structures */
AnnaBridge 189:f392fc9709a3 228 static cy_stc_ipc_pipe_ep_t systemIpcPipeEpArray[CY_IPC_MAX_ENDPOINTS];
AnnaBridge 189:f392fc9709a3 229
AnnaBridge 189:f392fc9709a3 230 Cy_IPC_Pipe_Config(systemIpcPipeEpArray);
AnnaBridge 189:f392fc9709a3 231
AnnaBridge 189:f392fc9709a3 232 static cy_ipc_pipe_callback_ptr_t systemIpcPipeSysCbArray[CY_SYS_CYPIPE_CLIENT_CNT];
AnnaBridge 189:f392fc9709a3 233
AnnaBridge 189:f392fc9709a3 234 static const cy_stc_ipc_pipe_config_t systemIpcPipeConfigCm4 =
AnnaBridge 189:f392fc9709a3 235 {
AnnaBridge 189:f392fc9709a3 236 /* .ep0ConfigData */
AnnaBridge 189:f392fc9709a3 237 {
AnnaBridge 189:f392fc9709a3 238 /* .ipcNotifierNumber */ CY_IPC_INTR_CYPIPE_EP0,
AnnaBridge 189:f392fc9709a3 239 /* .ipcNotifierPriority */ CY_SYS_INTR_CYPIPE_PRIOR_EP0,
AnnaBridge 189:f392fc9709a3 240 /* .ipcNotifierMuxNumber */ CY_SYS_INTR_CYPIPE_MUX_EP0,
AnnaBridge 189:f392fc9709a3 241 /* .epAddress */ CY_IPC_EP_CYPIPE_CM0_ADDR,
AnnaBridge 189:f392fc9709a3 242 /* .epConfig */ CY_SYS_CYPIPE_CONFIG_EP0
AnnaBridge 189:f392fc9709a3 243 },
AnnaBridge 189:f392fc9709a3 244 /* .ep1ConfigData */
AnnaBridge 189:f392fc9709a3 245 {
AnnaBridge 189:f392fc9709a3 246 /* .ipcNotifierNumber */ CY_IPC_INTR_CYPIPE_EP1,
AnnaBridge 189:f392fc9709a3 247 /* .ipcNotifierPriority */ CY_SYS_INTR_CYPIPE_PRIOR_EP1,
AnnaBridge 189:f392fc9709a3 248 /* .ipcNotifierMuxNumber */ 0u,
AnnaBridge 189:f392fc9709a3 249 /* .epAddress */ CY_IPC_EP_CYPIPE_CM4_ADDR,
AnnaBridge 189:f392fc9709a3 250 /* .epConfig */ CY_SYS_CYPIPE_CONFIG_EP1
AnnaBridge 189:f392fc9709a3 251 },
AnnaBridge 189:f392fc9709a3 252 /* .endpointClientsCount */ CY_SYS_CYPIPE_CLIENT_CNT,
AnnaBridge 189:f392fc9709a3 253 /* .endpointsCallbacksArray */ systemIpcPipeSysCbArray,
AnnaBridge 189:f392fc9709a3 254 /* .userPipeIsrHandler */ &Cy_SysIpcPipeIsrCm4
AnnaBridge 189:f392fc9709a3 255 };
AnnaBridge 189:f392fc9709a3 256
AnnaBridge 189:f392fc9709a3 257 if (cy_device->flashPipeRequired != 0u)
AnnaBridge 189:f392fc9709a3 258 {
AnnaBridge 189:f392fc9709a3 259 Cy_IPC_Pipe_Init(&systemIpcPipeConfigCm4);
AnnaBridge 189:f392fc9709a3 260 }
AnnaBridge 189:f392fc9709a3 261
AnnaBridge 189:f392fc9709a3 262 #if defined(CY_DEVICE_PSOC6ABLE2)
AnnaBridge 189:f392fc9709a3 263 Cy_Flash_Init();
AnnaBridge 189:f392fc9709a3 264 #endif /* defined(CY_DEVICE_PSOC6ABLE2) */
AnnaBridge 189:f392fc9709a3 265
AnnaBridge 189:f392fc9709a3 266 #endif /* !defined(CY_IPC_DEFAULT_CFG_DISABLE) */
AnnaBridge 189:f392fc9709a3 267 }
AnnaBridge 189:f392fc9709a3 268
AnnaBridge 189:f392fc9709a3 269
AnnaBridge 189:f392fc9709a3 270 /*******************************************************************************
AnnaBridge 189:f392fc9709a3 271 * Function Name: mbed_sdk_init
AnnaBridge 189:f392fc9709a3 272 ****************************************************************************//**
AnnaBridge 189:f392fc9709a3 273 *
AnnaBridge 189:f392fc9709a3 274 * Mbed's post-memory-initialization function.
AnnaBridge 189:f392fc9709a3 275 * Used here to initialize common parts of the Cypress libraries.
AnnaBridge 189:f392fc9709a3 276 *
AnnaBridge 189:f392fc9709a3 277 *******************************************************************************/
AnnaBridge 189:f392fc9709a3 278 void mbed_sdk_init(void)
AnnaBridge 189:f392fc9709a3 279 {
AnnaBridge 189:f392fc9709a3 280 /* Initialize shared resource manager */
AnnaBridge 189:f392fc9709a3 281 cy_srm_initialize();
AnnaBridge 189:f392fc9709a3 282
AnnaBridge 189:f392fc9709a3 283 /* Initialize system and clocks. */
AnnaBridge 189:f392fc9709a3 284 /* Placed here as it must be done after proper LIBC initialization. */
AnnaBridge 189:f392fc9709a3 285 SystemInit();
AnnaBridge 189:f392fc9709a3 286
AnnaBridge 189:f392fc9709a3 287 /* Set up the device based on configurator selections */
AnnaBridge 189:f392fc9709a3 288 init_cycfg_all();
AnnaBridge 189:f392fc9709a3 289
AnnaBridge 189:f392fc9709a3 290 /* Enable global interrupts */
AnnaBridge 189:f392fc9709a3 291 __enable_irq();
AnnaBridge 189:f392fc9709a3 292 }
AnnaBridge 189:f392fc9709a3 293
AnnaBridge 189:f392fc9709a3 294
AnnaBridge 189:f392fc9709a3 295
AnnaBridge 189:f392fc9709a3 296 /*******************************************************************************
AnnaBridge 189:f392fc9709a3 297 * Function Name: Cy_SystemInit
AnnaBridge 189:f392fc9709a3 298 ****************************************************************************//**
AnnaBridge 189:f392fc9709a3 299 *
AnnaBridge 189:f392fc9709a3 300 * The function is called during device startup. Once project compiled as part of
AnnaBridge 189:f392fc9709a3 301 * the PSoC Creator project, the Cy_SystemInit() function is generated by the
AnnaBridge 189:f392fc9709a3 302 * PSoC Creator.
AnnaBridge 189:f392fc9709a3 303 *
AnnaBridge 189:f392fc9709a3 304 * The function generated by PSoC Creator performs all of the necessary device
AnnaBridge 189:f392fc9709a3 305 * configuration based on the design settings. This includes settings from the
AnnaBridge 189:f392fc9709a3 306 * Design Wide Resources (DWR) such as Clocks and Pins as well as any component
AnnaBridge 189:f392fc9709a3 307 * configuration that is necessary.
AnnaBridge 189:f392fc9709a3 308 *
AnnaBridge 189:f392fc9709a3 309 *******************************************************************************/
AnnaBridge 189:f392fc9709a3 310 __WEAK void Cy_SystemInit(void)
AnnaBridge 189:f392fc9709a3 311 {
AnnaBridge 189:f392fc9709a3 312 /* Empty weak function. The actual implementation to be in the PSoC Creator
AnnaBridge 189:f392fc9709a3 313 * generated strong function.
AnnaBridge 189:f392fc9709a3 314 */
AnnaBridge 189:f392fc9709a3 315 }
AnnaBridge 189:f392fc9709a3 316
AnnaBridge 189:f392fc9709a3 317
AnnaBridge 189:f392fc9709a3 318 /*******************************************************************************
AnnaBridge 189:f392fc9709a3 319 * Function Name: SystemCoreClockUpdate
AnnaBridge 189:f392fc9709a3 320 ****************************************************************************//**
AnnaBridge 189:f392fc9709a3 321 *
AnnaBridge 189:f392fc9709a3 322 * Gets core clock frequency and updates \ref SystemCoreClock, \ref
AnnaBridge 189:f392fc9709a3 323 * cy_Hfclk0FreqHz, and \ref cy_PeriClkFreqHz.
AnnaBridge 189:f392fc9709a3 324 *
AnnaBridge 189:f392fc9709a3 325 * Updates global variables used by the \ref Cy_SysLib_Delay(), \ref
AnnaBridge 189:f392fc9709a3 326 * Cy_SysLib_DelayUs(), and \ref Cy_SysLib_DelayCycles().
AnnaBridge 189:f392fc9709a3 327 *
AnnaBridge 189:f392fc9709a3 328 *******************************************************************************/
AnnaBridge 189:f392fc9709a3 329 void SystemCoreClockUpdate (void)
AnnaBridge 189:f392fc9709a3 330 {
AnnaBridge 189:f392fc9709a3 331 uint32_t srcFreqHz;
AnnaBridge 189:f392fc9709a3 332 uint32_t pathFreqHz;
AnnaBridge 189:f392fc9709a3 333 uint32_t fastClkDiv;
AnnaBridge 189:f392fc9709a3 334 uint32_t periClkDiv;
AnnaBridge 189:f392fc9709a3 335 uint32_t rootPath;
AnnaBridge 189:f392fc9709a3 336 uint32_t srcClk;
AnnaBridge 189:f392fc9709a3 337
AnnaBridge 189:f392fc9709a3 338 /* Get root path clock for the high-frequency clock # 0 */
AnnaBridge 189:f392fc9709a3 339 rootPath = _FLD2VAL(SRSS_CLK_ROOT_SELECT_ROOT_MUX, SRSS->CLK_ROOT_SELECT[0u]);
AnnaBridge 189:f392fc9709a3 340
AnnaBridge 189:f392fc9709a3 341 /* Get source of the root path clock */
AnnaBridge 189:f392fc9709a3 342 srcClk = _FLD2VAL(SRSS_CLK_PATH_SELECT_PATH_MUX, SRSS->CLK_PATH_SELECT[rootPath]);
AnnaBridge 189:f392fc9709a3 343
AnnaBridge 189:f392fc9709a3 344 /* Get frequency of the source */
AnnaBridge 189:f392fc9709a3 345 switch (srcClk)
AnnaBridge 189:f392fc9709a3 346 {
AnnaBridge 189:f392fc9709a3 347 case CY_ROOT_PATH_SRC_IMO:
AnnaBridge 189:f392fc9709a3 348 srcFreqHz = CY_CLK_IMO_FREQ_HZ;
AnnaBridge 189:f392fc9709a3 349 break;
AnnaBridge 189:f392fc9709a3 350
AnnaBridge 189:f392fc9709a3 351 case CY_ROOT_PATH_SRC_EXT:
AnnaBridge 189:f392fc9709a3 352 srcFreqHz = CY_CLK_EXT_FREQ_HZ;
AnnaBridge 189:f392fc9709a3 353 break;
AnnaBridge 189:f392fc9709a3 354
AnnaBridge 189:f392fc9709a3 355 #if (SRSS_ECO_PRESENT == 1U)
AnnaBridge 189:f392fc9709a3 356 case CY_ROOT_PATH_SRC_ECO:
AnnaBridge 189:f392fc9709a3 357 srcFreqHz = CY_CLK_ECO_FREQ_HZ;
AnnaBridge 189:f392fc9709a3 358 break;
AnnaBridge 189:f392fc9709a3 359 #endif /* (SRSS_ECO_PRESENT == 1U) */
AnnaBridge 189:f392fc9709a3 360
AnnaBridge 189:f392fc9709a3 361 #if defined (CY_IP_MXBLESS) && (CY_IP_MXBLESS == 1UL) && (SRSS_ALTHF_PRESENT == 1U)
AnnaBridge 189:f392fc9709a3 362 case CY_ROOT_PATH_SRC_ALTHF:
AnnaBridge 189:f392fc9709a3 363 srcFreqHz = cy_BleEcoClockFreqHz;
AnnaBridge 189:f392fc9709a3 364 break;
AnnaBridge 189:f392fc9709a3 365 #endif /* defined (CY_IP_MXBLESS) && (CY_IP_MXBLESS == 1UL) && (SRSS_ALTHF_PRESENT == 1U) */
AnnaBridge 189:f392fc9709a3 366
AnnaBridge 189:f392fc9709a3 367 case CY_ROOT_PATH_SRC_DSI_MUX:
AnnaBridge 189:f392fc9709a3 368 {
AnnaBridge 189:f392fc9709a3 369 uint32_t dsi_src;
AnnaBridge 189:f392fc9709a3 370 dsi_src = _FLD2VAL(SRSS_CLK_DSI_SELECT_DSI_MUX, SRSS->CLK_DSI_SELECT[rootPath]);
AnnaBridge 189:f392fc9709a3 371 switch (dsi_src)
AnnaBridge 189:f392fc9709a3 372 {
AnnaBridge 189:f392fc9709a3 373 case CY_ROOT_PATH_SRC_DSI_MUX_HVILO:
AnnaBridge 189:f392fc9709a3 374 srcFreqHz = CY_CLK_HVILO_FREQ_HZ;
AnnaBridge 189:f392fc9709a3 375 break;
AnnaBridge 189:f392fc9709a3 376
AnnaBridge 189:f392fc9709a3 377 case CY_ROOT_PATH_SRC_DSI_MUX_WCO:
AnnaBridge 189:f392fc9709a3 378 srcFreqHz = CY_CLK_WCO_FREQ_HZ;
AnnaBridge 189:f392fc9709a3 379 break;
AnnaBridge 189:f392fc9709a3 380
AnnaBridge 189:f392fc9709a3 381 #if (SRSS_ALTLF_PRESENT == 1U)
AnnaBridge 189:f392fc9709a3 382 case CY_ROOT_PATH_SRC_DSI_MUX_ALTLF:
AnnaBridge 189:f392fc9709a3 383 srcFreqHz = CY_CLK_ALTLF_FREQ_HZ;
AnnaBridge 189:f392fc9709a3 384 break;
AnnaBridge 189:f392fc9709a3 385 #endif /* (SRSS_ALTLF_PRESENT == 1U) */
AnnaBridge 189:f392fc9709a3 386
AnnaBridge 189:f392fc9709a3 387 #if (SRSS_PILO_PRESENT == 1U)
AnnaBridge 189:f392fc9709a3 388 case CY_ROOT_PATH_SRC_DSI_MUX_PILO:
AnnaBridge 189:f392fc9709a3 389 srcFreqHz = CY_CLK_PILO_FREQ_HZ;
AnnaBridge 189:f392fc9709a3 390 break;
AnnaBridge 189:f392fc9709a3 391 #endif /* (SRSS_PILO_PRESENT == 1U) */
AnnaBridge 189:f392fc9709a3 392
AnnaBridge 189:f392fc9709a3 393 default:
AnnaBridge 189:f392fc9709a3 394 srcFreqHz = CY_CLK_HVILO_FREQ_HZ;
AnnaBridge 189:f392fc9709a3 395 break;
AnnaBridge 189:f392fc9709a3 396 }
AnnaBridge 189:f392fc9709a3 397 }
AnnaBridge 189:f392fc9709a3 398 break;
AnnaBridge 189:f392fc9709a3 399
AnnaBridge 189:f392fc9709a3 400 default:
AnnaBridge 189:f392fc9709a3 401 srcFreqHz = CY_CLK_EXT_FREQ_HZ;
AnnaBridge 189:f392fc9709a3 402 break;
AnnaBridge 189:f392fc9709a3 403 }
AnnaBridge 189:f392fc9709a3 404
AnnaBridge 189:f392fc9709a3 405 if (rootPath == 0UL)
AnnaBridge 189:f392fc9709a3 406 {
AnnaBridge 189:f392fc9709a3 407 /* FLL */
AnnaBridge 189:f392fc9709a3 408 bool fllLocked = ( 0UL != _FLD2VAL(SRSS_CLK_FLL_STATUS_LOCKED, SRSS->CLK_FLL_STATUS));
AnnaBridge 189:f392fc9709a3 409 bool fllOutputOutput = ( 3UL == _FLD2VAL(SRSS_CLK_FLL_CONFIG3_BYPASS_SEL, SRSS->CLK_FLL_CONFIG3));
AnnaBridge 189:f392fc9709a3 410 bool fllOutputAuto = ((0UL == _FLD2VAL(SRSS_CLK_FLL_CONFIG3_BYPASS_SEL, SRSS->CLK_FLL_CONFIG3)) ||
AnnaBridge 189:f392fc9709a3 411 (1UL == _FLD2VAL(SRSS_CLK_FLL_CONFIG3_BYPASS_SEL, SRSS->CLK_FLL_CONFIG3)));
AnnaBridge 189:f392fc9709a3 412 if ((fllOutputAuto && fllLocked) || fllOutputOutput)
AnnaBridge 189:f392fc9709a3 413 {
AnnaBridge 189:f392fc9709a3 414 uint32_t fllMult;
AnnaBridge 189:f392fc9709a3 415 uint32_t refDiv;
AnnaBridge 189:f392fc9709a3 416 uint32_t outputDiv;
AnnaBridge 189:f392fc9709a3 417
AnnaBridge 189:f392fc9709a3 418 fllMult = _FLD2VAL(SRSS_CLK_FLL_CONFIG_FLL_MULT, SRSS->CLK_FLL_CONFIG);
AnnaBridge 189:f392fc9709a3 419 refDiv = _FLD2VAL(SRSS_CLK_FLL_CONFIG2_FLL_REF_DIV, SRSS->CLK_FLL_CONFIG2);
AnnaBridge 189:f392fc9709a3 420 outputDiv = _FLD2VAL(SRSS_CLK_FLL_CONFIG_FLL_OUTPUT_DIV, SRSS->CLK_FLL_CONFIG) + 1UL;
AnnaBridge 189:f392fc9709a3 421
AnnaBridge 189:f392fc9709a3 422 pathFreqHz = ((srcFreqHz / refDiv) * fllMult) / outputDiv;
AnnaBridge 189:f392fc9709a3 423 }
AnnaBridge 189:f392fc9709a3 424 else
AnnaBridge 189:f392fc9709a3 425 {
AnnaBridge 189:f392fc9709a3 426 pathFreqHz = srcFreqHz;
AnnaBridge 189:f392fc9709a3 427 }
AnnaBridge 189:f392fc9709a3 428 }
AnnaBridge 189:f392fc9709a3 429 else if ((rootPath == 1UL) || (rootPath == 2UL))
AnnaBridge 189:f392fc9709a3 430 {
AnnaBridge 189:f392fc9709a3 431 /* PLL */
AnnaBridge 189:f392fc9709a3 432 bool pllLocked = ( 0UL != _FLD2VAL(SRSS_CLK_PLL_STATUS_LOCKED, SRSS->CLK_PLL_STATUS[rootPath - 1UL]));
AnnaBridge 189:f392fc9709a3 433 bool pllOutputOutput = ( 3UL == _FLD2VAL(SRSS_CLK_PLL_CONFIG_BYPASS_SEL, SRSS->CLK_PLL_CONFIG[rootPath - 1UL]));
AnnaBridge 189:f392fc9709a3 434 bool pllOutputAuto = ((0UL == _FLD2VAL(SRSS_CLK_PLL_CONFIG_BYPASS_SEL, SRSS->CLK_PLL_CONFIG[rootPath - 1UL])) ||
AnnaBridge 189:f392fc9709a3 435 (1UL == _FLD2VAL(SRSS_CLK_PLL_CONFIG_BYPASS_SEL, SRSS->CLK_PLL_CONFIG[rootPath - 1UL])));
AnnaBridge 189:f392fc9709a3 436 if ((pllOutputAuto && pllLocked) || pllOutputOutput)
AnnaBridge 189:f392fc9709a3 437 {
AnnaBridge 189:f392fc9709a3 438 uint32_t feedbackDiv;
AnnaBridge 189:f392fc9709a3 439 uint32_t referenceDiv;
AnnaBridge 189:f392fc9709a3 440 uint32_t outputDiv;
AnnaBridge 189:f392fc9709a3 441
AnnaBridge 189:f392fc9709a3 442 feedbackDiv = _FLD2VAL(SRSS_CLK_PLL_CONFIG_FEEDBACK_DIV, SRSS->CLK_PLL_CONFIG[rootPath - 1UL]);
AnnaBridge 189:f392fc9709a3 443 referenceDiv = _FLD2VAL(SRSS_CLK_PLL_CONFIG_REFERENCE_DIV, SRSS->CLK_PLL_CONFIG[rootPath - 1UL]);
AnnaBridge 189:f392fc9709a3 444 outputDiv = _FLD2VAL(SRSS_CLK_PLL_CONFIG_OUTPUT_DIV, SRSS->CLK_PLL_CONFIG[rootPath - 1UL]);
AnnaBridge 189:f392fc9709a3 445
AnnaBridge 189:f392fc9709a3 446 pathFreqHz = ((srcFreqHz * feedbackDiv) / referenceDiv) / outputDiv;
AnnaBridge 189:f392fc9709a3 447
AnnaBridge 189:f392fc9709a3 448 }
AnnaBridge 189:f392fc9709a3 449 else
AnnaBridge 189:f392fc9709a3 450 {
AnnaBridge 189:f392fc9709a3 451 pathFreqHz = srcFreqHz;
AnnaBridge 189:f392fc9709a3 452 }
AnnaBridge 189:f392fc9709a3 453 }
AnnaBridge 189:f392fc9709a3 454 else
AnnaBridge 189:f392fc9709a3 455 {
AnnaBridge 189:f392fc9709a3 456 /* Direct */
AnnaBridge 189:f392fc9709a3 457 pathFreqHz = srcFreqHz;
AnnaBridge 189:f392fc9709a3 458 }
AnnaBridge 189:f392fc9709a3 459
AnnaBridge 189:f392fc9709a3 460 /* Get frequency after hf_clk pre-divider */
AnnaBridge 189:f392fc9709a3 461 pathFreqHz = pathFreqHz >> _FLD2VAL(SRSS_CLK_ROOT_SELECT_ROOT_DIV, SRSS->CLK_ROOT_SELECT[0u]);
AnnaBridge 189:f392fc9709a3 462 cy_Hfclk0FreqHz = pathFreqHz;
AnnaBridge 189:f392fc9709a3 463
AnnaBridge 189:f392fc9709a3 464 /* Fast Clock Divider */
AnnaBridge 189:f392fc9709a3 465 fastClkDiv = 1u + _FLD2VAL(CPUSS_CM4_CLOCK_CTL_FAST_INT_DIV, CPUSS->CM4_CLOCK_CTL);
AnnaBridge 189:f392fc9709a3 466
AnnaBridge 189:f392fc9709a3 467 /* Peripheral Clock Divider */
AnnaBridge 189:f392fc9709a3 468 periClkDiv = 1u + _FLD2VAL(CPUSS_CM0_CLOCK_CTL_PERI_INT_DIV, CPUSS->CM0_CLOCK_CTL);
AnnaBridge 189:f392fc9709a3 469 cy_PeriClkFreqHz = pathFreqHz / periClkDiv;
AnnaBridge 189:f392fc9709a3 470
AnnaBridge 189:f392fc9709a3 471 pathFreqHz = pathFreqHz / fastClkDiv;
AnnaBridge 189:f392fc9709a3 472 SystemCoreClock = pathFreqHz;
AnnaBridge 189:f392fc9709a3 473
AnnaBridge 189:f392fc9709a3 474 /* Sets clock frequency for Delay API */
AnnaBridge 189:f392fc9709a3 475 cy_delayFreqHz = SystemCoreClock;
AnnaBridge 189:f392fc9709a3 476 cy_delayFreqMhz = (uint8_t)((cy_delayFreqHz + CY_DELAY_1M_MINUS_1_THRESHOLD) / CY_DELAY_1M_THRESHOLD);
AnnaBridge 189:f392fc9709a3 477 cy_delayFreqKhz = (cy_delayFreqHz + CY_DELAY_1K_MINUS_1_THRESHOLD) / CY_DELAY_1K_THRESHOLD;
AnnaBridge 189:f392fc9709a3 478 cy_delay32kMs = CY_DELAY_MS_OVERFLOW_THRESHOLD * cy_delayFreqKhz;
AnnaBridge 189:f392fc9709a3 479 }
AnnaBridge 189:f392fc9709a3 480
AnnaBridge 189:f392fc9709a3 481
AnnaBridge 189:f392fc9709a3 482 /*******************************************************************************
AnnaBridge 189:f392fc9709a3 483 * Function Name: Cy_SystemInitFpuEnable
AnnaBridge 189:f392fc9709a3 484 ****************************************************************************//**
AnnaBridge 189:f392fc9709a3 485 *
AnnaBridge 189:f392fc9709a3 486 * Enables the FPU if it is used. The function is called from the startup file.
AnnaBridge 189:f392fc9709a3 487 *
AnnaBridge 189:f392fc9709a3 488 *******************************************************************************/
AnnaBridge 189:f392fc9709a3 489 void Cy_SystemInitFpuEnable(void)
AnnaBridge 189:f392fc9709a3 490 {
AnnaBridge 189:f392fc9709a3 491 #if defined (__FPU_USED) && (__FPU_USED == 1U)
AnnaBridge 189:f392fc9709a3 492 uint32_t interruptState;
AnnaBridge 189:f392fc9709a3 493 interruptState = Cy_SysLib_EnterCriticalSection();
AnnaBridge 189:f392fc9709a3 494 SCB->CPACR |= SCB_CPACR_CP10_CP11_ENABLE;
AnnaBridge 189:f392fc9709a3 495 __DSB();
AnnaBridge 189:f392fc9709a3 496 __ISB();
AnnaBridge 189:f392fc9709a3 497 Cy_SysLib_ExitCriticalSection(interruptState);
AnnaBridge 189:f392fc9709a3 498 #endif /* (__FPU_USED) && (__FPU_USED == 1U) */
AnnaBridge 189:f392fc9709a3 499 }
AnnaBridge 189:f392fc9709a3 500
AnnaBridge 189:f392fc9709a3 501
AnnaBridge 189:f392fc9709a3 502 #if !defined(CY_IPC_DEFAULT_CFG_DISABLE)
AnnaBridge 189:f392fc9709a3 503 /*******************************************************************************
AnnaBridge 189:f392fc9709a3 504 * Function Name: Cy_SysIpcPipeIsrCm4
AnnaBridge 189:f392fc9709a3 505 ****************************************************************************//**
AnnaBridge 189:f392fc9709a3 506 *
AnnaBridge 189:f392fc9709a3 507 * This is the interrupt service routine for the system pipe.
AnnaBridge 189:f392fc9709a3 508 *
AnnaBridge 189:f392fc9709a3 509 *******************************************************************************/
AnnaBridge 189:f392fc9709a3 510 void Cy_SysIpcPipeIsrCm4(void)
AnnaBridge 189:f392fc9709a3 511 {
AnnaBridge 189:f392fc9709a3 512 Cy_IPC_Pipe_ExecuteCallback(CY_IPC_EP_CYPIPE_CM4_ADDR);
AnnaBridge 189:f392fc9709a3 513 }
AnnaBridge 189:f392fc9709a3 514 #endif
AnnaBridge 189:f392fc9709a3 515
AnnaBridge 189:f392fc9709a3 516 /*******************************************************************************
AnnaBridge 189:f392fc9709a3 517 * Function Name: Cy_MemorySymbols
AnnaBridge 189:f392fc9709a3 518 ****************************************************************************//**
AnnaBridge 189:f392fc9709a3 519 *
AnnaBridge 189:f392fc9709a3 520 * The intention of the function is to declare boundaries of the memories for the
AnnaBridge 189:f392fc9709a3 521 * MDK compilers. For the rest of the supported compilers, this is done using
AnnaBridge 189:f392fc9709a3 522 * linker configuration files. The following symbols used by the cymcuelftool.
AnnaBridge 189:f392fc9709a3 523 *
AnnaBridge 189:f392fc9709a3 524 *******************************************************************************/
AnnaBridge 189:f392fc9709a3 525 #if defined (__ARMCC_VERSION)
AnnaBridge 189:f392fc9709a3 526 __asm void Cy_MemorySymbols(void)
AnnaBridge 189:f392fc9709a3 527 {
AnnaBridge 189:f392fc9709a3 528 /* Flash */
AnnaBridge 189:f392fc9709a3 529 EXPORT __cy_memory_0_start
AnnaBridge 189:f392fc9709a3 530 EXPORT __cy_memory_0_length
AnnaBridge 189:f392fc9709a3 531 EXPORT __cy_memory_0_row_size
AnnaBridge 189:f392fc9709a3 532
AnnaBridge 189:f392fc9709a3 533 /* Working Flash */
AnnaBridge 189:f392fc9709a3 534 EXPORT __cy_memory_1_start
AnnaBridge 189:f392fc9709a3 535 EXPORT __cy_memory_1_length
AnnaBridge 189:f392fc9709a3 536 EXPORT __cy_memory_1_row_size
AnnaBridge 189:f392fc9709a3 537
AnnaBridge 189:f392fc9709a3 538 /* Supervisory Flash */
AnnaBridge 189:f392fc9709a3 539 EXPORT __cy_memory_2_start
AnnaBridge 189:f392fc9709a3 540 EXPORT __cy_memory_2_length
AnnaBridge 189:f392fc9709a3 541 EXPORT __cy_memory_2_row_size
AnnaBridge 189:f392fc9709a3 542
AnnaBridge 189:f392fc9709a3 543 /* XIP */
AnnaBridge 189:f392fc9709a3 544 EXPORT __cy_memory_3_start
AnnaBridge 189:f392fc9709a3 545 EXPORT __cy_memory_3_length
AnnaBridge 189:f392fc9709a3 546 EXPORT __cy_memory_3_row_size
AnnaBridge 189:f392fc9709a3 547
AnnaBridge 189:f392fc9709a3 548 /* eFuse */
AnnaBridge 189:f392fc9709a3 549 EXPORT __cy_memory_4_start
AnnaBridge 189:f392fc9709a3 550 EXPORT __cy_memory_4_length
AnnaBridge 189:f392fc9709a3 551 EXPORT __cy_memory_4_row_size
AnnaBridge 189:f392fc9709a3 552
AnnaBridge 189:f392fc9709a3 553 /* Flash */
AnnaBridge 189:f392fc9709a3 554 __cy_memory_0_start EQU __cpp(CY_FLASH_BASE)
AnnaBridge 189:f392fc9709a3 555 __cy_memory_0_length EQU __cpp(CY_FLASH_SIZE)
AnnaBridge 189:f392fc9709a3 556 __cy_memory_0_row_size EQU 0x200
AnnaBridge 189:f392fc9709a3 557
AnnaBridge 189:f392fc9709a3 558 /* Flash region for EEPROM emulation */
AnnaBridge 189:f392fc9709a3 559 __cy_memory_1_start EQU __cpp(CY_EM_EEPROM_BASE)
AnnaBridge 189:f392fc9709a3 560 __cy_memory_1_length EQU __cpp(CY_EM_EEPROM_SIZE)
AnnaBridge 189:f392fc9709a3 561 __cy_memory_1_row_size EQU 0x200
AnnaBridge 189:f392fc9709a3 562
AnnaBridge 189:f392fc9709a3 563 /* Supervisory Flash */
AnnaBridge 189:f392fc9709a3 564 __cy_memory_2_start EQU __cpp(CY_SFLASH_BASE)
AnnaBridge 189:f392fc9709a3 565 __cy_memory_2_length EQU __cpp(CY_SFLASH_SIZE)
AnnaBridge 189:f392fc9709a3 566 __cy_memory_2_row_size EQU 0x200
AnnaBridge 189:f392fc9709a3 567
AnnaBridge 189:f392fc9709a3 568 /* XIP */
AnnaBridge 189:f392fc9709a3 569 __cy_memory_3_start EQU __cpp(CY_XIP_BASE)
AnnaBridge 189:f392fc9709a3 570 __cy_memory_3_length EQU __cpp(CY_XIP_SIZE)
AnnaBridge 189:f392fc9709a3 571 __cy_memory_3_row_size EQU 0x200
AnnaBridge 189:f392fc9709a3 572
AnnaBridge 189:f392fc9709a3 573 /* eFuse */
AnnaBridge 189:f392fc9709a3 574 __cy_memory_4_start EQU __cpp(0x90700000)
AnnaBridge 189:f392fc9709a3 575 __cy_memory_4_length EQU __cpp(0x100000)
AnnaBridge 189:f392fc9709a3 576 __cy_memory_4_row_size EQU __cpp(1)
AnnaBridge 189:f392fc9709a3 577 }
AnnaBridge 189:f392fc9709a3 578
AnnaBridge 189:f392fc9709a3 579 #endif /* defined (__ARMCC_VERSION) */
AnnaBridge 189:f392fc9709a3 580
AnnaBridge 189:f392fc9709a3 581
AnnaBridge 189:f392fc9709a3 582 /* [] END OF FILE */