params->dataBuffer = &packetBuffer[4];
\n
+* \note that \c packetBuffer in this case must be 4 bytes aligned, as
+* \c dataBuffer is required to be 4 bytes aligned.
+*/
+#define CY_DFU_OPT_SEND_DATA (1)
+
+/** A non-zero value enables the Get Metadata DFU command */
+#define CY_DFU_OPT_GET_METADATA (1)
+
+/** A non-zero value enables the Set EI Vector DFU command */
+#define CY_DFU_OPT_SET_EIVECTOR (0)
+
+/**
+* A non-zero value allows writing metadata
+* with the Set App Metadata DFU command.
+*/
+#define CY_DFU_METADATA_WRITABLE (1)
+
+/** Non-zero value enables the usage of hardware Crypto API */
+#define CY_DFU_OPT_CRYPTO_HW (1)
+
+/** A non-zero value enables the usage of CRC-16 for DFU packet verification */
+#define CY_DFU_OPT_PACKET_CRC (0)
+
+/** Set the default application-format-possible values defined in \ref group_dfu_macro_app_type */
+#define CY_DFU_APP_FORMAT (CY_DFU_CYPRESS_APP)
+
+/** Set the default secure application-verification-type possible values
+ * defined in \ref group_dfu_macro_ver_type */
+#define CY_DFU_SEC_APP_VERIFY_TYPE (CY_DFU_VERIFY_FAST)
+
+/** \} group_dfu_macro_config */
+
+#if !defined(CY_DOXYGEN)
+ #if defined(__GNUC__) || defined(__ICCARM__)
+ /*
+ * These variables are defined in the linker scripts, the values of their addresses define
+ * corresponding applications start address and length.
+ */
+ extern uint8_t __cy_app0_verify_start;
+ extern uint8_t __cy_app0_verify_length;
+ extern uint8_t __cy_app1_verify_start;
+ extern uint8_t __cy_app1_verify_length;
+ extern uint8_t __cy_boot_signature_size;
+
+ #define CY_DFU_APP0_VERIFY_START ( (uint32_t)&__cy_app0_verify_start )
+ #define CY_DFU_APP0_VERIFY_LENGTH ( (uint32_t)&__cy_app0_verify_length )
+ #define CY_DFU_APP1_VERIFY_START ( (uint32_t)&__cy_app1_verify_start )
+ #define CY_DFU_APP1_VERIFY_LENGTH ( (uint32_t)&__cy_app1_verify_length )
+ #define CY_DFU_SIGNATURE_SIZE ( (uint32_t)&__cy_boot_signature_size )
+
+ #elif defined(__ARMCC_VERSION)
+ #include "dfu_mdk_common.h"
+
+ #define CY_DFU_APP0_VERIFY_START ( CY_APP0_CORE0_FLASH_ADDR )
+ #define CY_DFU_APP0_VERIFY_LENGTH ( CY_APP0_CORE0_FLASH_LENGTH + CY_APP0_CORE1_FLASH_LENGTH \
+ - CY_BOOT_SIGNATURE_SIZE)
+ #define CY_DFU_APP1_VERIFY_START ( CY_APP1_CORE0_FLASH_ADDR )
+ #define CY_DFU_APP1_VERIFY_LENGTH ( CY_APP1_CORE0_FLASH_LENGTH + CY_APP1_CORE1_FLASH_LENGTH \
+ - CY_BOOT_SIGNATURE_SIZE)
+ #define CY_DFU_SIGNATURE_SIZE CY_BOOT_SIGNATURE_SIZE
+
+ #else
+ #error "Not implemented for this compiler"
+ #endif /* defined(__GNUC__) || defined(__ICCARM__) */
+#endif /* !defined(CY_DOXYGEN) */
+
+
+#endif /* !defined(DFU_USER_H) */
+
+
+/* [] END OF FILE */
diff --git a/2020TPCApp0.cydsn/gcc/startup_psoc6_01_cm0plus.S b/2020TPCApp0.cydsn/gcc/startup_psoc6_01_cm0plus.S
new file mode 100644
index 0000000..e26df0a
--- /dev/null
+++ b/2020TPCApp0.cydsn/gcc/startup_psoc6_01_cm0plus.S
@@ -0,0 +1,404 @@
+/**************************************************************************//**
+ * @file startup_psoc6_01_cm0plus.S
+ * @brief CMSIS Core Device Startup File for
+ * ARMCM0plus Device Series
+ * @version V5.00
+ * @date 02. March 2016
+ ******************************************************************************/
+/*
+ * Copyright (c) 2009-2016 ARM Limited. All rights reserved.
+ *
+ * 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
+ *
+ * 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.
+ */
+
+ /* Address of the NMI handler */
+ #define CY_NMI_HANLDER_ADDR 0x0000000D
+
+ /* The CPU VTOR register */
+ #define CY_CPU_VTOR_ADDR 0xE000ED08
+
+ /* Copy flash vectors and data section to RAM */
+ #define __STARTUP_COPY_MULTIPLE
+
+ /* Clear single BSS section */
+ #define __STARTUP_CLEAR_BSS
+
+ .syntax unified
+ .arch armv6-m
+
+ .section .stack
+ .align 3
+#ifdef __STACK_SIZE
+ .equ Stack_Size, __STACK_SIZE
+#else
+ .equ Stack_Size, 0x00001000
+#endif
+ .globl __StackTop
+ .globl __StackLimit
+__StackLimit:
+ .space Stack_Size
+ .size __StackLimit, . - __StackLimit
+__StackTop:
+ .size __StackTop, . - __StackTop
+
+ .section .heap
+ .align 3
+#ifdef __HEAP_SIZE
+ .equ Heap_Size, __HEAP_SIZE
+#else
+ .equ Heap_Size, 0x00000400
+#endif
+ .globl __HeapBase
+ .globl __HeapLimit
+__HeapBase:
+ .if Heap_Size
+ .space Heap_Size
+ .endif
+ .size __HeapBase, . - __HeapBase
+__HeapLimit:
+ .size __HeapLimit, . - __HeapLimit
+
+ .section .vectors
+ .align 2
+ .globl __Vectors
+__Vectors:
+ .long __StackTop /* Top of Stack */
+ .long Reset_Handler /* Reset Handler */
+ .long CY_NMI_HANLDER_ADDR /* NMI Handler */
+ .long HardFault_Handler /* Hard Fault Handler */
+ .long 0 /* Reserved */
+ .long 0 /* Reserved */
+ .long 0 /* Reserved */
+ .long 0 /* Reserved */
+ .long 0 /* Reserved */
+ .long 0 /* Reserved */
+ .long 0 /* Reserved */
+ .long SVC_Handler /* SVCall Handler */
+ .long 0 /* Reserved */
+ .long 0 /* Reserved */
+ .long PendSV_Handler /* PendSV Handler */
+ .long SysTick_Handler /* SysTick Handler */
+
+ /* External interrupts Description */
+ .long NvicMux0_IRQHandler /* CM0+ NVIC Mux input 0 */
+ .long NvicMux1_IRQHandler /* CM0+ NVIC Mux input 1 */
+ .long NvicMux2_IRQHandler /* CM0+ NVIC Mux input 2 */
+ .long NvicMux3_IRQHandler /* CM0+ NVIC Mux input 3 */
+ .long NvicMux4_IRQHandler /* CM0+ NVIC Mux input 4 */
+ .long NvicMux5_IRQHandler /* CM0+ NVIC Mux input 5 */
+ .long NvicMux6_IRQHandler /* CM0+ NVIC Mux input 6 */
+ .long NvicMux7_IRQHandler /* CM0+ NVIC Mux input 7 */
+ .long NvicMux8_IRQHandler /* CM0+ NVIC Mux input 8 */
+ .long NvicMux9_IRQHandler /* CM0+ NVIC Mux input 9 */
+ .long NvicMux10_IRQHandler /* CM0+ NVIC Mux input 10 */
+ .long NvicMux11_IRQHandler /* CM0+ NVIC Mux input 11 */
+ .long NvicMux12_IRQHandler /* CM0+ NVIC Mux input 12 */
+ .long NvicMux13_IRQHandler /* CM0+ NVIC Mux input 13 */
+ .long NvicMux14_IRQHandler /* CM0+ NVIC Mux input 14 */
+ .long NvicMux15_IRQHandler /* CM0+ NVIC Mux input 15 */
+ .long NvicMux16_IRQHandler /* CM0+ NVIC Mux input 16 */
+ .long NvicMux17_IRQHandler /* CM0+ NVIC Mux input 17 */
+ .long NvicMux18_IRQHandler /* CM0+ NVIC Mux input 18 */
+ .long NvicMux19_IRQHandler /* CM0+ NVIC Mux input 19 */
+ .long NvicMux20_IRQHandler /* CM0+ NVIC Mux input 20 */
+ .long NvicMux21_IRQHandler /* CM0+ NVIC Mux input 21 */
+ .long NvicMux22_IRQHandler /* CM0+ NVIC Mux input 22 */
+ .long NvicMux23_IRQHandler /* CM0+ NVIC Mux input 23 */
+ .long NvicMux24_IRQHandler /* CM0+ NVIC Mux input 24 */
+ .long NvicMux25_IRQHandler /* CM0+ NVIC Mux input 25 */
+ .long NvicMux26_IRQHandler /* CM0+ NVIC Mux input 26 */
+ .long NvicMux27_IRQHandler /* CM0+ NVIC Mux input 27 */
+ .long NvicMux28_IRQHandler /* CM0+ NVIC Mux input 28 */
+ .long NvicMux29_IRQHandler /* CM0+ NVIC Mux input 29 */
+ .long NvicMux30_IRQHandler /* CM0+ NVIC Mux input 30 */
+ .long NvicMux31_IRQHandler /* CM0+ NVIC Mux input 31 */
+
+ .size __Vectors, . - __Vectors
+ .equ __VectorsSize, . - __Vectors
+
+ .section .ram_vectors
+ .align 2
+ .globl __ramVectors
+__ramVectors:
+ .space __VectorsSize
+ .size __ramVectors, . - __ramVectors
+
+
+ .text
+ .thumb
+ .thumb_func
+ .align 2
+
+ /*
+ * Device startup customization
+ *
+ * Note. The global resources are not yet initialized (for example global variables, peripherals, clocks)
+ * because this function is executed as the first instruction in the ResetHandler.
+ * The PDL is also not initialized to use the proper register offsets.
+ * The user of this function is responsible for initializing the PDL and resources before using them.
+ */
+ .weak Cy_OnResetUser
+ .func Cy_OnResetUser, Cy_OnResetUser
+ .type Cy_OnResetUser, %function
+
+Cy_OnResetUser:
+ bx lr
+ .size Cy_OnResetUser, . - Cy_OnResetUser
+ .endfunc
+
+ /* Reset handler */
+ .weak Reset_Handler
+ .type Reset_Handler, %function
+
+Reset_Handler:
+ bl Cy_OnResetUser
+ cpsid i
+
+/* Firstly it copies data from read only memory to RAM. There are two schemes
+ * to copy. One can copy more than one sections. Another can only copy
+ * one section. The former scheme needs more instructions and read-only
+ * data to implement than the latter.
+ * Macro __STARTUP_COPY_MULTIPLE is used to choose between two schemes. */
+
+#ifdef __STARTUP_COPY_MULTIPLE
+/* Multiple sections scheme.
+ *
+ * Between symbol address __copy_table_start__ and __copy_table_end__,
+ * there are array of triplets, each of which specify:
+ * offset 0: LMA of start of a section to copy from
+ * offset 4: VMA of start of a section to copy to
+ * offset 8: size of the section to copy. Must be multiply of 4
+ *
+ * All addresses must be aligned to 4 bytes boundary.
+ */
+ ldr r4, =__copy_table_start__
+ ldr r5, =__copy_table_end__
+
+.L_loop0:
+ cmp r4, r5
+ bge .L_loop0_done
+ ldr r1, [r4]
+ ldr r2, [r4, #4]
+ ldr r3, [r4, #8]
+
+.L_loop0_0:
+ subs r3, #4
+ blt .L_loop0_0_done
+ ldr r0, [r1, r3]
+ str r0, [r2, r3]
+ b .L_loop0_0
+
+.L_loop0_0_done:
+ adds r4, #12
+ b .L_loop0
+
+.L_loop0_done:
+#else
+/* Single section scheme.
+ *
+ * The ranges of copy from/to are specified by following symbols
+ * __etext: LMA of start of the section to copy from. Usually end of text
+ * __data_start__: VMA of start of the section to copy to
+ * __data_end__: VMA of end of the section to copy to
+ *
+ * All addresses must be aligned to 4 bytes boundary.
+ */
+ ldr r1, =__etext
+ ldr r2, =__data_start__
+ ldr r3, =__data_end__
+
+ subs r3, r2
+ ble .L_loop1_done
+
+.L_loop1:
+ subs r3, #4
+ ldr r0, [r1,r3]
+ str r0, [r2,r3]
+ bgt .L_loop1
+
+.L_loop1_done:
+#endif /*__STARTUP_COPY_MULTIPLE */
+
+/* This part of work usually is done in C library startup code. Otherwise,
+ * define this macro to enable it in this startup.
+ *
+ * There are two schemes too. One can clear multiple BSS sections. Another
+ * can only clear one section. The former is more size expensive than the
+ * latter.
+ *
+ * Define macro __STARTUP_CLEAR_BSS_MULTIPLE to choose the former.
+ * Otherwise define macro __STARTUP_CLEAR_BSS to choose the later.
+ */
+#ifdef __STARTUP_CLEAR_BSS_MULTIPLE
+/* Multiple sections scheme.
+ *
+ * Between symbol address __copy_table_start__ and __copy_table_end__,
+ * there are array of tuples specifying:
+ * offset 0: Start of a BSS section
+ * offset 4: Size of this BSS section. Must be multiply of 4
+ */
+ ldr r3, =__zero_table_start__
+ ldr r4, =__zero_table_end__
+
+.L_loop2:
+ cmp r3, r4
+ bge .L_loop2_done
+ ldr r1, [r3]
+ ldr r2, [r3, #4]
+ movs r0, 0
+
+.L_loop2_0:
+ subs r2, #4
+ blt .L_loop2_0_done
+ str r0, [r1, r2]
+ b .L_loop2_0
+.L_loop2_0_done:
+
+ adds r3, #8
+ b .L_loop2
+.L_loop2_done:
+#elif defined (__STARTUP_CLEAR_BSS)
+/* Single BSS section scheme.
+ *
+ * The BSS section is specified by following symbols
+ * __bss_start__: start of the BSS section.
+ * __bss_end__: end of the BSS section.
+ *
+ * Both addresses must be aligned to 4 bytes boundary.
+ */
+ ldr r1, =__bss_start__
+ ldr r2, =__bss_end__
+
+ movs r0, 0
+
+ subs r2, r1
+ ble .L_loop3_done
+
+.L_loop3:
+ subs r2, #4
+ str r0, [r1, r2]
+ bgt .L_loop3
+.L_loop3_done:
+#endif /* __STARTUP_CLEAR_BSS_MULTIPLE || __STARTUP_CLEAR_BSS */
+
+ /* Update Vector Table Offset Register. */
+ ldr r0, =__ramVectors
+ ldr r1, =CY_CPU_VTOR_ADDR
+ str r0, [r1]
+ dsb 0xF
+
+#ifndef __NO_SYSTEM_INIT
+ bl SystemInit
+#endif
+
+ bl main
+
+ /* Should never get here */
+ b .
+
+ .pool
+ .size Reset_Handler, . - Reset_Handler
+
+ .align 1
+ .thumb_func
+ .weak Default_Handler
+ .type Default_Handler, %function
+Default_Handler:
+ b .
+ .size Default_Handler, . - Default_Handler
+ .weak Cy_SysLib_FaultHandler
+ .type Cy_SysLib_FaultHandler, %function
+
+Cy_SysLib_FaultHandler:
+ b .
+ .size Cy_SysLib_FaultHandler, . - Cy_SysLib_FaultHandler
+ .type Fault_Handler, %function
+
+Fault_Handler:
+ /* Storing LR content for Creator call stack trace */
+ push {LR}
+ movs r0, #4
+ mov r1, LR
+ tst r0, r1
+ beq .L_MSP
+ mrs r0, PSP
+ b .L_API_call
+.L_MSP:
+ mrs r0, MSP
+.L_API_call:
+ /* Compensation of stack pointer address due to pushing 4 bytes of LR */
+ adds r0, r0, #4
+ bl Cy_SysLib_FaultHandler
+ b .
+ .size Fault_Handler, . - Fault_Handler
+
+.macro def_fault_Handler fault_handler_name
+ .weak \fault_handler_name
+ .set \fault_handler_name, Fault_Handler
+ .endm
+
+/* Macro to define default handlers. Default handler
+ * will be weak symbol and just dead loops. They can be
+ * overwritten by other handlers */
+ .macro def_irq_handler handler_name
+ .weak \handler_name
+ .set \handler_name, Default_Handler
+ .endm
+
+ def_irq_handler NMI_Handler
+
+ def_fault_Handler HardFault_Handler
+
+ def_irq_handler SVC_Handler
+ def_irq_handler PendSV_Handler
+ def_irq_handler SysTick_Handler
+
+ def_irq_handler NvicMux0_IRQHandler /* CM0+ NVIC Mux input 0 */
+ def_irq_handler NvicMux1_IRQHandler /* CM0+ NVIC Mux input 1 */
+ def_irq_handler NvicMux2_IRQHandler /* CM0+ NVIC Mux input 2 */
+ def_irq_handler NvicMux3_IRQHandler /* CM0+ NVIC Mux input 3 */
+ def_irq_handler NvicMux4_IRQHandler /* CM0+ NVIC Mux input 4 */
+ def_irq_handler NvicMux5_IRQHandler /* CM0+ NVIC Mux input 5 */
+ def_irq_handler NvicMux6_IRQHandler /* CM0+ NVIC Mux input 6 */
+ def_irq_handler NvicMux7_IRQHandler /* CM0+ NVIC Mux input 7 */
+ def_irq_handler NvicMux8_IRQHandler /* CM0+ NVIC Mux input 8 */
+ def_irq_handler NvicMux9_IRQHandler /* CM0+ NVIC Mux input 9 */
+ def_irq_handler NvicMux10_IRQHandler /* CM0+ NVIC Mux input 10 */
+ def_irq_handler NvicMux11_IRQHandler /* CM0+ NVIC Mux input 11 */
+ def_irq_handler NvicMux12_IRQHandler /* CM0+ NVIC Mux input 12 */
+ def_irq_handler NvicMux13_IRQHandler /* CM0+ NVIC Mux input 13 */
+ def_irq_handler NvicMux14_IRQHandler /* CM0+ NVIC Mux input 14 */
+ def_irq_handler NvicMux15_IRQHandler /* CM0+ NVIC Mux input 15 */
+ def_irq_handler NvicMux16_IRQHandler /* CM0+ NVIC Mux input 16 */
+ def_irq_handler NvicMux17_IRQHandler /* CM0+ NVIC Mux input 17 */
+ def_irq_handler NvicMux18_IRQHandler /* CM0+ NVIC Mux input 18 */
+ def_irq_handler NvicMux19_IRQHandler /* CM0+ NVIC Mux input 19 */
+ def_irq_handler NvicMux20_IRQHandler /* CM0+ NVIC Mux input 20 */
+ def_irq_handler NvicMux21_IRQHandler /* CM0+ NVIC Mux input 21 */
+ def_irq_handler NvicMux22_IRQHandler /* CM0+ NVIC Mux input 22 */
+ def_irq_handler NvicMux23_IRQHandler /* CM0+ NVIC Mux input 23 */
+ def_irq_handler NvicMux24_IRQHandler /* CM0+ NVIC Mux input 24 */
+ def_irq_handler NvicMux25_IRQHandler /* CM0+ NVIC Mux input 25 */
+ def_irq_handler NvicMux26_IRQHandler /* CM0+ NVIC Mux input 26 */
+ def_irq_handler NvicMux27_IRQHandler /* CM0+ NVIC Mux input 27 */
+ def_irq_handler NvicMux28_IRQHandler /* CM0+ NVIC Mux input 28 */
+ def_irq_handler NvicMux29_IRQHandler /* CM0+ NVIC Mux input 29 */
+ def_irq_handler NvicMux30_IRQHandler /* CM0+ NVIC Mux input 30 */
+ def_irq_handler NvicMux31_IRQHandler /* CM0+ NVIC Mux input 31 */
+
+ .end
+
+
+/* [] END OF FILE */
diff --git a/2020TPCApp0.cydsn/gcc/startup_psoc6_01_cm4.S b/2020TPCApp0.cydsn/gcc/startup_psoc6_01_cm4.S
new file mode 100644
index 0000000..b904621
--- /dev/null
+++ b/2020TPCApp0.cydsn/gcc/startup_psoc6_01_cm4.S
@@ -0,0 +1,635 @@
+/**************************************************************************//**
+ * @file startup_psoc6_01_cm4.S
+ * @brief CMSIS Core Device Startup File for
+ * ARMCM4 Device Series
+ * @version V5.00
+ * @date 02. March 2016
+ ******************************************************************************/
+/*
+ * Copyright (c) 2009-2016 ARM Limited. All rights reserved.
+ *
+ * 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
+ *
+ * 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.
+ */
+
+ /* Address of the NMI handler */
+ #define CY_NMI_HANLDER_ADDR 0x0000000D
+
+ /* The CPU VTOR register */
+ #define CY_CPU_VTOR_ADDR 0xE000ED08
+
+ /* Copy flash vectors and data section to RAM */
+ #define __STARTUP_COPY_MULTIPLE
+
+ /* Clear single BSS section */
+ #define __STARTUP_CLEAR_BSS
+
+ .syntax unified
+ .arch armv7-m
+
+ .section .stack
+ .align 3
+#ifdef __STACK_SIZE
+ .equ Stack_Size, __STACK_SIZE
+#else
+ .equ Stack_Size, 0x00001000
+#endif
+ .globl __StackTop
+ .globl __StackLimit
+__StackLimit:
+ .space Stack_Size
+ .size __StackLimit, . - __StackLimit
+__StackTop:
+ .size __StackTop, . - __StackTop
+
+ .section .heap
+ .align 3
+#ifdef __HEAP_SIZE
+ .equ Heap_Size, __HEAP_SIZE
+#else
+ .equ Heap_Size, 0x00000400
+#endif
+ .globl __HeapBase
+ .globl __HeapLimit
+__HeapBase:
+ .if Heap_Size
+ .space Heap_Size
+ .endif
+ .size __HeapBase, . - __HeapBase
+__HeapLimit:
+ .size __HeapLimit, . - __HeapLimit
+
+ .section .vectors
+ .align 2
+ .globl __Vectors
+__Vectors:
+ .long __StackTop /* Top of Stack */
+ .long Reset_Handler /* Reset Handler */
+ .long CY_NMI_HANLDER_ADDR /* NMI Handler */
+ .long HardFault_Handler /* Hard Fault Handler */
+ .long MemManage_Handler /* MPU Fault Handler */
+ .long BusFault_Handler /* Bus Fault Handler */
+ .long UsageFault_Handler /* Usage Fault Handler */
+ .long 0 /* Reserved */
+ .long 0 /* Reserved */
+ .long 0 /* Reserved */
+ .long 0 /* Reserved */
+ .long SVC_Handler /* SVCall Handler */
+ .long DebugMon_Handler /* Debug Monitor Handler */
+ .long 0 /* Reserved */
+ .long PendSV_Handler /* PendSV Handler */
+ .long SysTick_Handler /* SysTick Handler */
+
+ /* External interrupts Description */
+ .long ioss_interrupts_gpio_0_IRQHandler /* GPIO Port Interrupt #0 */
+ .long ioss_interrupts_gpio_1_IRQHandler /* GPIO Port Interrupt #1 */
+ .long ioss_interrupts_gpio_2_IRQHandler /* GPIO Port Interrupt #2 */
+ .long ioss_interrupts_gpio_3_IRQHandler /* GPIO Port Interrupt #3 */
+ .long ioss_interrupts_gpio_4_IRQHandler /* GPIO Port Interrupt #4 */
+ .long ioss_interrupts_gpio_5_IRQHandler /* GPIO Port Interrupt #5 */
+ .long ioss_interrupts_gpio_6_IRQHandler /* GPIO Port Interrupt #6 */
+ .long ioss_interrupts_gpio_7_IRQHandler /* GPIO Port Interrupt #7 */
+ .long ioss_interrupts_gpio_8_IRQHandler /* GPIO Port Interrupt #8 */
+ .long ioss_interrupts_gpio_9_IRQHandler /* GPIO Port Interrupt #9 */
+ .long ioss_interrupts_gpio_10_IRQHandler /* GPIO Port Interrupt #10 */
+ .long ioss_interrupts_gpio_11_IRQHandler /* GPIO Port Interrupt #11 */
+ .long ioss_interrupts_gpio_12_IRQHandler /* GPIO Port Interrupt #12 */
+ .long ioss_interrupts_gpio_13_IRQHandler /* GPIO Port Interrupt #13 */
+ .long ioss_interrupts_gpio_14_IRQHandler /* GPIO Port Interrupt #14 */
+ .long ioss_interrupt_gpio_IRQHandler /* GPIO All Ports */
+ .long ioss_interrupt_vdd_IRQHandler /* GPIO Supply Detect Interrupt */
+ .long lpcomp_interrupt_IRQHandler /* Low Power Comparator Interrupt */
+ .long scb_8_interrupt_IRQHandler /* Serial Communication Block #8 (DeepSleep capable) */
+ .long srss_interrupt_mcwdt_0_IRQHandler /* Multi Counter Watchdog Timer interrupt */
+ .long srss_interrupt_mcwdt_1_IRQHandler /* Multi Counter Watchdog Timer interrupt */
+ .long srss_interrupt_backup_IRQHandler /* Backup domain interrupt */
+ .long srss_interrupt_IRQHandler /* Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */
+ .long pass_interrupt_ctbs_IRQHandler /* CTBm Interrupt (all CTBms) */
+ .long bless_interrupt_IRQHandler /* Bluetooth Radio interrupt */
+ .long cpuss_interrupts_ipc_0_IRQHandler /* CPUSS Inter Process Communication Interrupt #0 */
+ .long cpuss_interrupts_ipc_1_IRQHandler /* CPUSS Inter Process Communication Interrupt #1 */
+ .long cpuss_interrupts_ipc_2_IRQHandler /* CPUSS Inter Process Communication Interrupt #2 */
+ .long cpuss_interrupts_ipc_3_IRQHandler /* CPUSS Inter Process Communication Interrupt #3 */
+ .long cpuss_interrupts_ipc_4_IRQHandler /* CPUSS Inter Process Communication Interrupt #4 */
+ .long cpuss_interrupts_ipc_5_IRQHandler /* CPUSS Inter Process Communication Interrupt #5 */
+ .long cpuss_interrupts_ipc_6_IRQHandler /* CPUSS Inter Process Communication Interrupt #6 */
+ .long cpuss_interrupts_ipc_7_IRQHandler /* CPUSS Inter Process Communication Interrupt #7 */
+ .long cpuss_interrupts_ipc_8_IRQHandler /* CPUSS Inter Process Communication Interrupt #8 */
+ .long cpuss_interrupts_ipc_9_IRQHandler /* CPUSS Inter Process Communication Interrupt #9 */
+ .long cpuss_interrupts_ipc_10_IRQHandler /* CPUSS Inter Process Communication Interrupt #10 */
+ .long cpuss_interrupts_ipc_11_IRQHandler /* CPUSS Inter Process Communication Interrupt #11 */
+ .long cpuss_interrupts_ipc_12_IRQHandler /* CPUSS Inter Process Communication Interrupt #12 */
+ .long cpuss_interrupts_ipc_13_IRQHandler /* CPUSS Inter Process Communication Interrupt #13 */
+ .long cpuss_interrupts_ipc_14_IRQHandler /* CPUSS Inter Process Communication Interrupt #14 */
+ .long cpuss_interrupts_ipc_15_IRQHandler /* CPUSS Inter Process Communication Interrupt #15 */
+ .long scb_0_interrupt_IRQHandler /* Serial Communication Block #0 */
+ .long scb_1_interrupt_IRQHandler /* Serial Communication Block #1 */
+ .long scb_2_interrupt_IRQHandler /* Serial Communication Block #2 */
+ .long scb_3_interrupt_IRQHandler /* Serial Communication Block #3 */
+ .long scb_4_interrupt_IRQHandler /* Serial Communication Block #4 */
+ .long scb_5_interrupt_IRQHandler /* Serial Communication Block #5 */
+ .long scb_6_interrupt_IRQHandler /* Serial Communication Block #6 */
+ .long scb_7_interrupt_IRQHandler /* Serial Communication Block #7 */
+ .long csd_interrupt_IRQHandler /* CSD (Capsense) interrupt */
+ .long cpuss_interrupts_dw0_0_IRQHandler /* CPUSS DataWire #0, Channel #0 */
+ .long cpuss_interrupts_dw0_1_IRQHandler /* CPUSS DataWire #0, Channel #1 */
+ .long cpuss_interrupts_dw0_2_IRQHandler /* CPUSS DataWire #0, Channel #2 */
+ .long cpuss_interrupts_dw0_3_IRQHandler /* CPUSS DataWire #0, Channel #3 */
+ .long cpuss_interrupts_dw0_4_IRQHandler /* CPUSS DataWire #0, Channel #4 */
+ .long cpuss_interrupts_dw0_5_IRQHandler /* CPUSS DataWire #0, Channel #5 */
+ .long cpuss_interrupts_dw0_6_IRQHandler /* CPUSS DataWire #0, Channel #6 */
+ .long cpuss_interrupts_dw0_7_IRQHandler /* CPUSS DataWire #0, Channel #7 */
+ .long cpuss_interrupts_dw0_8_IRQHandler /* CPUSS DataWire #0, Channel #8 */
+ .long cpuss_interrupts_dw0_9_IRQHandler /* CPUSS DataWire #0, Channel #9 */
+ .long cpuss_interrupts_dw0_10_IRQHandler /* CPUSS DataWire #0, Channel #10 */
+ .long cpuss_interrupts_dw0_11_IRQHandler /* CPUSS DataWire #0, Channel #11 */
+ .long cpuss_interrupts_dw0_12_IRQHandler /* CPUSS DataWire #0, Channel #12 */
+ .long cpuss_interrupts_dw0_13_IRQHandler /* CPUSS DataWire #0, Channel #13 */
+ .long cpuss_interrupts_dw0_14_IRQHandler /* CPUSS DataWire #0, Channel #14 */
+ .long cpuss_interrupts_dw0_15_IRQHandler /* CPUSS DataWire #0, Channel #15 */
+ .long cpuss_interrupts_dw1_0_IRQHandler /* CPUSS DataWire #1, Channel #0 */
+ .long cpuss_interrupts_dw1_1_IRQHandler /* CPUSS DataWire #1, Channel #1 */
+ .long cpuss_interrupts_dw1_2_IRQHandler /* CPUSS DataWire #1, Channel #2 */
+ .long cpuss_interrupts_dw1_3_IRQHandler /* CPUSS DataWire #1, Channel #3 */
+ .long cpuss_interrupts_dw1_4_IRQHandler /* CPUSS DataWire #1, Channel #4 */
+ .long cpuss_interrupts_dw1_5_IRQHandler /* CPUSS DataWire #1, Channel #5 */
+ .long cpuss_interrupts_dw1_6_IRQHandler /* CPUSS DataWire #1, Channel #6 */
+ .long cpuss_interrupts_dw1_7_IRQHandler /* CPUSS DataWire #1, Channel #7 */
+ .long cpuss_interrupts_dw1_8_IRQHandler /* CPUSS DataWire #1, Channel #8 */
+ .long cpuss_interrupts_dw1_9_IRQHandler /* CPUSS DataWire #1, Channel #9 */
+ .long cpuss_interrupts_dw1_10_IRQHandler /* CPUSS DataWire #1, Channel #10 */
+ .long cpuss_interrupts_dw1_11_IRQHandler /* CPUSS DataWire #1, Channel #11 */
+ .long cpuss_interrupts_dw1_12_IRQHandler /* CPUSS DataWire #1, Channel #12 */
+ .long cpuss_interrupts_dw1_13_IRQHandler /* CPUSS DataWire #1, Channel #13 */
+ .long cpuss_interrupts_dw1_14_IRQHandler /* CPUSS DataWire #1, Channel #14 */
+ .long cpuss_interrupts_dw1_15_IRQHandler /* CPUSS DataWire #1, Channel #15 */
+ .long cpuss_interrupts_fault_0_IRQHandler /* CPUSS Fault Structure Interrupt #0 */
+ .long cpuss_interrupts_fault_1_IRQHandler /* CPUSS Fault Structure Interrupt #1 */
+ .long cpuss_interrupt_crypto_IRQHandler /* CRYPTO Accelerator Interrupt */
+ .long cpuss_interrupt_fm_IRQHandler /* FLASH Macro Interrupt */
+ .long cpuss_interrupts_cm0_cti_0_IRQHandler /* CM0+ CTI #0 */
+ .long cpuss_interrupts_cm0_cti_1_IRQHandler /* CM0+ CTI #1 */
+ .long cpuss_interrupts_cm4_cti_0_IRQHandler /* CM4 CTI #0 */
+ .long cpuss_interrupts_cm4_cti_1_IRQHandler /* CM4 CTI #1 */
+ .long tcpwm_0_interrupts_0_IRQHandler /* TCPWM #0, Counter #0 */
+ .long tcpwm_0_interrupts_1_IRQHandler /* TCPWM #0, Counter #1 */
+ .long tcpwm_0_interrupts_2_IRQHandler /* TCPWM #0, Counter #2 */
+ .long tcpwm_0_interrupts_3_IRQHandler /* TCPWM #0, Counter #3 */
+ .long tcpwm_0_interrupts_4_IRQHandler /* TCPWM #0, Counter #4 */
+ .long tcpwm_0_interrupts_5_IRQHandler /* TCPWM #0, Counter #5 */
+ .long tcpwm_0_interrupts_6_IRQHandler /* TCPWM #0, Counter #6 */
+ .long tcpwm_0_interrupts_7_IRQHandler /* TCPWM #0, Counter #7 */
+ .long tcpwm_1_interrupts_0_IRQHandler /* TCPWM #1, Counter #0 */
+ .long tcpwm_1_interrupts_1_IRQHandler /* TCPWM #1, Counter #1 */
+ .long tcpwm_1_interrupts_2_IRQHandler /* TCPWM #1, Counter #2 */
+ .long tcpwm_1_interrupts_3_IRQHandler /* TCPWM #1, Counter #3 */
+ .long tcpwm_1_interrupts_4_IRQHandler /* TCPWM #1, Counter #4 */
+ .long tcpwm_1_interrupts_5_IRQHandler /* TCPWM #1, Counter #5 */
+ .long tcpwm_1_interrupts_6_IRQHandler /* TCPWM #1, Counter #6 */
+ .long tcpwm_1_interrupts_7_IRQHandler /* TCPWM #1, Counter #7 */
+ .long tcpwm_1_interrupts_8_IRQHandler /* TCPWM #1, Counter #8 */
+ .long tcpwm_1_interrupts_9_IRQHandler /* TCPWM #1, Counter #9 */
+ .long tcpwm_1_interrupts_10_IRQHandler /* TCPWM #1, Counter #10 */
+ .long tcpwm_1_interrupts_11_IRQHandler /* TCPWM #1, Counter #11 */
+ .long tcpwm_1_interrupts_12_IRQHandler /* TCPWM #1, Counter #12 */
+ .long tcpwm_1_interrupts_13_IRQHandler /* TCPWM #1, Counter #13 */
+ .long tcpwm_1_interrupts_14_IRQHandler /* TCPWM #1, Counter #14 */
+ .long tcpwm_1_interrupts_15_IRQHandler /* TCPWM #1, Counter #15 */
+ .long tcpwm_1_interrupts_16_IRQHandler /* TCPWM #1, Counter #16 */
+ .long tcpwm_1_interrupts_17_IRQHandler /* TCPWM #1, Counter #17 */
+ .long tcpwm_1_interrupts_18_IRQHandler /* TCPWM #1, Counter #18 */
+ .long tcpwm_1_interrupts_19_IRQHandler /* TCPWM #1, Counter #19 */
+ .long tcpwm_1_interrupts_20_IRQHandler /* TCPWM #1, Counter #20 */
+ .long tcpwm_1_interrupts_21_IRQHandler /* TCPWM #1, Counter #21 */
+ .long tcpwm_1_interrupts_22_IRQHandler /* TCPWM #1, Counter #22 */
+ .long tcpwm_1_interrupts_23_IRQHandler /* TCPWM #1, Counter #23 */
+ .long udb_interrupts_0_IRQHandler /* UDB Interrupt #0 */
+ .long udb_interrupts_1_IRQHandler /* UDB Interrupt #1 */
+ .long udb_interrupts_2_IRQHandler /* UDB Interrupt #2 */
+ .long udb_interrupts_3_IRQHandler /* UDB Interrupt #3 */
+ .long udb_interrupts_4_IRQHandler /* UDB Interrupt #4 */
+ .long udb_interrupts_5_IRQHandler /* UDB Interrupt #5 */
+ .long udb_interrupts_6_IRQHandler /* UDB Interrupt #6 */
+ .long udb_interrupts_7_IRQHandler /* UDB Interrupt #7 */
+ .long udb_interrupts_8_IRQHandler /* UDB Interrupt #8 */
+ .long udb_interrupts_9_IRQHandler /* UDB Interrupt #9 */
+ .long udb_interrupts_10_IRQHandler /* UDB Interrupt #10 */
+ .long udb_interrupts_11_IRQHandler /* UDB Interrupt #11 */
+ .long udb_interrupts_12_IRQHandler /* UDB Interrupt #12 */
+ .long udb_interrupts_13_IRQHandler /* UDB Interrupt #13 */
+ .long udb_interrupts_14_IRQHandler /* UDB Interrupt #14 */
+ .long udb_interrupts_15_IRQHandler /* UDB Interrupt #15 */
+ .long pass_interrupt_sar_IRQHandler /* SAR ADC interrupt */
+ .long audioss_interrupt_i2s_IRQHandler /* I2S Audio interrupt */
+ .long audioss_interrupt_pdm_IRQHandler /* PDM/PCM Audio interrupt */
+ .long profile_interrupt_IRQHandler /* Energy Profiler interrupt */
+ .long smif_interrupt_IRQHandler /* Serial Memory Interface interrupt */
+ .long usb_interrupt_hi_IRQHandler /* USB Interrupt */
+ .long usb_interrupt_med_IRQHandler /* USB Interrupt */
+ .long usb_interrupt_lo_IRQHandler /* USB Interrupt */
+ .long pass_interrupt_dacs_IRQHandler /* Consolidated interrrupt for all DACs */
+
+
+ .size __Vectors, . - __Vectors
+ .equ __VectorsSize, . - __Vectors
+
+ .section .ram_vectors
+ .align 2
+ .globl __ramVectors
+__ramVectors:
+ .space __VectorsSize
+ .size __ramVectors, . - __ramVectors
+
+
+ .text
+ .thumb
+ .thumb_func
+ .align 2
+
+ /*
+ * Device startup customization
+ *
+ * Note. The global resources are not yet initialized (for example global variables, peripherals, clocks)
+ * because this function is executed as the first instruction in the ResetHandler.
+ * The PDL is also not initialized to use the proper register offsets.
+ * The user of this function is responsible for initializing the PDL and resources before using them.
+ */
+ .weak Cy_OnResetUser
+ .func Cy_OnResetUser, Cy_OnResetUser
+ .type Cy_OnResetUser, %function
+
+Cy_OnResetUser:
+ bx lr
+ .size Cy_OnResetUser, . - Cy_OnResetUser
+ .endfunc
+
+ /* Reset handler */
+ .weak Reset_Handler
+ .type Reset_Handler, %function
+
+Reset_Handler:
+ bl Cy_OnResetUser
+ cpsid i
+
+/* Firstly it copies data from read only memory to RAM. There are two schemes
+ * to copy. One can copy more than one sections. Another can only copy
+ * one section. The former scheme needs more instructions and read-only
+ * data to implement than the latter.
+ * Macro __STARTUP_COPY_MULTIPLE is used to choose between two schemes. */
+
+#ifdef __STARTUP_COPY_MULTIPLE
+/* Multiple sections scheme.
+ *
+ * Between symbol address __copy_table_start__ and __copy_table_end__,
+ * there are array of triplets, each of which specify:
+ * offset 0: LMA of start of a section to copy from
+ * offset 4: VMA of start of a section to copy to
+ * offset 8: size of the section to copy. Must be multiply of 4
+ *
+ * All addresses must be aligned to 4 bytes boundary.
+ */
+ ldr r4, =__copy_table_start__
+ ldr r5, =__copy_table_end__
+
+.L_loop0:
+ cmp r4, r5
+ bge .L_loop0_done
+ ldr r1, [r4]
+ ldr r2, [r4, #4]
+ ldr r3, [r4, #8]
+
+.L_loop0_0:
+ subs r3, #4
+ ittt ge
+ ldrge r0, [r1, r3]
+ strge r0, [r2, r3]
+ bge .L_loop0_0
+
+ adds r4, #12
+ b .L_loop0
+
+.L_loop0_done:
+#else
+/* Single section scheme.
+ *
+ * The ranges of copy from/to are specified by following symbols
+ * __etext: LMA of start of the section to copy from. Usually end of text
+ * __data_start__: VMA of start of the section to copy to
+ * __data_end__: VMA of end of the section to copy to
+ *
+ * All addresses must be aligned to 4 bytes boundary.
+ */
+ ldr r1, =__etext
+ ldr r2, =__data_start__
+ ldr r3, =__data_end__
+
+.L_loop1:
+ cmp r2, r3
+ ittt lt
+ ldrlt r0, [r1], #4
+ strlt r0, [r2], #4
+ blt .L_loop1
+#endif /*__STARTUP_COPY_MULTIPLE */
+
+/* This part of work usually is done in C library startup code. Otherwise,
+ * define this macro to enable it in this startup.
+ *
+ * There are two schemes too. One can clear multiple BSS sections. Another
+ * can only clear one section. The former is more size expensive than the
+ * latter.
+ *
+ * Define macro __STARTUP_CLEAR_BSS_MULTIPLE to choose the former.
+ * Otherwise define macro __STARTUP_CLEAR_BSS to choose the later.
+ */
+#ifdef __STARTUP_CLEAR_BSS_MULTIPLE
+/* Multiple sections scheme.
+ *
+ * Between symbol address __copy_table_start__ and __copy_table_end__,
+ * there are array of tuples specifying:
+ * offset 0: Start of a BSS section
+ * offset 4: Size of this BSS section. Must be multiply of 4
+ */
+ ldr r3, =__zero_table_start__
+ ldr r4, =__zero_table_end__
+
+.L_loop2:
+ cmp r3, r4
+ bge .L_loop2_done
+ ldr r1, [r3]
+ ldr r2, [r3, #4]
+ movs r0, 0
+
+.L_loop2_0:
+ subs r2, #4
+ itt ge
+ strge r0, [r1, r2]
+ bge .L_loop2_0
+
+ adds r3, #8
+ b .L_loop2
+.L_loop2_done:
+#elif defined (__STARTUP_CLEAR_BSS)
+/* Single BSS section scheme.
+ *
+ * The BSS section is specified by following symbols
+ * __bss_start__: start of the BSS section.
+ * __bss_end__: end of the BSS section.
+ *
+ * Both addresses must be aligned to 4 bytes boundary.
+ */
+ ldr r1, =__bss_start__
+ ldr r2, =__bss_end__
+
+ movs r0, 0
+.L_loop3:
+ cmp r1, r2
+ itt lt
+ strlt r0, [r1], #4
+ blt .L_loop3
+#endif /* __STARTUP_CLEAR_BSS_MULTIPLE || __STARTUP_CLEAR_BSS */
+
+ /* Update Vector Table Offset Register. */
+ ldr r0, =__ramVectors
+ ldr r1, =CY_CPU_VTOR_ADDR
+ str r0, [r1]
+ dsb 0xF
+
+ /* Enable the FPU if used */
+ bl Cy_SystemInitFpuEnable
+
+#ifndef __NO_SYSTEM_INIT
+ bl SystemInit
+#endif
+
+ bl main
+
+ /* Should never get here */
+ b .
+
+ .pool
+ .size Reset_Handler, . - Reset_Handler
+
+ .align 1
+ .thumb_func
+ .weak Default_Handler
+ .type Default_Handler, %function
+
+Default_Handler:
+ b .
+ .size Default_Handler, . - Default_Handler
+
+
+ .weak Cy_SysLib_FaultHandler
+ .type Cy_SysLib_FaultHandler, %function
+
+Cy_SysLib_FaultHandler:
+ b .
+ .size Cy_SysLib_FaultHandler, . - Cy_SysLib_FaultHandler
+ .type Fault_Handler, %function
+
+Fault_Handler:
+ /* Storing LR content for Creator call stack trace */
+ push {LR}
+ movs r0, #4
+ mov r1, LR
+ tst r0, r1
+ beq .L_MSP
+ mrs r0, PSP
+ b .L_API_call
+.L_MSP:
+ mrs r0, MSP
+.L_API_call:
+ /* Compensation of stack pointer address due to pushing 4 bytes of LR */
+ adds r0, r0, #4
+ bl Cy_SysLib_FaultHandler
+ b .
+ .size Fault_Handler, . - Fault_Handler
+
+.macro def_fault_Handler fault_handler_name
+ .weak \fault_handler_name
+ .set \fault_handler_name, Fault_Handler
+ .endm
+
+/* Macro to define default handlers. Default handler
+ * will be weak symbol and just dead loops. They can be
+ * overwritten by other handlers */
+ .macro def_irq_handler handler_name
+ .weak \handler_name
+ .set \handler_name, Default_Handler
+ .endm
+
+ def_irq_handler NMI_Handler
+
+ def_fault_Handler HardFault_Handler
+ def_fault_Handler MemManage_Handler
+ def_fault_Handler BusFault_Handler
+ def_fault_Handler UsageFault_Handler
+
+ def_irq_handler SVC_Handler
+ def_irq_handler DebugMon_Handler
+ def_irq_handler PendSV_Handler
+ def_irq_handler SysTick_Handler
+
+ def_irq_handler ioss_interrupts_gpio_0_IRQHandler /* GPIO Port Interrupt #0 */
+ def_irq_handler ioss_interrupts_gpio_1_IRQHandler /* GPIO Port Interrupt #1 */
+ def_irq_handler ioss_interrupts_gpio_2_IRQHandler /* GPIO Port Interrupt #2 */
+ def_irq_handler ioss_interrupts_gpio_3_IRQHandler /* GPIO Port Interrupt #3 */
+ def_irq_handler ioss_interrupts_gpio_4_IRQHandler /* GPIO Port Interrupt #4 */
+ def_irq_handler ioss_interrupts_gpio_5_IRQHandler /* GPIO Port Interrupt #5 */
+ def_irq_handler ioss_interrupts_gpio_6_IRQHandler /* GPIO Port Interrupt #6 */
+ def_irq_handler ioss_interrupts_gpio_7_IRQHandler /* GPIO Port Interrupt #7 */
+ def_irq_handler ioss_interrupts_gpio_8_IRQHandler /* GPIO Port Interrupt #8 */
+ def_irq_handler ioss_interrupts_gpio_9_IRQHandler /* GPIO Port Interrupt #9 */
+ def_irq_handler ioss_interrupts_gpio_10_IRQHandler /* GPIO Port Interrupt #10 */
+ def_irq_handler ioss_interrupts_gpio_11_IRQHandler /* GPIO Port Interrupt #11 */
+ def_irq_handler ioss_interrupts_gpio_12_IRQHandler /* GPIO Port Interrupt #12 */
+ def_irq_handler ioss_interrupts_gpio_13_IRQHandler /* GPIO Port Interrupt #13 */
+ def_irq_handler ioss_interrupts_gpio_14_IRQHandler /* GPIO Port Interrupt #14 */
+ def_irq_handler ioss_interrupt_gpio_IRQHandler /* GPIO All Ports */
+ def_irq_handler ioss_interrupt_vdd_IRQHandler /* GPIO Supply Detect Interrupt */
+ def_irq_handler lpcomp_interrupt_IRQHandler /* Low Power Comparator Interrupt */
+ def_irq_handler scb_8_interrupt_IRQHandler /* Serial Communication Block #8 (DeepSleep capable) */
+ def_irq_handler srss_interrupt_mcwdt_0_IRQHandler /* Multi Counter Watchdog Timer interrupt */
+ def_irq_handler srss_interrupt_mcwdt_1_IRQHandler /* Multi Counter Watchdog Timer interrupt */
+ def_irq_handler srss_interrupt_backup_IRQHandler /* Backup domain interrupt */
+ def_irq_handler srss_interrupt_IRQHandler /* Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */
+ def_irq_handler pass_interrupt_ctbs_IRQHandler /* CTBm Interrupt (all CTBms) */
+ def_irq_handler bless_interrupt_IRQHandler /* Bluetooth Radio interrupt */
+ def_irq_handler cpuss_interrupts_ipc_0_IRQHandler /* CPUSS Inter Process Communication Interrupt #0 */
+ def_irq_handler cpuss_interrupts_ipc_1_IRQHandler /* CPUSS Inter Process Communication Interrupt #1 */
+ def_irq_handler cpuss_interrupts_ipc_2_IRQHandler /* CPUSS Inter Process Communication Interrupt #2 */
+ def_irq_handler cpuss_interrupts_ipc_3_IRQHandler /* CPUSS Inter Process Communication Interrupt #3 */
+ def_irq_handler cpuss_interrupts_ipc_4_IRQHandler /* CPUSS Inter Process Communication Interrupt #4 */
+ def_irq_handler cpuss_interrupts_ipc_5_IRQHandler /* CPUSS Inter Process Communication Interrupt #5 */
+ def_irq_handler cpuss_interrupts_ipc_6_IRQHandler /* CPUSS Inter Process Communication Interrupt #6 */
+ def_irq_handler cpuss_interrupts_ipc_7_IRQHandler /* CPUSS Inter Process Communication Interrupt #7 */
+ def_irq_handler cpuss_interrupts_ipc_8_IRQHandler /* CPUSS Inter Process Communication Interrupt #8 */
+ def_irq_handler cpuss_interrupts_ipc_9_IRQHandler /* CPUSS Inter Process Communication Interrupt #9 */
+ def_irq_handler cpuss_interrupts_ipc_10_IRQHandler /* CPUSS Inter Process Communication Interrupt #10 */
+ def_irq_handler cpuss_interrupts_ipc_11_IRQHandler /* CPUSS Inter Process Communication Interrupt #11 */
+ def_irq_handler cpuss_interrupts_ipc_12_IRQHandler /* CPUSS Inter Process Communication Interrupt #12 */
+ def_irq_handler cpuss_interrupts_ipc_13_IRQHandler /* CPUSS Inter Process Communication Interrupt #13 */
+ def_irq_handler cpuss_interrupts_ipc_14_IRQHandler /* CPUSS Inter Process Communication Interrupt #14 */
+ def_irq_handler cpuss_interrupts_ipc_15_IRQHandler /* CPUSS Inter Process Communication Interrupt #15 */
+ def_irq_handler scb_0_interrupt_IRQHandler /* Serial Communication Block #0 */
+ def_irq_handler scb_1_interrupt_IRQHandler /* Serial Communication Block #1 */
+ def_irq_handler scb_2_interrupt_IRQHandler /* Serial Communication Block #2 */
+ def_irq_handler scb_3_interrupt_IRQHandler /* Serial Communication Block #3 */
+ def_irq_handler scb_4_interrupt_IRQHandler /* Serial Communication Block #4 */
+ def_irq_handler scb_5_interrupt_IRQHandler /* Serial Communication Block #5 */
+ def_irq_handler scb_6_interrupt_IRQHandler /* Serial Communication Block #6 */
+ def_irq_handler scb_7_interrupt_IRQHandler /* Serial Communication Block #7 */
+ def_irq_handler csd_interrupt_IRQHandler /* CSD (Capsense) interrupt */
+ def_irq_handler cpuss_interrupts_dw0_0_IRQHandler /* CPUSS DataWire #0, Channel #0 */
+ def_irq_handler cpuss_interrupts_dw0_1_IRQHandler /* CPUSS DataWire #0, Channel #1 */
+ def_irq_handler cpuss_interrupts_dw0_2_IRQHandler /* CPUSS DataWire #0, Channel #2 */
+ def_irq_handler cpuss_interrupts_dw0_3_IRQHandler /* CPUSS DataWire #0, Channel #3 */
+ def_irq_handler cpuss_interrupts_dw0_4_IRQHandler /* CPUSS DataWire #0, Channel #4 */
+ def_irq_handler cpuss_interrupts_dw0_5_IRQHandler /* CPUSS DataWire #0, Channel #5 */
+ def_irq_handler cpuss_interrupts_dw0_6_IRQHandler /* CPUSS DataWire #0, Channel #6 */
+ def_irq_handler cpuss_interrupts_dw0_7_IRQHandler /* CPUSS DataWire #0, Channel #7 */
+ def_irq_handler cpuss_interrupts_dw0_8_IRQHandler /* CPUSS DataWire #0, Channel #8 */
+ def_irq_handler cpuss_interrupts_dw0_9_IRQHandler /* CPUSS DataWire #0, Channel #9 */
+ def_irq_handler cpuss_interrupts_dw0_10_IRQHandler /* CPUSS DataWire #0, Channel #10 */
+ def_irq_handler cpuss_interrupts_dw0_11_IRQHandler /* CPUSS DataWire #0, Channel #11 */
+ def_irq_handler cpuss_interrupts_dw0_12_IRQHandler /* CPUSS DataWire #0, Channel #12 */
+ def_irq_handler cpuss_interrupts_dw0_13_IRQHandler /* CPUSS DataWire #0, Channel #13 */
+ def_irq_handler cpuss_interrupts_dw0_14_IRQHandler /* CPUSS DataWire #0, Channel #14 */
+ def_irq_handler cpuss_interrupts_dw0_15_IRQHandler /* CPUSS DataWire #0, Channel #15 */
+ def_irq_handler cpuss_interrupts_dw1_0_IRQHandler /* CPUSS DataWire #1, Channel #0 */
+ def_irq_handler cpuss_interrupts_dw1_1_IRQHandler /* CPUSS DataWire #1, Channel #1 */
+ def_irq_handler cpuss_interrupts_dw1_2_IRQHandler /* CPUSS DataWire #1, Channel #2 */
+ def_irq_handler cpuss_interrupts_dw1_3_IRQHandler /* CPUSS DataWire #1, Channel #3 */
+ def_irq_handler cpuss_interrupts_dw1_4_IRQHandler /* CPUSS DataWire #1, Channel #4 */
+ def_irq_handler cpuss_interrupts_dw1_5_IRQHandler /* CPUSS DataWire #1, Channel #5 */
+ def_irq_handler cpuss_interrupts_dw1_6_IRQHandler /* CPUSS DataWire #1, Channel #6 */
+ def_irq_handler cpuss_interrupts_dw1_7_IRQHandler /* CPUSS DataWire #1, Channel #7 */
+ def_irq_handler cpuss_interrupts_dw1_8_IRQHandler /* CPUSS DataWire #1, Channel #8 */
+ def_irq_handler cpuss_interrupts_dw1_9_IRQHandler /* CPUSS DataWire #1, Channel #9 */
+ def_irq_handler cpuss_interrupts_dw1_10_IRQHandler /* CPUSS DataWire #1, Channel #10 */
+ def_irq_handler cpuss_interrupts_dw1_11_IRQHandler /* CPUSS DataWire #1, Channel #11 */
+ def_irq_handler cpuss_interrupts_dw1_12_IRQHandler /* CPUSS DataWire #1, Channel #12 */
+ def_irq_handler cpuss_interrupts_dw1_13_IRQHandler /* CPUSS DataWire #1, Channel #13 */
+ def_irq_handler cpuss_interrupts_dw1_14_IRQHandler /* CPUSS DataWire #1, Channel #14 */
+ def_irq_handler cpuss_interrupts_dw1_15_IRQHandler /* CPUSS DataWire #1, Channel #15 */
+ def_irq_handler cpuss_interrupts_fault_0_IRQHandler /* CPUSS Fault Structure Interrupt #0 */
+ def_irq_handler cpuss_interrupts_fault_1_IRQHandler /* CPUSS Fault Structure Interrupt #1 */
+ def_irq_handler cpuss_interrupt_crypto_IRQHandler /* CRYPTO Accelerator Interrupt */
+ def_irq_handler cpuss_interrupt_fm_IRQHandler /* FLASH Macro Interrupt */
+ def_irq_handler cpuss_interrupts_cm0_cti_0_IRQHandler /* CM0+ CTI #0 */
+ def_irq_handler cpuss_interrupts_cm0_cti_1_IRQHandler /* CM0+ CTI #1 */
+ def_irq_handler cpuss_interrupts_cm4_cti_0_IRQHandler /* CM4 CTI #0 */
+ def_irq_handler cpuss_interrupts_cm4_cti_1_IRQHandler /* CM4 CTI #1 */
+ def_irq_handler tcpwm_0_interrupts_0_IRQHandler /* TCPWM #0, Counter #0 */
+ def_irq_handler tcpwm_0_interrupts_1_IRQHandler /* TCPWM #0, Counter #1 */
+ def_irq_handler tcpwm_0_interrupts_2_IRQHandler /* TCPWM #0, Counter #2 */
+ def_irq_handler tcpwm_0_interrupts_3_IRQHandler /* TCPWM #0, Counter #3 */
+ def_irq_handler tcpwm_0_interrupts_4_IRQHandler /* TCPWM #0, Counter #4 */
+ def_irq_handler tcpwm_0_interrupts_5_IRQHandler /* TCPWM #0, Counter #5 */
+ def_irq_handler tcpwm_0_interrupts_6_IRQHandler /* TCPWM #0, Counter #6 */
+ def_irq_handler tcpwm_0_interrupts_7_IRQHandler /* TCPWM #0, Counter #7 */
+ def_irq_handler tcpwm_1_interrupts_0_IRQHandler /* TCPWM #1, Counter #0 */
+ def_irq_handler tcpwm_1_interrupts_1_IRQHandler /* TCPWM #1, Counter #1 */
+ def_irq_handler tcpwm_1_interrupts_2_IRQHandler /* TCPWM #1, Counter #2 */
+ def_irq_handler tcpwm_1_interrupts_3_IRQHandler /* TCPWM #1, Counter #3 */
+ def_irq_handler tcpwm_1_interrupts_4_IRQHandler /* TCPWM #1, Counter #4 */
+ def_irq_handler tcpwm_1_interrupts_5_IRQHandler /* TCPWM #1, Counter #5 */
+ def_irq_handler tcpwm_1_interrupts_6_IRQHandler /* TCPWM #1, Counter #6 */
+ def_irq_handler tcpwm_1_interrupts_7_IRQHandler /* TCPWM #1, Counter #7 */
+ def_irq_handler tcpwm_1_interrupts_8_IRQHandler /* TCPWM #1, Counter #8 */
+ def_irq_handler tcpwm_1_interrupts_9_IRQHandler /* TCPWM #1, Counter #9 */
+ def_irq_handler tcpwm_1_interrupts_10_IRQHandler /* TCPWM #1, Counter #10 */
+ def_irq_handler tcpwm_1_interrupts_11_IRQHandler /* TCPWM #1, Counter #11 */
+ def_irq_handler tcpwm_1_interrupts_12_IRQHandler /* TCPWM #1, Counter #12 */
+ def_irq_handler tcpwm_1_interrupts_13_IRQHandler /* TCPWM #1, Counter #13 */
+ def_irq_handler tcpwm_1_interrupts_14_IRQHandler /* TCPWM #1, Counter #14 */
+ def_irq_handler tcpwm_1_interrupts_15_IRQHandler /* TCPWM #1, Counter #15 */
+ def_irq_handler tcpwm_1_interrupts_16_IRQHandler /* TCPWM #1, Counter #16 */
+ def_irq_handler tcpwm_1_interrupts_17_IRQHandler /* TCPWM #1, Counter #17 */
+ def_irq_handler tcpwm_1_interrupts_18_IRQHandler /* TCPWM #1, Counter #18 */
+ def_irq_handler tcpwm_1_interrupts_19_IRQHandler /* TCPWM #1, Counter #19 */
+ def_irq_handler tcpwm_1_interrupts_20_IRQHandler /* TCPWM #1, Counter #20 */
+ def_irq_handler tcpwm_1_interrupts_21_IRQHandler /* TCPWM #1, Counter #21 */
+ def_irq_handler tcpwm_1_interrupts_22_IRQHandler /* TCPWM #1, Counter #22 */
+ def_irq_handler tcpwm_1_interrupts_23_IRQHandler /* TCPWM #1, Counter #23 */
+ def_irq_handler udb_interrupts_0_IRQHandler /* UDB Interrupt #0 */
+ def_irq_handler udb_interrupts_1_IRQHandler /* UDB Interrupt #1 */
+ def_irq_handler udb_interrupts_2_IRQHandler /* UDB Interrupt #2 */
+ def_irq_handler udb_interrupts_3_IRQHandler /* UDB Interrupt #3 */
+ def_irq_handler udb_interrupts_4_IRQHandler /* UDB Interrupt #4 */
+ def_irq_handler udb_interrupts_5_IRQHandler /* UDB Interrupt #5 */
+ def_irq_handler udb_interrupts_6_IRQHandler /* UDB Interrupt #6 */
+ def_irq_handler udb_interrupts_7_IRQHandler /* UDB Interrupt #7 */
+ def_irq_handler udb_interrupts_8_IRQHandler /* UDB Interrupt #8 */
+ def_irq_handler udb_interrupts_9_IRQHandler /* UDB Interrupt #9 */
+ def_irq_handler udb_interrupts_10_IRQHandler /* UDB Interrupt #10 */
+ def_irq_handler udb_interrupts_11_IRQHandler /* UDB Interrupt #11 */
+ def_irq_handler udb_interrupts_12_IRQHandler /* UDB Interrupt #12 */
+ def_irq_handler udb_interrupts_13_IRQHandler /* UDB Interrupt #13 */
+ def_irq_handler udb_interrupts_14_IRQHandler /* UDB Interrupt #14 */
+ def_irq_handler udb_interrupts_15_IRQHandler /* UDB Interrupt #15 */
+ def_irq_handler pass_interrupt_sar_IRQHandler /* SAR ADC interrupt */
+ def_irq_handler audioss_interrupt_i2s_IRQHandler /* I2S Audio interrupt */
+ def_irq_handler audioss_interrupt_pdm_IRQHandler /* PDM/PCM Audio interrupt */
+ def_irq_handler profile_interrupt_IRQHandler /* Energy Profiler interrupt */
+ def_irq_handler smif_interrupt_IRQHandler /* Serial Memory Interface interrupt */
+ def_irq_handler usb_interrupt_hi_IRQHandler /* USB Interrupt */
+ def_irq_handler usb_interrupt_med_IRQHandler /* USB Interrupt */
+ def_irq_handler usb_interrupt_lo_IRQHandler /* USB Interrupt */
+ def_irq_handler pass_interrupt_dacs_IRQHandler /* Consolidated interrrupt for all DACs */
+
+ .end
+
+
+/* [] END OF FILE */
diff --git a/2020TPCApp0.cydsn/iar/startup_psoc6_01_cm0plus.s b/2020TPCApp0.cydsn/iar/startup_psoc6_01_cm0plus.s
new file mode 100644
index 0000000..a867384
--- /dev/null
+++ b/2020TPCApp0.cydsn/iar/startup_psoc6_01_cm0plus.s
@@ -0,0 +1,423 @@
+;/**************************************************************************//**
+; * @file startup_psoc6_01_cm0plus.s
+; * @brief CMSIS Core Device Startup File for
+; * ARMCM0plus Device Series
+; * @version V5.00
+; * @date 08. March 2016
+; ******************************************************************************/
+;/*
+; * Copyright (c) 2009-2016 ARM Limited. All rights reserved.
+; *
+; * 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
+; *
+; * 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.
+; */
+
+;
+; The modules in this file are included in the libraries, and may be replaced
+; by any user-defined modules that define the PUBLIC symbol _program_start or
+; a user defined start symbol.
+; To override the cstartup defined in the library, simply add your modified
+; version to the workbench project.
+;
+; The vector table is normally located at address 0.
+; When debugging in RAM, it can be located in RAM, aligned to at least 2^6.
+; The name "__vector_table" has special meaning for C-SPY:
+; it is where the SP start value is found, and the NVIC vector
+; table register (VTOR) is initialized to this address if != 0.
+;
+; Cortex-M version
+;
+
+ MODULE ?cstartup
+
+ ;; Forward declaration of sections.
+ SECTION CSTACK:DATA:NOROOT(3)
+ SECTION .intvec_ram:DATA:NOROOT(2)
+ SECTION .intvec:CODE:NOROOT(2)
+
+ EXTERN __iar_program_start
+ EXTERN SystemInit
+ EXTERN __iar_data_init3
+ PUBLIC __vector_table
+ PUBLIC __vector_table_0x1c
+ PUBLIC __Vectors
+ PUBLIC __Vectors_End
+ PUBLIC __Vectors_Size
+ PUBLIC __ramVectors
+
+ DATA
+
+__vector_table
+ DCD sfe(CSTACK)
+ DCD Reset_Handler
+
+ DCD 0x0000000D ; NMI_Handler is defined in ROM code
+ DCD HardFault_Handler
+ DCD 0
+ DCD 0
+ DCD 0
+__vector_table_0x1c
+ DCD 0
+ DCD 0
+ DCD 0
+ DCD 0
+ DCD SVC_Handler
+ DCD 0
+ DCD 0
+ DCD PendSV_Handler
+ DCD SysTick_Handler
+
+ ; External interrupts Power Mode Description
+ DCD NvicMux0_IRQHandler ; CM0+ NVIC Mux input 0
+ DCD NvicMux1_IRQHandler ; CM0+ NVIC Mux input 1
+ DCD NvicMux2_IRQHandler ; CM0+ NVIC Mux input 2
+ DCD NvicMux3_IRQHandler ; CM0+ NVIC Mux input 3
+ DCD NvicMux4_IRQHandler ; CM0+ NVIC Mux input 4
+ DCD NvicMux5_IRQHandler ; CM0+ NVIC Mux input 5
+ DCD NvicMux6_IRQHandler ; CM0+ NVIC Mux input 6
+ DCD NvicMux7_IRQHandler ; CM0+ NVIC Mux input 7
+ DCD NvicMux8_IRQHandler ; CM0+ NVIC Mux input 8
+ DCD NvicMux9_IRQHandler ; CM0+ NVIC Mux input 9
+ DCD NvicMux10_IRQHandler ; CM0+ NVIC Mux input 10
+ DCD NvicMux11_IRQHandler ; CM0+ NVIC Mux input 11
+ DCD NvicMux12_IRQHandler ; CM0+ NVIC Mux input 12
+ DCD NvicMux13_IRQHandler ; CM0+ NVIC Mux input 13
+ DCD NvicMux14_IRQHandler ; CM0+ NVIC Mux input 14
+ DCD NvicMux15_IRQHandler ; CM0+ NVIC Mux input 15
+ DCD NvicMux16_IRQHandler ; CM0+ NVIC Mux input 16
+ DCD NvicMux17_IRQHandler ; CM0+ NVIC Mux input 17
+ DCD NvicMux18_IRQHandler ; CM0+ NVIC Mux input 18
+ DCD NvicMux19_IRQHandler ; CM0+ NVIC Mux input 19
+ DCD NvicMux20_IRQHandler ; CM0+ NVIC Mux input 20
+ DCD NvicMux21_IRQHandler ; CM0+ NVIC Mux input 21
+ DCD NvicMux22_IRQHandler ; CM0+ NVIC Mux input 22
+ DCD NvicMux23_IRQHandler ; CM0+ NVIC Mux input 23
+ DCD NvicMux24_IRQHandler ; CM0+ NVIC Mux input 24
+ DCD NvicMux25_IRQHandler ; CM0+ NVIC Mux input 25
+ DCD NvicMux26_IRQHandler ; CM0+ NVIC Mux input 26
+ DCD NvicMux27_IRQHandler ; CM0+ NVIC Mux input 27
+ DCD NvicMux28_IRQHandler ; CM0+ NVIC Mux input 28
+ DCD NvicMux29_IRQHandler ; CM0+ NVIC Mux input 29
+ DCD NvicMux30_IRQHandler ; CM0+ NVIC Mux input 30
+ DCD NvicMux31_IRQHandler ; CM0+ NVIC Mux input 31
+
+__Vectors_End
+
+__Vectors EQU __vector_table
+__Vectors_Size EQU __Vectors_End - __Vectors
+
+ SECTION .intvec_ram:DATA:REORDER:NOROOT(2)
+__ramVectors
+ DS32 __Vectors_Size
+
+
+ THUMB
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Default handlers
+;;
+ PUBWEAK Default_Handler
+ SECTION .text:CODE:REORDER:NOROOT(2)
+Default_Handler
+ B Default_Handler
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Weak function for startup customization
+;;
+;; Note. The global resources are not yet initialized (for example global variables, peripherals, clocks)
+;; because this function is executed as the first instruction in the ResetHandler.
+;; The PDL is also not initialized to use the proper register offsets.
+;; The user of this function is responsible for initializing the PDL and resources before using them.
+;;
+ PUBWEAK Cy_OnResetUser
+ SECTION .text:CODE:REORDER:NOROOT(2)
+Cy_OnResetUser
+ BX LR
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Define strong version to return zero for
+;; __iar_program_start to skip data sections
+;; initialization.
+;;
+ PUBLIC __low_level_init
+ SECTION .text:CODE:REORDER:NOROOT(2)
+__low_level_init
+ MOVS R0, #0
+ BX LR
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Default interrupt handlers.
+;;
+ THUMB
+ PUBWEAK Reset_Handler
+ SECTION .text:CODE:REORDER:NOROOT(2)
+Reset_Handler
+
+ ; Define strong function for startup customization
+ LDR R0, =Cy_OnResetUser
+ BLX R0
+
+ ; Disable global interrupts
+ CPSID I
+
+ ; Copy vectors from ROM to RAM
+ LDR r1, =__vector_table
+ LDR r0, =__ramVectors
+ LDR r2, =__Vectors_Size
+intvec_copy
+ LDR r3, [r1]
+ STR r3, [r0]
+ ADDS r0, r0, #4
+ ADDS r1, r1, #4
+ SUBS r2, r2, #1
+ CMP r2, #0
+ BNE intvec_copy
+
+ ; Update Vector Table Offset Register
+ LDR r0, =__ramVectors
+ LDR r1, =0xE000ED08
+ STR r0, [r1]
+ dsb
+
+ ; Initialize data sections
+ LDR R0, =__iar_data_init3
+ BLX R0
+
+ LDR R0, =SystemInit
+ BLX R0
+
+ LDR R0, =__iar_program_start
+ BLX R0
+
+; Should never get here
+Cy_Main_Exited
+ B Cy_Main_Exited
+
+
+ PUBWEAK NMI_Handler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NMI_Handler
+ B NMI_Handler
+
+
+ PUBWEAK Cy_SysLib_FaultHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+Cy_SysLib_FaultHandler
+ B Cy_SysLib_FaultHandler
+
+ PUBWEAK HardFault_Handler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+HardFault_Handler
+ IMPORT Cy_SysLib_FaultHandler
+ movs r0, #4
+ mov r1, LR
+ tst r0, r1
+ beq L_MSP
+ mrs r0, PSP
+ b L_API_call
+L_MSP
+ mrs r0, MSP
+L_API_call
+ ; Storing LR content for Creator call stack trace
+ push {LR}
+ bl Cy_SysLib_FaultHandler
+
+
+ PUBWEAK SVC_Handler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+SVC_Handler
+ B SVC_Handler
+
+ PUBWEAK PendSV_Handler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+PendSV_Handler
+ B PendSV_Handler
+
+ PUBWEAK SysTick_Handler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+SysTick_Handler
+ B SysTick_Handler
+
+
+ ; External interrupts
+ PUBWEAK NvicMux0_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux0_IRQHandler
+ B NvicMux0_IRQHandler
+
+ PUBWEAK NvicMux1_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux1_IRQHandler
+ B NvicMux1_IRQHandler
+
+ PUBWEAK NvicMux2_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux2_IRQHandler
+ B NvicMux2_IRQHandler
+
+ PUBWEAK NvicMux3_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux3_IRQHandler
+ B NvicMux3_IRQHandler
+
+ PUBWEAK NvicMux4_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux4_IRQHandler
+ B NvicMux4_IRQHandler
+
+ PUBWEAK NvicMux5_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux5_IRQHandler
+ B NvicMux5_IRQHandler
+
+ PUBWEAK NvicMux6_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux6_IRQHandler
+ B NvicMux6_IRQHandler
+
+ PUBWEAK NvicMux7_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux7_IRQHandler
+ B NvicMux7_IRQHandler
+
+ PUBWEAK NvicMux8_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux8_IRQHandler
+ B NvicMux8_IRQHandler
+
+ PUBWEAK NvicMux9_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux9_IRQHandler
+ B NvicMux9_IRQHandler
+
+ PUBWEAK NvicMux10_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux10_IRQHandler
+ B NvicMux10_IRQHandler
+
+ PUBWEAK NvicMux11_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux11_IRQHandler
+ B NvicMux11_IRQHandler
+
+ PUBWEAK NvicMux12_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux12_IRQHandler
+ B NvicMux12_IRQHandler
+
+ PUBWEAK NvicMux13_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux13_IRQHandler
+ B NvicMux13_IRQHandler
+
+ PUBWEAK NvicMux14_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux14_IRQHandler
+ B NvicMux14_IRQHandler
+
+ PUBWEAK NvicMux15_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux15_IRQHandler
+ B NvicMux15_IRQHandler
+
+ PUBWEAK NvicMux16_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux16_IRQHandler
+ B NvicMux16_IRQHandler
+
+ PUBWEAK NvicMux17_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux17_IRQHandler
+ B NvicMux17_IRQHandler
+
+ PUBWEAK NvicMux18_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux18_IRQHandler
+ B NvicMux18_IRQHandler
+
+ PUBWEAK NvicMux19_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux19_IRQHandler
+ B NvicMux19_IRQHandler
+
+ PUBWEAK NvicMux20_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux20_IRQHandler
+ B NvicMux20_IRQHandler
+
+ PUBWEAK NvicMux21_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux21_IRQHandler
+ B NvicMux21_IRQHandler
+
+ PUBWEAK NvicMux22_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux22_IRQHandler
+ B NvicMux22_IRQHandler
+
+ PUBWEAK NvicMux23_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux23_IRQHandler
+ B NvicMux23_IRQHandler
+
+ PUBWEAK NvicMux24_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux24_IRQHandler
+ B NvicMux24_IRQHandler
+
+ PUBWEAK NvicMux25_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux25_IRQHandler
+ B NvicMux25_IRQHandler
+
+ PUBWEAK NvicMux26_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux26_IRQHandler
+ B NvicMux26_IRQHandler
+
+ PUBWEAK NvicMux27_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux27_IRQHandler
+ B NvicMux27_IRQHandler
+
+ PUBWEAK NvicMux28_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux28_IRQHandler
+ B NvicMux28_IRQHandler
+
+ PUBWEAK NvicMux29_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux29_IRQHandler
+ B NvicMux29_IRQHandler
+
+ PUBWEAK NvicMux30_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux30_IRQHandler
+ B NvicMux30_IRQHandler
+
+ PUBWEAK NvicMux31_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux31_IRQHandler
+ B NvicMux31_IRQHandler
+
+
+ END
+
+
+; [] END OF FILE
diff --git a/2020TPCApp0.cydsn/iar/startup_psoc6_01_cm4.s b/2020TPCApp0.cydsn/iar/startup_psoc6_01_cm4.s
new file mode 100644
index 0000000..6f1e869
--- /dev/null
+++ b/2020TPCApp0.cydsn/iar/startup_psoc6_01_cm4.s
@@ -0,0 +1,1142 @@
+;/**************************************************************************//**
+; * @file startup_psoc6_01_cm4.s
+; * @brief CMSIS Core Device Startup File for
+; * ARMCM4 Device Series
+; * @version V5.00
+; * @date 08. March 2016
+; ******************************************************************************/
+;/*
+; * Copyright (c) 2009-2016 ARM Limited. All rights reserved.
+; *
+; * 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
+; *
+; * 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.
+; */
+
+;
+; The modules in this file are included in the libraries, and may be replaced
+; by any user-defined modules that define the PUBLIC symbol _program_start or
+; a user defined start symbol.
+; To override the cstartup defined in the library, simply add your modified
+; version to the workbench project.
+;
+; The vector table is normally located at address 0.
+; When debugging in RAM, it can be located in RAM, aligned to at least 2^6.
+; The name "__vector_table" has special meaning for C-SPY:
+; it is where the SP start value is found, and the NVIC vector
+; table register (VTOR) is initialized to this address if != 0.
+;
+; Cortex-M version
+;
+
+ MODULE ?cstartup
+
+ ;; Forward declaration of sections.
+ SECTION CSTACK:DATA:NOROOT(3)
+ SECTION .intvec_ram:DATA:NOROOT(2)
+ SECTION .intvec:CODE:NOROOT(2)
+
+ EXTERN __iar_program_start
+ EXTERN SystemInit
+ EXTERN Cy_SystemInitFpuEnable
+ EXTERN __iar_data_init3
+ PUBLIC __vector_table
+ PUBLIC __vector_table_0x1c
+ PUBLIC __Vectors
+ PUBLIC __Vectors_End
+ PUBLIC __Vectors_Size
+ PUBLIC __ramVectors
+
+ DATA
+
+__vector_table
+ DCD sfe(CSTACK)
+ DCD Reset_Handler
+
+ DCD 0x0000000D ; NMI_Handler is defined in ROM code
+ DCD HardFault_Handler
+ DCD MemManage_Handler
+ DCD BusFault_Handler
+ DCD UsageFault_Handler
+__vector_table_0x1c
+ DCD 0
+ DCD 0
+ DCD 0
+ DCD 0
+ DCD SVC_Handler
+ DCD DebugMon_Handler
+ DCD 0
+ DCD PendSV_Handler
+ DCD SysTick_Handler
+
+
+ ; External interrupts Description
+ DCD ioss_interrupts_gpio_0_IRQHandler ; GPIO Port Interrupt #0
+ DCD ioss_interrupts_gpio_1_IRQHandler ; GPIO Port Interrupt #1
+ DCD ioss_interrupts_gpio_2_IRQHandler ; GPIO Port Interrupt #2
+ DCD ioss_interrupts_gpio_3_IRQHandler ; GPIO Port Interrupt #3
+ DCD ioss_interrupts_gpio_4_IRQHandler ; GPIO Port Interrupt #4
+ DCD ioss_interrupts_gpio_5_IRQHandler ; GPIO Port Interrupt #5
+ DCD ioss_interrupts_gpio_6_IRQHandler ; GPIO Port Interrupt #6
+ DCD ioss_interrupts_gpio_7_IRQHandler ; GPIO Port Interrupt #7
+ DCD ioss_interrupts_gpio_8_IRQHandler ; GPIO Port Interrupt #8
+ DCD ioss_interrupts_gpio_9_IRQHandler ; GPIO Port Interrupt #9
+ DCD ioss_interrupts_gpio_10_IRQHandler ; GPIO Port Interrupt #10
+ DCD ioss_interrupts_gpio_11_IRQHandler ; GPIO Port Interrupt #11
+ DCD ioss_interrupts_gpio_12_IRQHandler ; GPIO Port Interrupt #12
+ DCD ioss_interrupts_gpio_13_IRQHandler ; GPIO Port Interrupt #13
+ DCD ioss_interrupts_gpio_14_IRQHandler ; GPIO Port Interrupt #14
+ DCD ioss_interrupt_gpio_IRQHandler ; GPIO All Ports
+ DCD ioss_interrupt_vdd_IRQHandler ; GPIO Supply Detect Interrupt
+ DCD lpcomp_interrupt_IRQHandler ; Low Power Comparator Interrupt
+ DCD scb_8_interrupt_IRQHandler ; Serial Communication Block #8 (DeepSleep capable)
+ DCD srss_interrupt_mcwdt_0_IRQHandler ; Multi Counter Watchdog Timer interrupt
+ DCD srss_interrupt_mcwdt_1_IRQHandler ; Multi Counter Watchdog Timer interrupt
+ DCD srss_interrupt_backup_IRQHandler ; Backup domain interrupt
+ DCD srss_interrupt_IRQHandler ; Other combined Interrupts for SRSS (LVD, WDT, CLKCAL)
+ DCD pass_interrupt_ctbs_IRQHandler ; CTBm Interrupt (all CTBms)
+ DCD bless_interrupt_IRQHandler ; Bluetooth Radio interrupt
+ DCD cpuss_interrupts_ipc_0_IRQHandler ; CPUSS Inter Process Communication Interrupt #0
+ DCD cpuss_interrupts_ipc_1_IRQHandler ; CPUSS Inter Process Communication Interrupt #1
+ DCD cpuss_interrupts_ipc_2_IRQHandler ; CPUSS Inter Process Communication Interrupt #2
+ DCD cpuss_interrupts_ipc_3_IRQHandler ; CPUSS Inter Process Communication Interrupt #3
+ DCD cpuss_interrupts_ipc_4_IRQHandler ; CPUSS Inter Process Communication Interrupt #4
+ DCD cpuss_interrupts_ipc_5_IRQHandler ; CPUSS Inter Process Communication Interrupt #5
+ DCD cpuss_interrupts_ipc_6_IRQHandler ; CPUSS Inter Process Communication Interrupt #6
+ DCD cpuss_interrupts_ipc_7_IRQHandler ; CPUSS Inter Process Communication Interrupt #7
+ DCD cpuss_interrupts_ipc_8_IRQHandler ; CPUSS Inter Process Communication Interrupt #8
+ DCD cpuss_interrupts_ipc_9_IRQHandler ; CPUSS Inter Process Communication Interrupt #9
+ DCD cpuss_interrupts_ipc_10_IRQHandler ; CPUSS Inter Process Communication Interrupt #10
+ DCD cpuss_interrupts_ipc_11_IRQHandler ; CPUSS Inter Process Communication Interrupt #11
+ DCD cpuss_interrupts_ipc_12_IRQHandler ; CPUSS Inter Process Communication Interrupt #12
+ DCD cpuss_interrupts_ipc_13_IRQHandler ; CPUSS Inter Process Communication Interrupt #13
+ DCD cpuss_interrupts_ipc_14_IRQHandler ; CPUSS Inter Process Communication Interrupt #14
+ DCD cpuss_interrupts_ipc_15_IRQHandler ; CPUSS Inter Process Communication Interrupt #15
+ DCD scb_0_interrupt_IRQHandler ; Serial Communication Block #0
+ DCD scb_1_interrupt_IRQHandler ; Serial Communication Block #1
+ DCD scb_2_interrupt_IRQHandler ; Serial Communication Block #2
+ DCD scb_3_interrupt_IRQHandler ; Serial Communication Block #3
+ DCD scb_4_interrupt_IRQHandler ; Serial Communication Block #4
+ DCD scb_5_interrupt_IRQHandler ; Serial Communication Block #5
+ DCD scb_6_interrupt_IRQHandler ; Serial Communication Block #6
+ DCD scb_7_interrupt_IRQHandler ; Serial Communication Block #7
+ DCD csd_interrupt_IRQHandler ; CSD (Capsense) interrupt
+ DCD cpuss_interrupts_dw0_0_IRQHandler ; CPUSS DataWire #0, Channel #0
+ DCD cpuss_interrupts_dw0_1_IRQHandler ; CPUSS DataWire #0, Channel #1
+ DCD cpuss_interrupts_dw0_2_IRQHandler ; CPUSS DataWire #0, Channel #2
+ DCD cpuss_interrupts_dw0_3_IRQHandler ; CPUSS DataWire #0, Channel #3
+ DCD cpuss_interrupts_dw0_4_IRQHandler ; CPUSS DataWire #0, Channel #4
+ DCD cpuss_interrupts_dw0_5_IRQHandler ; CPUSS DataWire #0, Channel #5
+ DCD cpuss_interrupts_dw0_6_IRQHandler ; CPUSS DataWire #0, Channel #6
+ DCD cpuss_interrupts_dw0_7_IRQHandler ; CPUSS DataWire #0, Channel #7
+ DCD cpuss_interrupts_dw0_8_IRQHandler ; CPUSS DataWire #0, Channel #8
+ DCD cpuss_interrupts_dw0_9_IRQHandler ; CPUSS DataWire #0, Channel #9
+ DCD cpuss_interrupts_dw0_10_IRQHandler ; CPUSS DataWire #0, Channel #10
+ DCD cpuss_interrupts_dw0_11_IRQHandler ; CPUSS DataWire #0, Channel #11
+ DCD cpuss_interrupts_dw0_12_IRQHandler ; CPUSS DataWire #0, Channel #12
+ DCD cpuss_interrupts_dw0_13_IRQHandler ; CPUSS DataWire #0, Channel #13
+ DCD cpuss_interrupts_dw0_14_IRQHandler ; CPUSS DataWire #0, Channel #14
+ DCD cpuss_interrupts_dw0_15_IRQHandler ; CPUSS DataWire #0, Channel #15
+ DCD cpuss_interrupts_dw1_0_IRQHandler ; CPUSS DataWire #1, Channel #0
+ DCD cpuss_interrupts_dw1_1_IRQHandler ; CPUSS DataWire #1, Channel #1
+ DCD cpuss_interrupts_dw1_2_IRQHandler ; CPUSS DataWire #1, Channel #2
+ DCD cpuss_interrupts_dw1_3_IRQHandler ; CPUSS DataWire #1, Channel #3
+ DCD cpuss_interrupts_dw1_4_IRQHandler ; CPUSS DataWire #1, Channel #4
+ DCD cpuss_interrupts_dw1_5_IRQHandler ; CPUSS DataWire #1, Channel #5
+ DCD cpuss_interrupts_dw1_6_IRQHandler ; CPUSS DataWire #1, Channel #6
+ DCD cpuss_interrupts_dw1_7_IRQHandler ; CPUSS DataWire #1, Channel #7
+ DCD cpuss_interrupts_dw1_8_IRQHandler ; CPUSS DataWire #1, Channel #8
+ DCD cpuss_interrupts_dw1_9_IRQHandler ; CPUSS DataWire #1, Channel #9
+ DCD cpuss_interrupts_dw1_10_IRQHandler ; CPUSS DataWire #1, Channel #10
+ DCD cpuss_interrupts_dw1_11_IRQHandler ; CPUSS DataWire #1, Channel #11
+ DCD cpuss_interrupts_dw1_12_IRQHandler ; CPUSS DataWire #1, Channel #12
+ DCD cpuss_interrupts_dw1_13_IRQHandler ; CPUSS DataWire #1, Channel #13
+ DCD cpuss_interrupts_dw1_14_IRQHandler ; CPUSS DataWire #1, Channel #14
+ DCD cpuss_interrupts_dw1_15_IRQHandler ; CPUSS DataWire #1, Channel #15
+ DCD cpuss_interrupts_fault_0_IRQHandler ; CPUSS Fault Structure Interrupt #0
+ DCD cpuss_interrupts_fault_1_IRQHandler ; CPUSS Fault Structure Interrupt #1
+ DCD cpuss_interrupt_crypto_IRQHandler ; CRYPTO Accelerator Interrupt
+ DCD cpuss_interrupt_fm_IRQHandler ; FLASH Macro Interrupt
+ DCD cpuss_interrupts_cm0_cti_0_IRQHandler ; CM0+ CTI #0
+ DCD cpuss_interrupts_cm0_cti_1_IRQHandler ; CM0+ CTI #1
+ DCD cpuss_interrupts_cm4_cti_0_IRQHandler ; CM4 CTI #0
+ DCD cpuss_interrupts_cm4_cti_1_IRQHandler ; CM4 CTI #1
+ DCD tcpwm_0_interrupts_0_IRQHandler ; TCPWM #0, Counter #0
+ DCD tcpwm_0_interrupts_1_IRQHandler ; TCPWM #0, Counter #1
+ DCD tcpwm_0_interrupts_2_IRQHandler ; TCPWM #0, Counter #2
+ DCD tcpwm_0_interrupts_3_IRQHandler ; TCPWM #0, Counter #3
+ DCD tcpwm_0_interrupts_4_IRQHandler ; TCPWM #0, Counter #4
+ DCD tcpwm_0_interrupts_5_IRQHandler ; TCPWM #0, Counter #5
+ DCD tcpwm_0_interrupts_6_IRQHandler ; TCPWM #0, Counter #6
+ DCD tcpwm_0_interrupts_7_IRQHandler ; TCPWM #0, Counter #7
+ DCD tcpwm_1_interrupts_0_IRQHandler ; TCPWM #1, Counter #0
+ DCD tcpwm_1_interrupts_1_IRQHandler ; TCPWM #1, Counter #1
+ DCD tcpwm_1_interrupts_2_IRQHandler ; TCPWM #1, Counter #2
+ DCD tcpwm_1_interrupts_3_IRQHandler ; TCPWM #1, Counter #3
+ DCD tcpwm_1_interrupts_4_IRQHandler ; TCPWM #1, Counter #4
+ DCD tcpwm_1_interrupts_5_IRQHandler ; TCPWM #1, Counter #5
+ DCD tcpwm_1_interrupts_6_IRQHandler ; TCPWM #1, Counter #6
+ DCD tcpwm_1_interrupts_7_IRQHandler ; TCPWM #1, Counter #7
+ DCD tcpwm_1_interrupts_8_IRQHandler ; TCPWM #1, Counter #8
+ DCD tcpwm_1_interrupts_9_IRQHandler ; TCPWM #1, Counter #9
+ DCD tcpwm_1_interrupts_10_IRQHandler ; TCPWM #1, Counter #10
+ DCD tcpwm_1_interrupts_11_IRQHandler ; TCPWM #1, Counter #11
+ DCD tcpwm_1_interrupts_12_IRQHandler ; TCPWM #1, Counter #12
+ DCD tcpwm_1_interrupts_13_IRQHandler ; TCPWM #1, Counter #13
+ DCD tcpwm_1_interrupts_14_IRQHandler ; TCPWM #1, Counter #14
+ DCD tcpwm_1_interrupts_15_IRQHandler ; TCPWM #1, Counter #15
+ DCD tcpwm_1_interrupts_16_IRQHandler ; TCPWM #1, Counter #16
+ DCD tcpwm_1_interrupts_17_IRQHandler ; TCPWM #1, Counter #17
+ DCD tcpwm_1_interrupts_18_IRQHandler ; TCPWM #1, Counter #18
+ DCD tcpwm_1_interrupts_19_IRQHandler ; TCPWM #1, Counter #19
+ DCD tcpwm_1_interrupts_20_IRQHandler ; TCPWM #1, Counter #20
+ DCD tcpwm_1_interrupts_21_IRQHandler ; TCPWM #1, Counter #21
+ DCD tcpwm_1_interrupts_22_IRQHandler ; TCPWM #1, Counter #22
+ DCD tcpwm_1_interrupts_23_IRQHandler ; TCPWM #1, Counter #23
+ DCD udb_interrupts_0_IRQHandler ; UDB Interrupt #0
+ DCD udb_interrupts_1_IRQHandler ; UDB Interrupt #1
+ DCD udb_interrupts_2_IRQHandler ; UDB Interrupt #2
+ DCD udb_interrupts_3_IRQHandler ; UDB Interrupt #3
+ DCD udb_interrupts_4_IRQHandler ; UDB Interrupt #4
+ DCD udb_interrupts_5_IRQHandler ; UDB Interrupt #5
+ DCD udb_interrupts_6_IRQHandler ; UDB Interrupt #6
+ DCD udb_interrupts_7_IRQHandler ; UDB Interrupt #7
+ DCD udb_interrupts_8_IRQHandler ; UDB Interrupt #8
+ DCD udb_interrupts_9_IRQHandler ; UDB Interrupt #9
+ DCD udb_interrupts_10_IRQHandler ; UDB Interrupt #10
+ DCD udb_interrupts_11_IRQHandler ; UDB Interrupt #11
+ DCD udb_interrupts_12_IRQHandler ; UDB Interrupt #12
+ DCD udb_interrupts_13_IRQHandler ; UDB Interrupt #13
+ DCD udb_interrupts_14_IRQHandler ; UDB Interrupt #14
+ DCD udb_interrupts_15_IRQHandler ; UDB Interrupt #15
+ DCD pass_interrupt_sar_IRQHandler ; SAR ADC interrupt
+ DCD audioss_interrupt_i2s_IRQHandler ; I2S Audio interrupt
+ DCD audioss_interrupt_pdm_IRQHandler ; PDM/PCM Audio interrupt
+ DCD profile_interrupt_IRQHandler ; Energy Profiler interrupt
+ DCD smif_interrupt_IRQHandler ; Serial Memory Interface interrupt
+ DCD usb_interrupt_hi_IRQHandler ; USB Interrupt
+ DCD usb_interrupt_med_IRQHandler ; USB Interrupt
+ DCD usb_interrupt_lo_IRQHandler ; USB Interrupt
+ DCD pass_interrupt_dacs_IRQHandler ; Consolidated interrrupt for all DACs
+
+__Vectors_End
+
+__Vectors EQU __vector_table
+__Vectors_Size EQU __Vectors_End - __Vectors
+
+ SECTION .intvec_ram:DATA:REORDER:NOROOT(2)
+__ramVectors
+ DS32 __Vectors_Size
+
+
+ THUMB
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Default handlers
+;;
+ PUBWEAK Default_Handler
+ SECTION .text:CODE:REORDER:NOROOT(2)
+Default_Handler
+ B Default_Handler
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Weak function for startup customization
+;;
+;; Note. The global resources are not yet initialized (for example global variables, peripherals, clocks)
+;; because this function is executed as the first instruction in the ResetHandler.
+;; The PDL is also not initialized to use the proper register offsets.
+;; The user of this function is responsible for initializing the PDL and resources before using them.
+;;
+ PUBWEAK Cy_OnResetUser
+ SECTION .text:CODE:REORDER:NOROOT(2)
+Cy_OnResetUser
+ BX LR
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Define strong version to return zero for
+;; __iar_program_start to skip data sections
+;; initialization.
+;;
+ PUBLIC __low_level_init
+ SECTION .text:CODE:REORDER:NOROOT(2)
+__low_level_init
+ MOVS R0, #0
+ BX LR
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Default interrupt handlers.
+;;
+ PUBWEAK Reset_Handler
+ SECTION .text:CODE:REORDER:NOROOT(2)
+Reset_Handler
+
+ ; Define strong function for startup customization
+ LDR R0, =Cy_OnResetUser
+ BLX R0
+
+ ; Disable global interrupts
+ CPSID I
+
+ ; Copy vectors from ROM to RAM
+ LDR r1, =__vector_table
+ LDR r0, =__ramVectors
+ LDR r2, =__Vectors_Size
+intvec_copy
+ LDR r3, [r1]
+ STR r3, [r0]
+ ADDS r0, r0, #4
+ ADDS r1, r1, #4
+ SUBS r2, r2, #1
+ CMP r2, #0
+ BNE intvec_copy
+
+ ; Update Vector Table Offset Register
+ LDR r0, =__ramVectors
+ LDR r1, =0xE000ED08
+ STR r0, [r1]
+ dsb
+
+ ; Enable the FPU if used
+ LDR R0, =Cy_SystemInitFpuEnable
+ BLX R0
+
+ ; Initialize data sections
+ LDR R0, =__iar_data_init3
+ BLX R0
+
+ LDR R0, =SystemInit
+ BLX R0
+
+ LDR R0, =__iar_program_start
+ BLX R0
+
+; Should never get here
+Cy_Main_Exited
+ B Cy_Main_Exited
+
+
+ PUBWEAK NMI_Handler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NMI_Handler
+ B NMI_Handler
+
+
+ PUBWEAK Cy_SysLib_FaultHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+Cy_SysLib_FaultHandler
+ B Cy_SysLib_FaultHandler
+
+ PUBWEAK HardFault_Wrapper
+ SECTION .text:CODE:REORDER:NOROOT(1)
+HardFault_Wrapper
+ IMPORT Cy_SysLib_FaultHandler
+ movs r0, #4
+ mov r1, LR
+ tst r0, r1
+ beq L_MSP
+ mrs r0, PSP
+ b L_API_call
+L_MSP
+ mrs r0, MSP
+L_API_call
+ ; Storing LR content for Creator call stack trace
+ push {LR}
+ bl Cy_SysLib_FaultHandler
+
+ PUBWEAK HardFault_Handler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+HardFault_Handler
+ B HardFault_Wrapper
+
+ PUBWEAK MemManage_Handler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+MemManage_Handler
+ B HardFault_Wrapper
+
+ PUBWEAK BusFault_Handler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+BusFault_Handler
+ B HardFault_Wrapper
+
+ PUBWEAK UsageFault_Handler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+UsageFault_Handler
+ B HardFault_Wrapper
+
+ PUBWEAK SVC_Handler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+SVC_Handler
+ B SVC_Handler
+
+ PUBWEAK DebugMon_Handler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+DebugMon_Handler
+ B DebugMon_Handler
+
+ PUBWEAK PendSV_Handler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+PendSV_Handler
+ B PendSV_Handler
+
+ PUBWEAK SysTick_Handler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+SysTick_Handler
+ B SysTick_Handler
+
+
+ ; External interrupts
+ PUBWEAK ioss_interrupts_gpio_0_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+ioss_interrupts_gpio_0_IRQHandler
+ B ioss_interrupts_gpio_0_IRQHandler
+
+ PUBWEAK ioss_interrupts_gpio_1_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+ioss_interrupts_gpio_1_IRQHandler
+ B ioss_interrupts_gpio_1_IRQHandler
+
+ PUBWEAK ioss_interrupts_gpio_2_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+ioss_interrupts_gpio_2_IRQHandler
+ B ioss_interrupts_gpio_2_IRQHandler
+
+ PUBWEAK ioss_interrupts_gpio_3_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+ioss_interrupts_gpio_3_IRQHandler
+ B ioss_interrupts_gpio_3_IRQHandler
+
+ PUBWEAK ioss_interrupts_gpio_4_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+ioss_interrupts_gpio_4_IRQHandler
+ B ioss_interrupts_gpio_4_IRQHandler
+
+ PUBWEAK ioss_interrupts_gpio_5_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+ioss_interrupts_gpio_5_IRQHandler
+ B ioss_interrupts_gpio_5_IRQHandler
+
+ PUBWEAK ioss_interrupts_gpio_6_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+ioss_interrupts_gpio_6_IRQHandler
+ B ioss_interrupts_gpio_6_IRQHandler
+
+ PUBWEAK ioss_interrupts_gpio_7_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+ioss_interrupts_gpio_7_IRQHandler
+ B ioss_interrupts_gpio_7_IRQHandler
+
+ PUBWEAK ioss_interrupts_gpio_8_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+ioss_interrupts_gpio_8_IRQHandler
+ B ioss_interrupts_gpio_8_IRQHandler
+
+ PUBWEAK ioss_interrupts_gpio_9_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+ioss_interrupts_gpio_9_IRQHandler
+ B ioss_interrupts_gpio_9_IRQHandler
+
+ PUBWEAK ioss_interrupts_gpio_10_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+ioss_interrupts_gpio_10_IRQHandler
+ B ioss_interrupts_gpio_10_IRQHandler
+
+ PUBWEAK ioss_interrupts_gpio_11_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+ioss_interrupts_gpio_11_IRQHandler
+ B ioss_interrupts_gpio_11_IRQHandler
+
+ PUBWEAK ioss_interrupts_gpio_12_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+ioss_interrupts_gpio_12_IRQHandler
+ B ioss_interrupts_gpio_12_IRQHandler
+
+ PUBWEAK ioss_interrupts_gpio_13_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+ioss_interrupts_gpio_13_IRQHandler
+ B ioss_interrupts_gpio_13_IRQHandler
+
+ PUBWEAK ioss_interrupts_gpio_14_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+ioss_interrupts_gpio_14_IRQHandler
+ B ioss_interrupts_gpio_14_IRQHandler
+
+ PUBWEAK ioss_interrupt_gpio_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+ioss_interrupt_gpio_IRQHandler
+ B ioss_interrupt_gpio_IRQHandler
+
+ PUBWEAK ioss_interrupt_vdd_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+ioss_interrupt_vdd_IRQHandler
+ B ioss_interrupt_vdd_IRQHandler
+
+ PUBWEAK lpcomp_interrupt_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+lpcomp_interrupt_IRQHandler
+ B lpcomp_interrupt_IRQHandler
+
+ PUBWEAK scb_8_interrupt_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+scb_8_interrupt_IRQHandler
+ B scb_8_interrupt_IRQHandler
+
+ PUBWEAK srss_interrupt_mcwdt_0_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+srss_interrupt_mcwdt_0_IRQHandler
+ B srss_interrupt_mcwdt_0_IRQHandler
+
+ PUBWEAK srss_interrupt_mcwdt_1_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+srss_interrupt_mcwdt_1_IRQHandler
+ B srss_interrupt_mcwdt_1_IRQHandler
+
+ PUBWEAK srss_interrupt_backup_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+srss_interrupt_backup_IRQHandler
+ B srss_interrupt_backup_IRQHandler
+
+ PUBWEAK srss_interrupt_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+srss_interrupt_IRQHandler
+ B srss_interrupt_IRQHandler
+
+ PUBWEAK pass_interrupt_ctbs_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+pass_interrupt_ctbs_IRQHandler
+ B pass_interrupt_ctbs_IRQHandler
+
+ PUBWEAK bless_interrupt_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+bless_interrupt_IRQHandler
+ B bless_interrupt_IRQHandler
+
+ PUBWEAK cpuss_interrupts_ipc_0_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_ipc_0_IRQHandler
+ B cpuss_interrupts_ipc_0_IRQHandler
+
+ PUBWEAK cpuss_interrupts_ipc_1_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_ipc_1_IRQHandler
+ B cpuss_interrupts_ipc_1_IRQHandler
+
+ PUBWEAK cpuss_interrupts_ipc_2_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_ipc_2_IRQHandler
+ B cpuss_interrupts_ipc_2_IRQHandler
+
+ PUBWEAK cpuss_interrupts_ipc_3_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_ipc_3_IRQHandler
+ B cpuss_interrupts_ipc_3_IRQHandler
+
+ PUBWEAK cpuss_interrupts_ipc_4_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_ipc_4_IRQHandler
+ B cpuss_interrupts_ipc_4_IRQHandler
+
+ PUBWEAK cpuss_interrupts_ipc_5_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_ipc_5_IRQHandler
+ B cpuss_interrupts_ipc_5_IRQHandler
+
+ PUBWEAK cpuss_interrupts_ipc_6_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_ipc_6_IRQHandler
+ B cpuss_interrupts_ipc_6_IRQHandler
+
+ PUBWEAK cpuss_interrupts_ipc_7_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_ipc_7_IRQHandler
+ B cpuss_interrupts_ipc_7_IRQHandler
+
+ PUBWEAK cpuss_interrupts_ipc_8_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_ipc_8_IRQHandler
+ B cpuss_interrupts_ipc_8_IRQHandler
+
+ PUBWEAK cpuss_interrupts_ipc_9_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_ipc_9_IRQHandler
+ B cpuss_interrupts_ipc_9_IRQHandler
+
+ PUBWEAK cpuss_interrupts_ipc_10_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_ipc_10_IRQHandler
+ B cpuss_interrupts_ipc_10_IRQHandler
+
+ PUBWEAK cpuss_interrupts_ipc_11_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_ipc_11_IRQHandler
+ B cpuss_interrupts_ipc_11_IRQHandler
+
+ PUBWEAK cpuss_interrupts_ipc_12_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_ipc_12_IRQHandler
+ B cpuss_interrupts_ipc_12_IRQHandler
+
+ PUBWEAK cpuss_interrupts_ipc_13_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_ipc_13_IRQHandler
+ B cpuss_interrupts_ipc_13_IRQHandler
+
+ PUBWEAK cpuss_interrupts_ipc_14_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_ipc_14_IRQHandler
+ B cpuss_interrupts_ipc_14_IRQHandler
+
+ PUBWEAK cpuss_interrupts_ipc_15_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_ipc_15_IRQHandler
+ B cpuss_interrupts_ipc_15_IRQHandler
+
+ PUBWEAK scb_0_interrupt_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+scb_0_interrupt_IRQHandler
+ B scb_0_interrupt_IRQHandler
+
+ PUBWEAK scb_1_interrupt_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+scb_1_interrupt_IRQHandler
+ B scb_1_interrupt_IRQHandler
+
+ PUBWEAK scb_2_interrupt_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+scb_2_interrupt_IRQHandler
+ B scb_2_interrupt_IRQHandler
+
+ PUBWEAK scb_3_interrupt_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+scb_3_interrupt_IRQHandler
+ B scb_3_interrupt_IRQHandler
+
+ PUBWEAK scb_4_interrupt_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+scb_4_interrupt_IRQHandler
+ B scb_4_interrupt_IRQHandler
+
+ PUBWEAK scb_5_interrupt_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+scb_5_interrupt_IRQHandler
+ B scb_5_interrupt_IRQHandler
+
+ PUBWEAK scb_6_interrupt_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+scb_6_interrupt_IRQHandler
+ B scb_6_interrupt_IRQHandler
+
+ PUBWEAK scb_7_interrupt_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+scb_7_interrupt_IRQHandler
+ B scb_7_interrupt_IRQHandler
+
+ PUBWEAK csd_interrupt_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+csd_interrupt_IRQHandler
+ B csd_interrupt_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw0_0_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw0_0_IRQHandler
+ B cpuss_interrupts_dw0_0_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw0_1_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw0_1_IRQHandler
+ B cpuss_interrupts_dw0_1_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw0_2_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw0_2_IRQHandler
+ B cpuss_interrupts_dw0_2_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw0_3_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw0_3_IRQHandler
+ B cpuss_interrupts_dw0_3_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw0_4_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw0_4_IRQHandler
+ B cpuss_interrupts_dw0_4_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw0_5_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw0_5_IRQHandler
+ B cpuss_interrupts_dw0_5_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw0_6_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw0_6_IRQHandler
+ B cpuss_interrupts_dw0_6_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw0_7_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw0_7_IRQHandler
+ B cpuss_interrupts_dw0_7_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw0_8_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw0_8_IRQHandler
+ B cpuss_interrupts_dw0_8_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw0_9_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw0_9_IRQHandler
+ B cpuss_interrupts_dw0_9_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw0_10_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw0_10_IRQHandler
+ B cpuss_interrupts_dw0_10_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw0_11_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw0_11_IRQHandler
+ B cpuss_interrupts_dw0_11_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw0_12_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw0_12_IRQHandler
+ B cpuss_interrupts_dw0_12_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw0_13_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw0_13_IRQHandler
+ B cpuss_interrupts_dw0_13_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw0_14_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw0_14_IRQHandler
+ B cpuss_interrupts_dw0_14_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw0_15_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw0_15_IRQHandler
+ B cpuss_interrupts_dw0_15_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw1_0_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw1_0_IRQHandler
+ B cpuss_interrupts_dw1_0_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw1_1_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw1_1_IRQHandler
+ B cpuss_interrupts_dw1_1_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw1_2_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw1_2_IRQHandler
+ B cpuss_interrupts_dw1_2_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw1_3_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw1_3_IRQHandler
+ B cpuss_interrupts_dw1_3_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw1_4_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw1_4_IRQHandler
+ B cpuss_interrupts_dw1_4_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw1_5_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw1_5_IRQHandler
+ B cpuss_interrupts_dw1_5_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw1_6_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw1_6_IRQHandler
+ B cpuss_interrupts_dw1_6_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw1_7_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw1_7_IRQHandler
+ B cpuss_interrupts_dw1_7_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw1_8_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw1_8_IRQHandler
+ B cpuss_interrupts_dw1_8_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw1_9_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw1_9_IRQHandler
+ B cpuss_interrupts_dw1_9_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw1_10_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw1_10_IRQHandler
+ B cpuss_interrupts_dw1_10_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw1_11_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw1_11_IRQHandler
+ B cpuss_interrupts_dw1_11_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw1_12_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw1_12_IRQHandler
+ B cpuss_interrupts_dw1_12_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw1_13_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw1_13_IRQHandler
+ B cpuss_interrupts_dw1_13_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw1_14_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw1_14_IRQHandler
+ B cpuss_interrupts_dw1_14_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw1_15_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw1_15_IRQHandler
+ B cpuss_interrupts_dw1_15_IRQHandler
+
+ PUBWEAK cpuss_interrupts_fault_0_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_fault_0_IRQHandler
+ B cpuss_interrupts_fault_0_IRQHandler
+
+ PUBWEAK cpuss_interrupts_fault_1_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_fault_1_IRQHandler
+ B cpuss_interrupts_fault_1_IRQHandler
+
+ PUBWEAK cpuss_interrupt_crypto_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupt_crypto_IRQHandler
+ B cpuss_interrupt_crypto_IRQHandler
+
+ PUBWEAK cpuss_interrupt_fm_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupt_fm_IRQHandler
+ B cpuss_interrupt_fm_IRQHandler
+
+ PUBWEAK cpuss_interrupts_cm0_cti_0_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_cm0_cti_0_IRQHandler
+ B cpuss_interrupts_cm0_cti_0_IRQHandler
+
+ PUBWEAK cpuss_interrupts_cm0_cti_1_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_cm0_cti_1_IRQHandler
+ B cpuss_interrupts_cm0_cti_1_IRQHandler
+
+ PUBWEAK cpuss_interrupts_cm4_cti_0_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_cm4_cti_0_IRQHandler
+ B cpuss_interrupts_cm4_cti_0_IRQHandler
+
+ PUBWEAK cpuss_interrupts_cm4_cti_1_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_cm4_cti_1_IRQHandler
+ B cpuss_interrupts_cm4_cti_1_IRQHandler
+
+ PUBWEAK tcpwm_0_interrupts_0_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_0_interrupts_0_IRQHandler
+ B tcpwm_0_interrupts_0_IRQHandler
+
+ PUBWEAK tcpwm_0_interrupts_1_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_0_interrupts_1_IRQHandler
+ B tcpwm_0_interrupts_1_IRQHandler
+
+ PUBWEAK tcpwm_0_interrupts_2_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_0_interrupts_2_IRQHandler
+ B tcpwm_0_interrupts_2_IRQHandler
+
+ PUBWEAK tcpwm_0_interrupts_3_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_0_interrupts_3_IRQHandler
+ B tcpwm_0_interrupts_3_IRQHandler
+
+ PUBWEAK tcpwm_0_interrupts_4_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_0_interrupts_4_IRQHandler
+ B tcpwm_0_interrupts_4_IRQHandler
+
+ PUBWEAK tcpwm_0_interrupts_5_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_0_interrupts_5_IRQHandler
+ B tcpwm_0_interrupts_5_IRQHandler
+
+ PUBWEAK tcpwm_0_interrupts_6_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_0_interrupts_6_IRQHandler
+ B tcpwm_0_interrupts_6_IRQHandler
+
+ PUBWEAK tcpwm_0_interrupts_7_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_0_interrupts_7_IRQHandler
+ B tcpwm_0_interrupts_7_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_0_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_0_IRQHandler
+ B tcpwm_1_interrupts_0_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_1_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_1_IRQHandler
+ B tcpwm_1_interrupts_1_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_2_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_2_IRQHandler
+ B tcpwm_1_interrupts_2_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_3_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_3_IRQHandler
+ B tcpwm_1_interrupts_3_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_4_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_4_IRQHandler
+ B tcpwm_1_interrupts_4_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_5_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_5_IRQHandler
+ B tcpwm_1_interrupts_5_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_6_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_6_IRQHandler
+ B tcpwm_1_interrupts_6_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_7_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_7_IRQHandler
+ B tcpwm_1_interrupts_7_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_8_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_8_IRQHandler
+ B tcpwm_1_interrupts_8_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_9_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_9_IRQHandler
+ B tcpwm_1_interrupts_9_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_10_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_10_IRQHandler
+ B tcpwm_1_interrupts_10_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_11_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_11_IRQHandler
+ B tcpwm_1_interrupts_11_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_12_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_12_IRQHandler
+ B tcpwm_1_interrupts_12_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_13_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_13_IRQHandler
+ B tcpwm_1_interrupts_13_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_14_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_14_IRQHandler
+ B tcpwm_1_interrupts_14_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_15_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_15_IRQHandler
+ B tcpwm_1_interrupts_15_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_16_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_16_IRQHandler
+ B tcpwm_1_interrupts_16_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_17_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_17_IRQHandler
+ B tcpwm_1_interrupts_17_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_18_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_18_IRQHandler
+ B tcpwm_1_interrupts_18_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_19_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_19_IRQHandler
+ B tcpwm_1_interrupts_19_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_20_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_20_IRQHandler
+ B tcpwm_1_interrupts_20_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_21_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_21_IRQHandler
+ B tcpwm_1_interrupts_21_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_22_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_22_IRQHandler
+ B tcpwm_1_interrupts_22_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_23_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_23_IRQHandler
+ B tcpwm_1_interrupts_23_IRQHandler
+
+ PUBWEAK udb_interrupts_0_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+udb_interrupts_0_IRQHandler
+ B udb_interrupts_0_IRQHandler
+
+ PUBWEAK udb_interrupts_1_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+udb_interrupts_1_IRQHandler
+ B udb_interrupts_1_IRQHandler
+
+ PUBWEAK udb_interrupts_2_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+udb_interrupts_2_IRQHandler
+ B udb_interrupts_2_IRQHandler
+
+ PUBWEAK udb_interrupts_3_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+udb_interrupts_3_IRQHandler
+ B udb_interrupts_3_IRQHandler
+
+ PUBWEAK udb_interrupts_4_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+udb_interrupts_4_IRQHandler
+ B udb_interrupts_4_IRQHandler
+
+ PUBWEAK udb_interrupts_5_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+udb_interrupts_5_IRQHandler
+ B udb_interrupts_5_IRQHandler
+
+ PUBWEAK udb_interrupts_6_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+udb_interrupts_6_IRQHandler
+ B udb_interrupts_6_IRQHandler
+
+ PUBWEAK udb_interrupts_7_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+udb_interrupts_7_IRQHandler
+ B udb_interrupts_7_IRQHandler
+
+ PUBWEAK udb_interrupts_8_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+udb_interrupts_8_IRQHandler
+ B udb_interrupts_8_IRQHandler
+
+ PUBWEAK udb_interrupts_9_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+udb_interrupts_9_IRQHandler
+ B udb_interrupts_9_IRQHandler
+
+ PUBWEAK udb_interrupts_10_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+udb_interrupts_10_IRQHandler
+ B udb_interrupts_10_IRQHandler
+
+ PUBWEAK udb_interrupts_11_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+udb_interrupts_11_IRQHandler
+ B udb_interrupts_11_IRQHandler
+
+ PUBWEAK udb_interrupts_12_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+udb_interrupts_12_IRQHandler
+ B udb_interrupts_12_IRQHandler
+
+ PUBWEAK udb_interrupts_13_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+udb_interrupts_13_IRQHandler
+ B udb_interrupts_13_IRQHandler
+
+ PUBWEAK udb_interrupts_14_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+udb_interrupts_14_IRQHandler
+ B udb_interrupts_14_IRQHandler
+
+ PUBWEAK udb_interrupts_15_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+udb_interrupts_15_IRQHandler
+ B udb_interrupts_15_IRQHandler
+
+ PUBWEAK pass_interrupt_sar_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+pass_interrupt_sar_IRQHandler
+ B pass_interrupt_sar_IRQHandler
+
+ PUBWEAK audioss_interrupt_i2s_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+audioss_interrupt_i2s_IRQHandler
+ B audioss_interrupt_i2s_IRQHandler
+
+ PUBWEAK audioss_interrupt_pdm_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+audioss_interrupt_pdm_IRQHandler
+ B audioss_interrupt_pdm_IRQHandler
+
+ PUBWEAK profile_interrupt_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+profile_interrupt_IRQHandler
+ B profile_interrupt_IRQHandler
+
+ PUBWEAK smif_interrupt_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+smif_interrupt_IRQHandler
+ B smif_interrupt_IRQHandler
+
+ PUBWEAK usb_interrupt_hi_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+usb_interrupt_hi_IRQHandler
+ B usb_interrupt_hi_IRQHandler
+
+ PUBWEAK usb_interrupt_med_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+usb_interrupt_med_IRQHandler
+ B usb_interrupt_med_IRQHandler
+
+ PUBWEAK usb_interrupt_lo_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+usb_interrupt_lo_IRQHandler
+ B usb_interrupt_lo_IRQHandler
+
+ PUBWEAK pass_interrupt_dacs_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+pass_interrupt_dacs_IRQHandler
+ B pass_interrupt_dacs_IRQHandler
+
+
+ END
+
+
+; [] END OF FILE
diff --git a/2020TPCApp0.cydsn/ias.c b/2020TPCApp0.cydsn/ias.c
new file mode 100644
index 0000000..4973565
--- /dev/null
+++ b/2020TPCApp0.cydsn/ias.c
@@ -0,0 +1,62 @@
+/*******************************************************************************
+* File Name: ias.c
+*
+* Description:
+* This file contains Immediate Alert Service callback handler function.
+*
+********************************************************************************
+* Copyright 2017, Cypress Semiconductor Corporation. All rights reserved.
+* You may use this file only in accordance with the license, terms, conditions,
+* disclaimers, and limitations in the end user license agreement accompanying
+* the software package with which this file was provided.
+*******************************************************************************/
+
+#include "ias.h"
+
+
+/* IAS alert level value */
+volatile uint8_t alertLevel = 0;
+
+/******************************************************************************
+* Function Name: IasInit
+*******************************************************************************
+*
+* Summary:
+* Registers the IAS CallBack.
+*
+******************************************************************************/
+void IasInit(void)
+{
+ Cy_BLE_IAS_RegisterAttrCallback(IasEventHandler);
+}
+
+
+/*******************************************************************************
+* Function Name: IasEventHandler
+********************************************************************************
+*
+* Summary:
+* This is an event callback function to receive events from the BLE Component,
+* which are specific to Immediate Alert Service.
+*
+* Parameters:
+* event: Write Command event from the BLE component.
+* eventParams: A structure instance of CY_BLE_GATT_HANDLE_VALUE_PAIR_T type.
+*
+*******************************************************************************/
+void IasEventHandler(uint32 event, void *eventParam)
+{
+ (void) eventParam;
+ uint8_t alert;
+
+ /* Alert Level Characteristic write event */
+ if(event == CY_BLE_EVT_IASS_WRITE_CHAR_CMD)
+ {
+ /* Read the updated Alert Level value from the GATT database */
+ Cy_BLE_IASS_GetCharacteristicValue(CY_BLE_IAS_ALERT_LEVEL, sizeof(alert), &alert);
+ alertLevel = alert;
+ }
+}
+
+
+/* [] END OF FILE */
diff --git a/2020TPCApp0.cydsn/ias.h b/2020TPCApp0.cydsn/ias.h
new file mode 100644
index 0000000..233ce70
--- /dev/null
+++ b/2020TPCApp0.cydsn/ias.h
@@ -0,0 +1,31 @@
+/*******************************************************************************
+* File Name: ias.h
+*
+* Description:
+* Contains the function prototypes and references for the Immediate Alert
+* Service of the Bluetooth Component.
+*
+********************************************************************************
+* Copyright 2017, Cypress Semiconductor Corporation. All rights reserved.
+* You may use this file only in accordance with the license, terms, conditions,
+* disclaimers, and limitations in the end user license agreement accompanying
+* the software package with which this file was provided.
+*******************************************************************************/
+
+#include "project.h"
+
+
+/***************************************
+* Function Prototypes
+***************************************/
+void IasInit(void);
+void IasEventHandler(uint32_t event, void *eventParam);
+
+
+/***************************************
+* External data references
+***************************************/
+extern volatile uint8_t alertLevel;
+
+
+/* [] END OF FILE */
diff --git a/2020TPCApp0.cydsn/key_copy.bat b/2020TPCApp0.cydsn/key_copy.bat
new file mode 100644
index 0000000..7eea6c0
--- /dev/null
+++ b/2020TPCApp0.cydsn/key_copy.bat
@@ -0,0 +1,78 @@
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::
+:: File Name: key_copy.bat
+::
+:: Version: 1.01
+::
+:: Description:
+:: Simple script to copy generated key files to a persistent location
+::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:: Copyright 2017-2018, Cypress Semiconductor Corporation. All rights reserved.
+:: This software is owned by Cypress Semiconductor Corporation and is protected
+:: by and subject to worldwide patent and copyright laws and treaties.
+:: Therefore, you may use this software only as provided in the license agreement
+:: accompanying the software package from which you obtained this software.
+:: CYPRESS AND ITS SUPPLIERS MAKE NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+:: WITH REGARD TO THIS SOFTWARE, INCLUDING, BUT NOT LIMITED TO, NONINFRINGEMENT,
+:: IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+
+@echo off
+set OUT_DIR="..\Keys"
+set LOCAL_DIR=keys_generated
+
+set SRC_PRIV_NAME=rsa_private_generated.txt
+set SRC_PUB_NAME=rsa_public_generated.txt
+set SRC_AES_NAME=aes_private_generated.txt
+set SRC_EIV_NAME=aes_eiv_generated.txt
+
+set PRIV_NAME=rsa_private.txt
+set PUB_NAME=rsa_public.txt
+set AES_NAME=aes_private.txt
+set EIV_NAME=aes_eiv.txt
+
+
+:: File Check
+set ALLOK=1
+IF NOT EXIST %LOCAL_DIR%\%SRC_PRIV_NAME% (
+ echo File %SRC_PRIV_NAME% does not exist.
+ set ALLOK=0
+)
+IF NOT EXIST %LOCAL_DIR%\%SRC_PUB_NAME% (
+ echo File %SRC_PUB_NAME% does not exist.
+ set ALLOK=0
+)
+IF NOT EXIST %LOCAL_DIR%\%SRC_AES_NAME% (
+ echo File %SRC_AES_NAME% does not exist.
+ set ALLOK=0
+)
+IF NOT EXIST %LOCAL_DIR%\%SRC_EIV_NAME% (
+ echo File %SRC_EIV_NAME% does not exist.
+ set ALLOK=0
+)
+IF %ALLOK% == 0 (
+ echo Please run the keygen batch file to generate the keys.
+ echo.
+ goto :end
+)
+
+IF NOT EXIST %OUT_DIR% mkdir %OUT_DIR%
+
+:choice
+cls
+echo Warning: The keys used in the application will be overwritten.
+set /P c=Are you sure you want to continue [Y/N]?
+if /I "%c%" EQU "Y" goto :cont
+if /I "%c%" EQU "N" goto :end
+goto :choice
+
+:: Copy files to persistent location, renaming them in the process
+:cont
+COPY /y %LOCAL_DIR%\%SRC_PRIV_NAME% %OUT_DIR%\%PRIV_NAME%
+COPY /y %LOCAL_DIR%\%SRC_PUB_NAME% %OUT_DIR%\%PUB_NAME%
+COPY /y %LOCAL_DIR%\%SRC_AES_NAME% %OUT_DIR%\%AES_NAME%
+COPY /y %LOCAL_DIR%\%SRC_EIV_NAME% %OUT_DIR%\%EIV_NAME%
+
+:end
+pause
\ No newline at end of file
diff --git a/2020TPCApp0.cydsn/keygen.bat b/2020TPCApp0.cydsn/keygen.bat
new file mode 100644
index 0000000..4a48ed3
--- /dev/null
+++ b/2020TPCApp0.cydsn/keygen.bat
@@ -0,0 +1,143 @@
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+::
+:: File Name: keygen.bat
+::
+:: Version: 1.0
+::
+:: Description:
+:: Simple script to generate the RSA-2048 public and private keys using OpenSSL.
+:: Once created, the script calls a python script to print out the public key
+:: modulus that is ready to be inserted into cy_publicKey struct in
+:: cy_si_keyStorage.c.
+:: The script also generates a 128 bit random number to be used for the AES
+:: private key and EIV.
+::
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+:: Copyright 2017-2018, Cypress Semiconductor Corporation. All rights reserved.
+:: This software is owned by Cypress Semiconductor Corporation and is protected
+:: by and subject to worldwide patent and copyright laws and treaties.
+:: Therefore, you may use this software only as provided in the license agreement
+:: accompanying the software package from which you obtained this software.
+:: CYPRESS AND ITS SUPPLIERS MAKE NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
+:: WITH REGARD TO THIS SOFTWARE, INCLUDING, BUT NOT LIMITED TO, NONINFRINGEMENT,
+:: IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
+
+@echo off
+set OUT_DIR="%~dp0\keys_generated"
+set LOCAL_DIR=keys_generated
+set PRIV_NAME=rsa_private_generated.txt
+set PUB_NAME=rsa_public_generated.txt
+set MOD_NAME=rsa_to_c_generated.txt
+
+set AES_TEMP=aes_private_generated_temp.txt
+set EIV_TEMP=aes_eiv_generated_temp.txt
+set AES_NAME=aes_private_generated.txt
+set EIV_NAME=aes_eiv_generated.txt
+set AES_ARRAY=aes_private_array_generated.txt
+
+:: Check if OpenSSL and Python are correctly installed
+set ALLOK=1
+CALL :testOpenSSL
+CALL :testPython
+IF %ALLOK% == 0 (
+ echo.
+ pause
+ goto :end
+)
+IF NOT EXIST %OUT_DIR% mkdir %OUT_DIR%
+
+:: Delete temp files
+IF EXIST %OUT_DIR%\%AES_TEMP% DEL /F %OUT_DIR%\%AES_TEMP%
+IF EXIST %OUT_DIR%\%EIV_TEMP% DEL /F %OUT_DIR%\%EIV_TEMP%
+
+:: Generate the RSA-2048 public and private keys
+openssl genrsa -out %OUT_DIR%\%PRIV_NAME% 2048
+openssl rsa -in %OUT_DIR%\%PRIV_NAME% -outform PEM -pubout -out %OUT_DIR%\%PUB_NAME%
+
+:: Generate a 128bit random number
+openssl rand -hex -out %OUT_DIR%\%AES_TEMP% 16
+openssl rand -hex -out %OUT_DIR%\%EIV_TEMP% 16
+
+:: Check if files exist before processing
+IF NOT EXIST %LOCAL_DIR%\%AES_TEMP% (
+ echo Could not find OpenSSL generated files. If the error persists, check OpenSSL installation and permissions.
+ echo.
+ pause
+ goto :end
+)
+IF NOT EXIST %LOCAL_DIR%\%AES_TEMP% (
+ echo Could not find OpenSSL generated files. If the error persists, check OpenSSL installation and permissions.
+ echo.
+ pause
+ goto :end
+)
+
+IF EXIST %OUT_DIR%\%AES_NAME% DEL /F %OUT_DIR%\%AES_NAME%
+IF EXIST %OUT_DIR%\%EIV_NAME% DEL /F %OUT_DIR%\%EIV_NAME%
+IF EXIST %OUT_DIR%\%AES_ARRAY% DEL /F %OUT_DIR%\%AES_ARRAY%
+
+:: Remove new line characters from AES and EIV files
+FOR /F "Usebackq Tokens=*" %%@ IN ("%LOCAL_DIR%\%AES_TEMP%") DO (
+MISRA Rule | +*Rule Class (Required/Advisory) | +*Rule Description | +*Description of Deviation(s) | +*
---|---|---|---|
2.3 | +*R | +*The character sequence // shall not be used within a comment. | +*The comments provide a useful WEB link to the documentation. | +*
Version | +*Changes | +*Reason for Change | +*
---|---|---|
2.20 | +*Moved the Cy_IPC_SystemSemaInit(), Cy_IPC_SystemPipeInit() functions implementation from IPC to Startup. | +*Changed the IPC driver configuration method from compile time to run time. | +*
2.10 | +*Added constructor attribute to SystemInit() function declaration for ARM MDK compiler. \n +* Removed $Sub$$main symbol for ARM MDK compiler. +* | +*uVision Debugger support. | +*
Updated description of the Startup behavior for Single-Core Devices. \n +* Added note about WDT disabling by SystemInit() function. +* | +*Documentation improvement. | +*|
2.0 | +*Added restoring of FLL registers to the default state in SystemInit() API for single core devices. +* Single core device support. +* | +*+* |
Added Normal Access Restrictions, Public Key, TOC part2 and TOC part2 copy to Supervisory flash linker memory regions. \n +* Renamed 'wflash' memory region to 'em_eeprom'. +* | +*Linker scripts usability improvement. | +*|
Added Cy_IPC_SystemSemaInit(), Cy_IPC_SystemPipeInit(), Cy_Flash_Init() functions call to SystemInit() API. | +*Reserved system resources for internal operations. | +*|
Added clearing and releasing of IPC structure #7 (reserved for the Deep-Sleep operations) to SystemInit() API. | +*To avoid deadlocks in case of SW or WDT reset during Deep-Sleep entering. | +*|
1.0 | +*Initial version | +*+* |
params->dataBuffer = &packetBuffer[4];
\n
+* \note that \c packetBuffer in this case must be 4 bytes aligned, as
+* \c dataBuffer is required to be 4 bytes aligned.
+*/
+#define CY_DFU_OPT_SEND_DATA (1)
+
+/** A non-zero value enables the Get Metadata DFU command */
+#define CY_DFU_OPT_GET_METADATA (1)
+
+/** A non-zero value enables the Set EI Vector DFU command */
+#define CY_DFU_OPT_SET_EIVECTOR (0)
+
+/**
+* A non-zero value allows writing metadata
+* with the Set App Metadata DFU command.
+*/
+#define CY_DFU_METADATA_WRITABLE (1)
+
+/** Non-zero value enables the usage of hardware Crypto API */
+#define CY_DFU_OPT_CRYPTO_HW (0)
+
+/** A non-zero value enables the usage of CRC-16 for DFU packet verification */
+#define CY_DFU_OPT_PACKET_CRC (0)
+
+/** Set the default application-format-possible values defined in \ref group_dfu_macro_app_type */
+#define CY_DFU_APP_FORMAT (CY_DFU_BASIC_APP)
+
+/** Set the default secure application-verification-type possible values
+ * defined in \ref group_dfu_macro_ver_type */
+#define CY_DFU_SEC_APP_VERIFY_TYPE (CY_DFU_VERIFY_FAST)
+
+/** \} group_dfu_macro_config */
+
+#if !defined(CY_DOXYGEN)
+ #if defined(__GNUC__) || defined(__ICCARM__)
+ /*
+ * These variables are defined in the linker scripts, the values of their addresses define
+ * corresponding applications start address and length.
+ */
+ extern uint8_t __cy_app0_verify_start;
+ extern uint8_t __cy_app0_verify_length;
+ extern uint8_t __cy_app1_verify_start;
+ extern uint8_t __cy_app1_verify_length;
+ extern uint8_t __cy_boot_signature_size;
+
+ #define CY_DFU_APP0_VERIFY_START ( (uint32_t)&__cy_app0_verify_start )
+ #define CY_DFU_APP0_VERIFY_LENGTH ( (uint32_t)&__cy_app0_verify_length )
+ #define CY_DFU_APP1_VERIFY_START ( (uint32_t)&__cy_app1_verify_start )
+ #define CY_DFU_APP1_VERIFY_LENGTH ( (uint32_t)&__cy_app1_verify_length )
+ #define CY_DFU_SIGNATURE_SIZE ( (uint32_t)&__cy_boot_signature_size )
+
+ #elif defined(__ARMCC_VERSION)
+ #include "dfu_mdk_common.h"
+
+ #define CY_DFU_APP0_VERIFY_START ( CY_APP0_CORE0_FLASH_ADDR )
+ #define CY_DFU_APP0_VERIFY_LENGTH ( CY_APP0_CORE0_FLASH_LENGTH + CY_APP0_CORE1_FLASH_LENGTH \
+ - CY_BOOT_SIGNATURE_SIZE)
+ #define CY_DFU_APP1_VERIFY_START ( CY_APP1_CORE0_FLASH_ADDR )
+ #define CY_DFU_APP1_VERIFY_LENGTH ( CY_APP1_CORE0_FLASH_LENGTH + CY_APP1_CORE1_FLASH_LENGTH \
+ - CY_BOOT_SIGNATURE_SIZE)
+ #define CY_DFU_SIGNATURE_SIZE CY_BOOT_SIGNATURE_SIZE
+
+ #else
+ #error "Not implemented for this compiler"
+ #endif /* defined(__GNUC__) || defined(__ICCARM__) */
+#endif /* !defined(CY_DOXYGEN) */
+
+
+#endif /* !defined(DFU_USER_H) */
+
+
+/* [] END OF FILE */
diff --git a/2020TPCApp1.cydsn/gcc/startup_psoc6_01_cm0plus.S b/2020TPCApp1.cydsn/gcc/startup_psoc6_01_cm0plus.S
new file mode 100644
index 0000000..e26df0a
--- /dev/null
+++ b/2020TPCApp1.cydsn/gcc/startup_psoc6_01_cm0plus.S
@@ -0,0 +1,404 @@
+/**************************************************************************//**
+ * @file startup_psoc6_01_cm0plus.S
+ * @brief CMSIS Core Device Startup File for
+ * ARMCM0plus Device Series
+ * @version V5.00
+ * @date 02. March 2016
+ ******************************************************************************/
+/*
+ * Copyright (c) 2009-2016 ARM Limited. All rights reserved.
+ *
+ * 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
+ *
+ * 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.
+ */
+
+ /* Address of the NMI handler */
+ #define CY_NMI_HANLDER_ADDR 0x0000000D
+
+ /* The CPU VTOR register */
+ #define CY_CPU_VTOR_ADDR 0xE000ED08
+
+ /* Copy flash vectors and data section to RAM */
+ #define __STARTUP_COPY_MULTIPLE
+
+ /* Clear single BSS section */
+ #define __STARTUP_CLEAR_BSS
+
+ .syntax unified
+ .arch armv6-m
+
+ .section .stack
+ .align 3
+#ifdef __STACK_SIZE
+ .equ Stack_Size, __STACK_SIZE
+#else
+ .equ Stack_Size, 0x00001000
+#endif
+ .globl __StackTop
+ .globl __StackLimit
+__StackLimit:
+ .space Stack_Size
+ .size __StackLimit, . - __StackLimit
+__StackTop:
+ .size __StackTop, . - __StackTop
+
+ .section .heap
+ .align 3
+#ifdef __HEAP_SIZE
+ .equ Heap_Size, __HEAP_SIZE
+#else
+ .equ Heap_Size, 0x00000400
+#endif
+ .globl __HeapBase
+ .globl __HeapLimit
+__HeapBase:
+ .if Heap_Size
+ .space Heap_Size
+ .endif
+ .size __HeapBase, . - __HeapBase
+__HeapLimit:
+ .size __HeapLimit, . - __HeapLimit
+
+ .section .vectors
+ .align 2
+ .globl __Vectors
+__Vectors:
+ .long __StackTop /* Top of Stack */
+ .long Reset_Handler /* Reset Handler */
+ .long CY_NMI_HANLDER_ADDR /* NMI Handler */
+ .long HardFault_Handler /* Hard Fault Handler */
+ .long 0 /* Reserved */
+ .long 0 /* Reserved */
+ .long 0 /* Reserved */
+ .long 0 /* Reserved */
+ .long 0 /* Reserved */
+ .long 0 /* Reserved */
+ .long 0 /* Reserved */
+ .long SVC_Handler /* SVCall Handler */
+ .long 0 /* Reserved */
+ .long 0 /* Reserved */
+ .long PendSV_Handler /* PendSV Handler */
+ .long SysTick_Handler /* SysTick Handler */
+
+ /* External interrupts Description */
+ .long NvicMux0_IRQHandler /* CM0+ NVIC Mux input 0 */
+ .long NvicMux1_IRQHandler /* CM0+ NVIC Mux input 1 */
+ .long NvicMux2_IRQHandler /* CM0+ NVIC Mux input 2 */
+ .long NvicMux3_IRQHandler /* CM0+ NVIC Mux input 3 */
+ .long NvicMux4_IRQHandler /* CM0+ NVIC Mux input 4 */
+ .long NvicMux5_IRQHandler /* CM0+ NVIC Mux input 5 */
+ .long NvicMux6_IRQHandler /* CM0+ NVIC Mux input 6 */
+ .long NvicMux7_IRQHandler /* CM0+ NVIC Mux input 7 */
+ .long NvicMux8_IRQHandler /* CM0+ NVIC Mux input 8 */
+ .long NvicMux9_IRQHandler /* CM0+ NVIC Mux input 9 */
+ .long NvicMux10_IRQHandler /* CM0+ NVIC Mux input 10 */
+ .long NvicMux11_IRQHandler /* CM0+ NVIC Mux input 11 */
+ .long NvicMux12_IRQHandler /* CM0+ NVIC Mux input 12 */
+ .long NvicMux13_IRQHandler /* CM0+ NVIC Mux input 13 */
+ .long NvicMux14_IRQHandler /* CM0+ NVIC Mux input 14 */
+ .long NvicMux15_IRQHandler /* CM0+ NVIC Mux input 15 */
+ .long NvicMux16_IRQHandler /* CM0+ NVIC Mux input 16 */
+ .long NvicMux17_IRQHandler /* CM0+ NVIC Mux input 17 */
+ .long NvicMux18_IRQHandler /* CM0+ NVIC Mux input 18 */
+ .long NvicMux19_IRQHandler /* CM0+ NVIC Mux input 19 */
+ .long NvicMux20_IRQHandler /* CM0+ NVIC Mux input 20 */
+ .long NvicMux21_IRQHandler /* CM0+ NVIC Mux input 21 */
+ .long NvicMux22_IRQHandler /* CM0+ NVIC Mux input 22 */
+ .long NvicMux23_IRQHandler /* CM0+ NVIC Mux input 23 */
+ .long NvicMux24_IRQHandler /* CM0+ NVIC Mux input 24 */
+ .long NvicMux25_IRQHandler /* CM0+ NVIC Mux input 25 */
+ .long NvicMux26_IRQHandler /* CM0+ NVIC Mux input 26 */
+ .long NvicMux27_IRQHandler /* CM0+ NVIC Mux input 27 */
+ .long NvicMux28_IRQHandler /* CM0+ NVIC Mux input 28 */
+ .long NvicMux29_IRQHandler /* CM0+ NVIC Mux input 29 */
+ .long NvicMux30_IRQHandler /* CM0+ NVIC Mux input 30 */
+ .long NvicMux31_IRQHandler /* CM0+ NVIC Mux input 31 */
+
+ .size __Vectors, . - __Vectors
+ .equ __VectorsSize, . - __Vectors
+
+ .section .ram_vectors
+ .align 2
+ .globl __ramVectors
+__ramVectors:
+ .space __VectorsSize
+ .size __ramVectors, . - __ramVectors
+
+
+ .text
+ .thumb
+ .thumb_func
+ .align 2
+
+ /*
+ * Device startup customization
+ *
+ * Note. The global resources are not yet initialized (for example global variables, peripherals, clocks)
+ * because this function is executed as the first instruction in the ResetHandler.
+ * The PDL is also not initialized to use the proper register offsets.
+ * The user of this function is responsible for initializing the PDL and resources before using them.
+ */
+ .weak Cy_OnResetUser
+ .func Cy_OnResetUser, Cy_OnResetUser
+ .type Cy_OnResetUser, %function
+
+Cy_OnResetUser:
+ bx lr
+ .size Cy_OnResetUser, . - Cy_OnResetUser
+ .endfunc
+
+ /* Reset handler */
+ .weak Reset_Handler
+ .type Reset_Handler, %function
+
+Reset_Handler:
+ bl Cy_OnResetUser
+ cpsid i
+
+/* Firstly it copies data from read only memory to RAM. There are two schemes
+ * to copy. One can copy more than one sections. Another can only copy
+ * one section. The former scheme needs more instructions and read-only
+ * data to implement than the latter.
+ * Macro __STARTUP_COPY_MULTIPLE is used to choose between two schemes. */
+
+#ifdef __STARTUP_COPY_MULTIPLE
+/* Multiple sections scheme.
+ *
+ * Between symbol address __copy_table_start__ and __copy_table_end__,
+ * there are array of triplets, each of which specify:
+ * offset 0: LMA of start of a section to copy from
+ * offset 4: VMA of start of a section to copy to
+ * offset 8: size of the section to copy. Must be multiply of 4
+ *
+ * All addresses must be aligned to 4 bytes boundary.
+ */
+ ldr r4, =__copy_table_start__
+ ldr r5, =__copy_table_end__
+
+.L_loop0:
+ cmp r4, r5
+ bge .L_loop0_done
+ ldr r1, [r4]
+ ldr r2, [r4, #4]
+ ldr r3, [r4, #8]
+
+.L_loop0_0:
+ subs r3, #4
+ blt .L_loop0_0_done
+ ldr r0, [r1, r3]
+ str r0, [r2, r3]
+ b .L_loop0_0
+
+.L_loop0_0_done:
+ adds r4, #12
+ b .L_loop0
+
+.L_loop0_done:
+#else
+/* Single section scheme.
+ *
+ * The ranges of copy from/to are specified by following symbols
+ * __etext: LMA of start of the section to copy from. Usually end of text
+ * __data_start__: VMA of start of the section to copy to
+ * __data_end__: VMA of end of the section to copy to
+ *
+ * All addresses must be aligned to 4 bytes boundary.
+ */
+ ldr r1, =__etext
+ ldr r2, =__data_start__
+ ldr r3, =__data_end__
+
+ subs r3, r2
+ ble .L_loop1_done
+
+.L_loop1:
+ subs r3, #4
+ ldr r0, [r1,r3]
+ str r0, [r2,r3]
+ bgt .L_loop1
+
+.L_loop1_done:
+#endif /*__STARTUP_COPY_MULTIPLE */
+
+/* This part of work usually is done in C library startup code. Otherwise,
+ * define this macro to enable it in this startup.
+ *
+ * There are two schemes too. One can clear multiple BSS sections. Another
+ * can only clear one section. The former is more size expensive than the
+ * latter.
+ *
+ * Define macro __STARTUP_CLEAR_BSS_MULTIPLE to choose the former.
+ * Otherwise define macro __STARTUP_CLEAR_BSS to choose the later.
+ */
+#ifdef __STARTUP_CLEAR_BSS_MULTIPLE
+/* Multiple sections scheme.
+ *
+ * Between symbol address __copy_table_start__ and __copy_table_end__,
+ * there are array of tuples specifying:
+ * offset 0: Start of a BSS section
+ * offset 4: Size of this BSS section. Must be multiply of 4
+ */
+ ldr r3, =__zero_table_start__
+ ldr r4, =__zero_table_end__
+
+.L_loop2:
+ cmp r3, r4
+ bge .L_loop2_done
+ ldr r1, [r3]
+ ldr r2, [r3, #4]
+ movs r0, 0
+
+.L_loop2_0:
+ subs r2, #4
+ blt .L_loop2_0_done
+ str r0, [r1, r2]
+ b .L_loop2_0
+.L_loop2_0_done:
+
+ adds r3, #8
+ b .L_loop2
+.L_loop2_done:
+#elif defined (__STARTUP_CLEAR_BSS)
+/* Single BSS section scheme.
+ *
+ * The BSS section is specified by following symbols
+ * __bss_start__: start of the BSS section.
+ * __bss_end__: end of the BSS section.
+ *
+ * Both addresses must be aligned to 4 bytes boundary.
+ */
+ ldr r1, =__bss_start__
+ ldr r2, =__bss_end__
+
+ movs r0, 0
+
+ subs r2, r1
+ ble .L_loop3_done
+
+.L_loop3:
+ subs r2, #4
+ str r0, [r1, r2]
+ bgt .L_loop3
+.L_loop3_done:
+#endif /* __STARTUP_CLEAR_BSS_MULTIPLE || __STARTUP_CLEAR_BSS */
+
+ /* Update Vector Table Offset Register. */
+ ldr r0, =__ramVectors
+ ldr r1, =CY_CPU_VTOR_ADDR
+ str r0, [r1]
+ dsb 0xF
+
+#ifndef __NO_SYSTEM_INIT
+ bl SystemInit
+#endif
+
+ bl main
+
+ /* Should never get here */
+ b .
+
+ .pool
+ .size Reset_Handler, . - Reset_Handler
+
+ .align 1
+ .thumb_func
+ .weak Default_Handler
+ .type Default_Handler, %function
+Default_Handler:
+ b .
+ .size Default_Handler, . - Default_Handler
+ .weak Cy_SysLib_FaultHandler
+ .type Cy_SysLib_FaultHandler, %function
+
+Cy_SysLib_FaultHandler:
+ b .
+ .size Cy_SysLib_FaultHandler, . - Cy_SysLib_FaultHandler
+ .type Fault_Handler, %function
+
+Fault_Handler:
+ /* Storing LR content for Creator call stack trace */
+ push {LR}
+ movs r0, #4
+ mov r1, LR
+ tst r0, r1
+ beq .L_MSP
+ mrs r0, PSP
+ b .L_API_call
+.L_MSP:
+ mrs r0, MSP
+.L_API_call:
+ /* Compensation of stack pointer address due to pushing 4 bytes of LR */
+ adds r0, r0, #4
+ bl Cy_SysLib_FaultHandler
+ b .
+ .size Fault_Handler, . - Fault_Handler
+
+.macro def_fault_Handler fault_handler_name
+ .weak \fault_handler_name
+ .set \fault_handler_name, Fault_Handler
+ .endm
+
+/* Macro to define default handlers. Default handler
+ * will be weak symbol and just dead loops. They can be
+ * overwritten by other handlers */
+ .macro def_irq_handler handler_name
+ .weak \handler_name
+ .set \handler_name, Default_Handler
+ .endm
+
+ def_irq_handler NMI_Handler
+
+ def_fault_Handler HardFault_Handler
+
+ def_irq_handler SVC_Handler
+ def_irq_handler PendSV_Handler
+ def_irq_handler SysTick_Handler
+
+ def_irq_handler NvicMux0_IRQHandler /* CM0+ NVIC Mux input 0 */
+ def_irq_handler NvicMux1_IRQHandler /* CM0+ NVIC Mux input 1 */
+ def_irq_handler NvicMux2_IRQHandler /* CM0+ NVIC Mux input 2 */
+ def_irq_handler NvicMux3_IRQHandler /* CM0+ NVIC Mux input 3 */
+ def_irq_handler NvicMux4_IRQHandler /* CM0+ NVIC Mux input 4 */
+ def_irq_handler NvicMux5_IRQHandler /* CM0+ NVIC Mux input 5 */
+ def_irq_handler NvicMux6_IRQHandler /* CM0+ NVIC Mux input 6 */
+ def_irq_handler NvicMux7_IRQHandler /* CM0+ NVIC Mux input 7 */
+ def_irq_handler NvicMux8_IRQHandler /* CM0+ NVIC Mux input 8 */
+ def_irq_handler NvicMux9_IRQHandler /* CM0+ NVIC Mux input 9 */
+ def_irq_handler NvicMux10_IRQHandler /* CM0+ NVIC Mux input 10 */
+ def_irq_handler NvicMux11_IRQHandler /* CM0+ NVIC Mux input 11 */
+ def_irq_handler NvicMux12_IRQHandler /* CM0+ NVIC Mux input 12 */
+ def_irq_handler NvicMux13_IRQHandler /* CM0+ NVIC Mux input 13 */
+ def_irq_handler NvicMux14_IRQHandler /* CM0+ NVIC Mux input 14 */
+ def_irq_handler NvicMux15_IRQHandler /* CM0+ NVIC Mux input 15 */
+ def_irq_handler NvicMux16_IRQHandler /* CM0+ NVIC Mux input 16 */
+ def_irq_handler NvicMux17_IRQHandler /* CM0+ NVIC Mux input 17 */
+ def_irq_handler NvicMux18_IRQHandler /* CM0+ NVIC Mux input 18 */
+ def_irq_handler NvicMux19_IRQHandler /* CM0+ NVIC Mux input 19 */
+ def_irq_handler NvicMux20_IRQHandler /* CM0+ NVIC Mux input 20 */
+ def_irq_handler NvicMux21_IRQHandler /* CM0+ NVIC Mux input 21 */
+ def_irq_handler NvicMux22_IRQHandler /* CM0+ NVIC Mux input 22 */
+ def_irq_handler NvicMux23_IRQHandler /* CM0+ NVIC Mux input 23 */
+ def_irq_handler NvicMux24_IRQHandler /* CM0+ NVIC Mux input 24 */
+ def_irq_handler NvicMux25_IRQHandler /* CM0+ NVIC Mux input 25 */
+ def_irq_handler NvicMux26_IRQHandler /* CM0+ NVIC Mux input 26 */
+ def_irq_handler NvicMux27_IRQHandler /* CM0+ NVIC Mux input 27 */
+ def_irq_handler NvicMux28_IRQHandler /* CM0+ NVIC Mux input 28 */
+ def_irq_handler NvicMux29_IRQHandler /* CM0+ NVIC Mux input 29 */
+ def_irq_handler NvicMux30_IRQHandler /* CM0+ NVIC Mux input 30 */
+ def_irq_handler NvicMux31_IRQHandler /* CM0+ NVIC Mux input 31 */
+
+ .end
+
+
+/* [] END OF FILE */
diff --git a/2020TPCApp1.cydsn/gcc/startup_psoc6_01_cm4.S b/2020TPCApp1.cydsn/gcc/startup_psoc6_01_cm4.S
new file mode 100644
index 0000000..b904621
--- /dev/null
+++ b/2020TPCApp1.cydsn/gcc/startup_psoc6_01_cm4.S
@@ -0,0 +1,635 @@
+/**************************************************************************//**
+ * @file startup_psoc6_01_cm4.S
+ * @brief CMSIS Core Device Startup File for
+ * ARMCM4 Device Series
+ * @version V5.00
+ * @date 02. March 2016
+ ******************************************************************************/
+/*
+ * Copyright (c) 2009-2016 ARM Limited. All rights reserved.
+ *
+ * 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
+ *
+ * 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.
+ */
+
+ /* Address of the NMI handler */
+ #define CY_NMI_HANLDER_ADDR 0x0000000D
+
+ /* The CPU VTOR register */
+ #define CY_CPU_VTOR_ADDR 0xE000ED08
+
+ /* Copy flash vectors and data section to RAM */
+ #define __STARTUP_COPY_MULTIPLE
+
+ /* Clear single BSS section */
+ #define __STARTUP_CLEAR_BSS
+
+ .syntax unified
+ .arch armv7-m
+
+ .section .stack
+ .align 3
+#ifdef __STACK_SIZE
+ .equ Stack_Size, __STACK_SIZE
+#else
+ .equ Stack_Size, 0x00001000
+#endif
+ .globl __StackTop
+ .globl __StackLimit
+__StackLimit:
+ .space Stack_Size
+ .size __StackLimit, . - __StackLimit
+__StackTop:
+ .size __StackTop, . - __StackTop
+
+ .section .heap
+ .align 3
+#ifdef __HEAP_SIZE
+ .equ Heap_Size, __HEAP_SIZE
+#else
+ .equ Heap_Size, 0x00000400
+#endif
+ .globl __HeapBase
+ .globl __HeapLimit
+__HeapBase:
+ .if Heap_Size
+ .space Heap_Size
+ .endif
+ .size __HeapBase, . - __HeapBase
+__HeapLimit:
+ .size __HeapLimit, . - __HeapLimit
+
+ .section .vectors
+ .align 2
+ .globl __Vectors
+__Vectors:
+ .long __StackTop /* Top of Stack */
+ .long Reset_Handler /* Reset Handler */
+ .long CY_NMI_HANLDER_ADDR /* NMI Handler */
+ .long HardFault_Handler /* Hard Fault Handler */
+ .long MemManage_Handler /* MPU Fault Handler */
+ .long BusFault_Handler /* Bus Fault Handler */
+ .long UsageFault_Handler /* Usage Fault Handler */
+ .long 0 /* Reserved */
+ .long 0 /* Reserved */
+ .long 0 /* Reserved */
+ .long 0 /* Reserved */
+ .long SVC_Handler /* SVCall Handler */
+ .long DebugMon_Handler /* Debug Monitor Handler */
+ .long 0 /* Reserved */
+ .long PendSV_Handler /* PendSV Handler */
+ .long SysTick_Handler /* SysTick Handler */
+
+ /* External interrupts Description */
+ .long ioss_interrupts_gpio_0_IRQHandler /* GPIO Port Interrupt #0 */
+ .long ioss_interrupts_gpio_1_IRQHandler /* GPIO Port Interrupt #1 */
+ .long ioss_interrupts_gpio_2_IRQHandler /* GPIO Port Interrupt #2 */
+ .long ioss_interrupts_gpio_3_IRQHandler /* GPIO Port Interrupt #3 */
+ .long ioss_interrupts_gpio_4_IRQHandler /* GPIO Port Interrupt #4 */
+ .long ioss_interrupts_gpio_5_IRQHandler /* GPIO Port Interrupt #5 */
+ .long ioss_interrupts_gpio_6_IRQHandler /* GPIO Port Interrupt #6 */
+ .long ioss_interrupts_gpio_7_IRQHandler /* GPIO Port Interrupt #7 */
+ .long ioss_interrupts_gpio_8_IRQHandler /* GPIO Port Interrupt #8 */
+ .long ioss_interrupts_gpio_9_IRQHandler /* GPIO Port Interrupt #9 */
+ .long ioss_interrupts_gpio_10_IRQHandler /* GPIO Port Interrupt #10 */
+ .long ioss_interrupts_gpio_11_IRQHandler /* GPIO Port Interrupt #11 */
+ .long ioss_interrupts_gpio_12_IRQHandler /* GPIO Port Interrupt #12 */
+ .long ioss_interrupts_gpio_13_IRQHandler /* GPIO Port Interrupt #13 */
+ .long ioss_interrupts_gpio_14_IRQHandler /* GPIO Port Interrupt #14 */
+ .long ioss_interrupt_gpio_IRQHandler /* GPIO All Ports */
+ .long ioss_interrupt_vdd_IRQHandler /* GPIO Supply Detect Interrupt */
+ .long lpcomp_interrupt_IRQHandler /* Low Power Comparator Interrupt */
+ .long scb_8_interrupt_IRQHandler /* Serial Communication Block #8 (DeepSleep capable) */
+ .long srss_interrupt_mcwdt_0_IRQHandler /* Multi Counter Watchdog Timer interrupt */
+ .long srss_interrupt_mcwdt_1_IRQHandler /* Multi Counter Watchdog Timer interrupt */
+ .long srss_interrupt_backup_IRQHandler /* Backup domain interrupt */
+ .long srss_interrupt_IRQHandler /* Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */
+ .long pass_interrupt_ctbs_IRQHandler /* CTBm Interrupt (all CTBms) */
+ .long bless_interrupt_IRQHandler /* Bluetooth Radio interrupt */
+ .long cpuss_interrupts_ipc_0_IRQHandler /* CPUSS Inter Process Communication Interrupt #0 */
+ .long cpuss_interrupts_ipc_1_IRQHandler /* CPUSS Inter Process Communication Interrupt #1 */
+ .long cpuss_interrupts_ipc_2_IRQHandler /* CPUSS Inter Process Communication Interrupt #2 */
+ .long cpuss_interrupts_ipc_3_IRQHandler /* CPUSS Inter Process Communication Interrupt #3 */
+ .long cpuss_interrupts_ipc_4_IRQHandler /* CPUSS Inter Process Communication Interrupt #4 */
+ .long cpuss_interrupts_ipc_5_IRQHandler /* CPUSS Inter Process Communication Interrupt #5 */
+ .long cpuss_interrupts_ipc_6_IRQHandler /* CPUSS Inter Process Communication Interrupt #6 */
+ .long cpuss_interrupts_ipc_7_IRQHandler /* CPUSS Inter Process Communication Interrupt #7 */
+ .long cpuss_interrupts_ipc_8_IRQHandler /* CPUSS Inter Process Communication Interrupt #8 */
+ .long cpuss_interrupts_ipc_9_IRQHandler /* CPUSS Inter Process Communication Interrupt #9 */
+ .long cpuss_interrupts_ipc_10_IRQHandler /* CPUSS Inter Process Communication Interrupt #10 */
+ .long cpuss_interrupts_ipc_11_IRQHandler /* CPUSS Inter Process Communication Interrupt #11 */
+ .long cpuss_interrupts_ipc_12_IRQHandler /* CPUSS Inter Process Communication Interrupt #12 */
+ .long cpuss_interrupts_ipc_13_IRQHandler /* CPUSS Inter Process Communication Interrupt #13 */
+ .long cpuss_interrupts_ipc_14_IRQHandler /* CPUSS Inter Process Communication Interrupt #14 */
+ .long cpuss_interrupts_ipc_15_IRQHandler /* CPUSS Inter Process Communication Interrupt #15 */
+ .long scb_0_interrupt_IRQHandler /* Serial Communication Block #0 */
+ .long scb_1_interrupt_IRQHandler /* Serial Communication Block #1 */
+ .long scb_2_interrupt_IRQHandler /* Serial Communication Block #2 */
+ .long scb_3_interrupt_IRQHandler /* Serial Communication Block #3 */
+ .long scb_4_interrupt_IRQHandler /* Serial Communication Block #4 */
+ .long scb_5_interrupt_IRQHandler /* Serial Communication Block #5 */
+ .long scb_6_interrupt_IRQHandler /* Serial Communication Block #6 */
+ .long scb_7_interrupt_IRQHandler /* Serial Communication Block #7 */
+ .long csd_interrupt_IRQHandler /* CSD (Capsense) interrupt */
+ .long cpuss_interrupts_dw0_0_IRQHandler /* CPUSS DataWire #0, Channel #0 */
+ .long cpuss_interrupts_dw0_1_IRQHandler /* CPUSS DataWire #0, Channel #1 */
+ .long cpuss_interrupts_dw0_2_IRQHandler /* CPUSS DataWire #0, Channel #2 */
+ .long cpuss_interrupts_dw0_3_IRQHandler /* CPUSS DataWire #0, Channel #3 */
+ .long cpuss_interrupts_dw0_4_IRQHandler /* CPUSS DataWire #0, Channel #4 */
+ .long cpuss_interrupts_dw0_5_IRQHandler /* CPUSS DataWire #0, Channel #5 */
+ .long cpuss_interrupts_dw0_6_IRQHandler /* CPUSS DataWire #0, Channel #6 */
+ .long cpuss_interrupts_dw0_7_IRQHandler /* CPUSS DataWire #0, Channel #7 */
+ .long cpuss_interrupts_dw0_8_IRQHandler /* CPUSS DataWire #0, Channel #8 */
+ .long cpuss_interrupts_dw0_9_IRQHandler /* CPUSS DataWire #0, Channel #9 */
+ .long cpuss_interrupts_dw0_10_IRQHandler /* CPUSS DataWire #0, Channel #10 */
+ .long cpuss_interrupts_dw0_11_IRQHandler /* CPUSS DataWire #0, Channel #11 */
+ .long cpuss_interrupts_dw0_12_IRQHandler /* CPUSS DataWire #0, Channel #12 */
+ .long cpuss_interrupts_dw0_13_IRQHandler /* CPUSS DataWire #0, Channel #13 */
+ .long cpuss_interrupts_dw0_14_IRQHandler /* CPUSS DataWire #0, Channel #14 */
+ .long cpuss_interrupts_dw0_15_IRQHandler /* CPUSS DataWire #0, Channel #15 */
+ .long cpuss_interrupts_dw1_0_IRQHandler /* CPUSS DataWire #1, Channel #0 */
+ .long cpuss_interrupts_dw1_1_IRQHandler /* CPUSS DataWire #1, Channel #1 */
+ .long cpuss_interrupts_dw1_2_IRQHandler /* CPUSS DataWire #1, Channel #2 */
+ .long cpuss_interrupts_dw1_3_IRQHandler /* CPUSS DataWire #1, Channel #3 */
+ .long cpuss_interrupts_dw1_4_IRQHandler /* CPUSS DataWire #1, Channel #4 */
+ .long cpuss_interrupts_dw1_5_IRQHandler /* CPUSS DataWire #1, Channel #5 */
+ .long cpuss_interrupts_dw1_6_IRQHandler /* CPUSS DataWire #1, Channel #6 */
+ .long cpuss_interrupts_dw1_7_IRQHandler /* CPUSS DataWire #1, Channel #7 */
+ .long cpuss_interrupts_dw1_8_IRQHandler /* CPUSS DataWire #1, Channel #8 */
+ .long cpuss_interrupts_dw1_9_IRQHandler /* CPUSS DataWire #1, Channel #9 */
+ .long cpuss_interrupts_dw1_10_IRQHandler /* CPUSS DataWire #1, Channel #10 */
+ .long cpuss_interrupts_dw1_11_IRQHandler /* CPUSS DataWire #1, Channel #11 */
+ .long cpuss_interrupts_dw1_12_IRQHandler /* CPUSS DataWire #1, Channel #12 */
+ .long cpuss_interrupts_dw1_13_IRQHandler /* CPUSS DataWire #1, Channel #13 */
+ .long cpuss_interrupts_dw1_14_IRQHandler /* CPUSS DataWire #1, Channel #14 */
+ .long cpuss_interrupts_dw1_15_IRQHandler /* CPUSS DataWire #1, Channel #15 */
+ .long cpuss_interrupts_fault_0_IRQHandler /* CPUSS Fault Structure Interrupt #0 */
+ .long cpuss_interrupts_fault_1_IRQHandler /* CPUSS Fault Structure Interrupt #1 */
+ .long cpuss_interrupt_crypto_IRQHandler /* CRYPTO Accelerator Interrupt */
+ .long cpuss_interrupt_fm_IRQHandler /* FLASH Macro Interrupt */
+ .long cpuss_interrupts_cm0_cti_0_IRQHandler /* CM0+ CTI #0 */
+ .long cpuss_interrupts_cm0_cti_1_IRQHandler /* CM0+ CTI #1 */
+ .long cpuss_interrupts_cm4_cti_0_IRQHandler /* CM4 CTI #0 */
+ .long cpuss_interrupts_cm4_cti_1_IRQHandler /* CM4 CTI #1 */
+ .long tcpwm_0_interrupts_0_IRQHandler /* TCPWM #0, Counter #0 */
+ .long tcpwm_0_interrupts_1_IRQHandler /* TCPWM #0, Counter #1 */
+ .long tcpwm_0_interrupts_2_IRQHandler /* TCPWM #0, Counter #2 */
+ .long tcpwm_0_interrupts_3_IRQHandler /* TCPWM #0, Counter #3 */
+ .long tcpwm_0_interrupts_4_IRQHandler /* TCPWM #0, Counter #4 */
+ .long tcpwm_0_interrupts_5_IRQHandler /* TCPWM #0, Counter #5 */
+ .long tcpwm_0_interrupts_6_IRQHandler /* TCPWM #0, Counter #6 */
+ .long tcpwm_0_interrupts_7_IRQHandler /* TCPWM #0, Counter #7 */
+ .long tcpwm_1_interrupts_0_IRQHandler /* TCPWM #1, Counter #0 */
+ .long tcpwm_1_interrupts_1_IRQHandler /* TCPWM #1, Counter #1 */
+ .long tcpwm_1_interrupts_2_IRQHandler /* TCPWM #1, Counter #2 */
+ .long tcpwm_1_interrupts_3_IRQHandler /* TCPWM #1, Counter #3 */
+ .long tcpwm_1_interrupts_4_IRQHandler /* TCPWM #1, Counter #4 */
+ .long tcpwm_1_interrupts_5_IRQHandler /* TCPWM #1, Counter #5 */
+ .long tcpwm_1_interrupts_6_IRQHandler /* TCPWM #1, Counter #6 */
+ .long tcpwm_1_interrupts_7_IRQHandler /* TCPWM #1, Counter #7 */
+ .long tcpwm_1_interrupts_8_IRQHandler /* TCPWM #1, Counter #8 */
+ .long tcpwm_1_interrupts_9_IRQHandler /* TCPWM #1, Counter #9 */
+ .long tcpwm_1_interrupts_10_IRQHandler /* TCPWM #1, Counter #10 */
+ .long tcpwm_1_interrupts_11_IRQHandler /* TCPWM #1, Counter #11 */
+ .long tcpwm_1_interrupts_12_IRQHandler /* TCPWM #1, Counter #12 */
+ .long tcpwm_1_interrupts_13_IRQHandler /* TCPWM #1, Counter #13 */
+ .long tcpwm_1_interrupts_14_IRQHandler /* TCPWM #1, Counter #14 */
+ .long tcpwm_1_interrupts_15_IRQHandler /* TCPWM #1, Counter #15 */
+ .long tcpwm_1_interrupts_16_IRQHandler /* TCPWM #1, Counter #16 */
+ .long tcpwm_1_interrupts_17_IRQHandler /* TCPWM #1, Counter #17 */
+ .long tcpwm_1_interrupts_18_IRQHandler /* TCPWM #1, Counter #18 */
+ .long tcpwm_1_interrupts_19_IRQHandler /* TCPWM #1, Counter #19 */
+ .long tcpwm_1_interrupts_20_IRQHandler /* TCPWM #1, Counter #20 */
+ .long tcpwm_1_interrupts_21_IRQHandler /* TCPWM #1, Counter #21 */
+ .long tcpwm_1_interrupts_22_IRQHandler /* TCPWM #1, Counter #22 */
+ .long tcpwm_1_interrupts_23_IRQHandler /* TCPWM #1, Counter #23 */
+ .long udb_interrupts_0_IRQHandler /* UDB Interrupt #0 */
+ .long udb_interrupts_1_IRQHandler /* UDB Interrupt #1 */
+ .long udb_interrupts_2_IRQHandler /* UDB Interrupt #2 */
+ .long udb_interrupts_3_IRQHandler /* UDB Interrupt #3 */
+ .long udb_interrupts_4_IRQHandler /* UDB Interrupt #4 */
+ .long udb_interrupts_5_IRQHandler /* UDB Interrupt #5 */
+ .long udb_interrupts_6_IRQHandler /* UDB Interrupt #6 */
+ .long udb_interrupts_7_IRQHandler /* UDB Interrupt #7 */
+ .long udb_interrupts_8_IRQHandler /* UDB Interrupt #8 */
+ .long udb_interrupts_9_IRQHandler /* UDB Interrupt #9 */
+ .long udb_interrupts_10_IRQHandler /* UDB Interrupt #10 */
+ .long udb_interrupts_11_IRQHandler /* UDB Interrupt #11 */
+ .long udb_interrupts_12_IRQHandler /* UDB Interrupt #12 */
+ .long udb_interrupts_13_IRQHandler /* UDB Interrupt #13 */
+ .long udb_interrupts_14_IRQHandler /* UDB Interrupt #14 */
+ .long udb_interrupts_15_IRQHandler /* UDB Interrupt #15 */
+ .long pass_interrupt_sar_IRQHandler /* SAR ADC interrupt */
+ .long audioss_interrupt_i2s_IRQHandler /* I2S Audio interrupt */
+ .long audioss_interrupt_pdm_IRQHandler /* PDM/PCM Audio interrupt */
+ .long profile_interrupt_IRQHandler /* Energy Profiler interrupt */
+ .long smif_interrupt_IRQHandler /* Serial Memory Interface interrupt */
+ .long usb_interrupt_hi_IRQHandler /* USB Interrupt */
+ .long usb_interrupt_med_IRQHandler /* USB Interrupt */
+ .long usb_interrupt_lo_IRQHandler /* USB Interrupt */
+ .long pass_interrupt_dacs_IRQHandler /* Consolidated interrrupt for all DACs */
+
+
+ .size __Vectors, . - __Vectors
+ .equ __VectorsSize, . - __Vectors
+
+ .section .ram_vectors
+ .align 2
+ .globl __ramVectors
+__ramVectors:
+ .space __VectorsSize
+ .size __ramVectors, . - __ramVectors
+
+
+ .text
+ .thumb
+ .thumb_func
+ .align 2
+
+ /*
+ * Device startup customization
+ *
+ * Note. The global resources are not yet initialized (for example global variables, peripherals, clocks)
+ * because this function is executed as the first instruction in the ResetHandler.
+ * The PDL is also not initialized to use the proper register offsets.
+ * The user of this function is responsible for initializing the PDL and resources before using them.
+ */
+ .weak Cy_OnResetUser
+ .func Cy_OnResetUser, Cy_OnResetUser
+ .type Cy_OnResetUser, %function
+
+Cy_OnResetUser:
+ bx lr
+ .size Cy_OnResetUser, . - Cy_OnResetUser
+ .endfunc
+
+ /* Reset handler */
+ .weak Reset_Handler
+ .type Reset_Handler, %function
+
+Reset_Handler:
+ bl Cy_OnResetUser
+ cpsid i
+
+/* Firstly it copies data from read only memory to RAM. There are two schemes
+ * to copy. One can copy more than one sections. Another can only copy
+ * one section. The former scheme needs more instructions and read-only
+ * data to implement than the latter.
+ * Macro __STARTUP_COPY_MULTIPLE is used to choose between two schemes. */
+
+#ifdef __STARTUP_COPY_MULTIPLE
+/* Multiple sections scheme.
+ *
+ * Between symbol address __copy_table_start__ and __copy_table_end__,
+ * there are array of triplets, each of which specify:
+ * offset 0: LMA of start of a section to copy from
+ * offset 4: VMA of start of a section to copy to
+ * offset 8: size of the section to copy. Must be multiply of 4
+ *
+ * All addresses must be aligned to 4 bytes boundary.
+ */
+ ldr r4, =__copy_table_start__
+ ldr r5, =__copy_table_end__
+
+.L_loop0:
+ cmp r4, r5
+ bge .L_loop0_done
+ ldr r1, [r4]
+ ldr r2, [r4, #4]
+ ldr r3, [r4, #8]
+
+.L_loop0_0:
+ subs r3, #4
+ ittt ge
+ ldrge r0, [r1, r3]
+ strge r0, [r2, r3]
+ bge .L_loop0_0
+
+ adds r4, #12
+ b .L_loop0
+
+.L_loop0_done:
+#else
+/* Single section scheme.
+ *
+ * The ranges of copy from/to are specified by following symbols
+ * __etext: LMA of start of the section to copy from. Usually end of text
+ * __data_start__: VMA of start of the section to copy to
+ * __data_end__: VMA of end of the section to copy to
+ *
+ * All addresses must be aligned to 4 bytes boundary.
+ */
+ ldr r1, =__etext
+ ldr r2, =__data_start__
+ ldr r3, =__data_end__
+
+.L_loop1:
+ cmp r2, r3
+ ittt lt
+ ldrlt r0, [r1], #4
+ strlt r0, [r2], #4
+ blt .L_loop1
+#endif /*__STARTUP_COPY_MULTIPLE */
+
+/* This part of work usually is done in C library startup code. Otherwise,
+ * define this macro to enable it in this startup.
+ *
+ * There are two schemes too. One can clear multiple BSS sections. Another
+ * can only clear one section. The former is more size expensive than the
+ * latter.
+ *
+ * Define macro __STARTUP_CLEAR_BSS_MULTIPLE to choose the former.
+ * Otherwise define macro __STARTUP_CLEAR_BSS to choose the later.
+ */
+#ifdef __STARTUP_CLEAR_BSS_MULTIPLE
+/* Multiple sections scheme.
+ *
+ * Between symbol address __copy_table_start__ and __copy_table_end__,
+ * there are array of tuples specifying:
+ * offset 0: Start of a BSS section
+ * offset 4: Size of this BSS section. Must be multiply of 4
+ */
+ ldr r3, =__zero_table_start__
+ ldr r4, =__zero_table_end__
+
+.L_loop2:
+ cmp r3, r4
+ bge .L_loop2_done
+ ldr r1, [r3]
+ ldr r2, [r3, #4]
+ movs r0, 0
+
+.L_loop2_0:
+ subs r2, #4
+ itt ge
+ strge r0, [r1, r2]
+ bge .L_loop2_0
+
+ adds r3, #8
+ b .L_loop2
+.L_loop2_done:
+#elif defined (__STARTUP_CLEAR_BSS)
+/* Single BSS section scheme.
+ *
+ * The BSS section is specified by following symbols
+ * __bss_start__: start of the BSS section.
+ * __bss_end__: end of the BSS section.
+ *
+ * Both addresses must be aligned to 4 bytes boundary.
+ */
+ ldr r1, =__bss_start__
+ ldr r2, =__bss_end__
+
+ movs r0, 0
+.L_loop3:
+ cmp r1, r2
+ itt lt
+ strlt r0, [r1], #4
+ blt .L_loop3
+#endif /* __STARTUP_CLEAR_BSS_MULTIPLE || __STARTUP_CLEAR_BSS */
+
+ /* Update Vector Table Offset Register. */
+ ldr r0, =__ramVectors
+ ldr r1, =CY_CPU_VTOR_ADDR
+ str r0, [r1]
+ dsb 0xF
+
+ /* Enable the FPU if used */
+ bl Cy_SystemInitFpuEnable
+
+#ifndef __NO_SYSTEM_INIT
+ bl SystemInit
+#endif
+
+ bl main
+
+ /* Should never get here */
+ b .
+
+ .pool
+ .size Reset_Handler, . - Reset_Handler
+
+ .align 1
+ .thumb_func
+ .weak Default_Handler
+ .type Default_Handler, %function
+
+Default_Handler:
+ b .
+ .size Default_Handler, . - Default_Handler
+
+
+ .weak Cy_SysLib_FaultHandler
+ .type Cy_SysLib_FaultHandler, %function
+
+Cy_SysLib_FaultHandler:
+ b .
+ .size Cy_SysLib_FaultHandler, . - Cy_SysLib_FaultHandler
+ .type Fault_Handler, %function
+
+Fault_Handler:
+ /* Storing LR content for Creator call stack trace */
+ push {LR}
+ movs r0, #4
+ mov r1, LR
+ tst r0, r1
+ beq .L_MSP
+ mrs r0, PSP
+ b .L_API_call
+.L_MSP:
+ mrs r0, MSP
+.L_API_call:
+ /* Compensation of stack pointer address due to pushing 4 bytes of LR */
+ adds r0, r0, #4
+ bl Cy_SysLib_FaultHandler
+ b .
+ .size Fault_Handler, . - Fault_Handler
+
+.macro def_fault_Handler fault_handler_name
+ .weak \fault_handler_name
+ .set \fault_handler_name, Fault_Handler
+ .endm
+
+/* Macro to define default handlers. Default handler
+ * will be weak symbol and just dead loops. They can be
+ * overwritten by other handlers */
+ .macro def_irq_handler handler_name
+ .weak \handler_name
+ .set \handler_name, Default_Handler
+ .endm
+
+ def_irq_handler NMI_Handler
+
+ def_fault_Handler HardFault_Handler
+ def_fault_Handler MemManage_Handler
+ def_fault_Handler BusFault_Handler
+ def_fault_Handler UsageFault_Handler
+
+ def_irq_handler SVC_Handler
+ def_irq_handler DebugMon_Handler
+ def_irq_handler PendSV_Handler
+ def_irq_handler SysTick_Handler
+
+ def_irq_handler ioss_interrupts_gpio_0_IRQHandler /* GPIO Port Interrupt #0 */
+ def_irq_handler ioss_interrupts_gpio_1_IRQHandler /* GPIO Port Interrupt #1 */
+ def_irq_handler ioss_interrupts_gpio_2_IRQHandler /* GPIO Port Interrupt #2 */
+ def_irq_handler ioss_interrupts_gpio_3_IRQHandler /* GPIO Port Interrupt #3 */
+ def_irq_handler ioss_interrupts_gpio_4_IRQHandler /* GPIO Port Interrupt #4 */
+ def_irq_handler ioss_interrupts_gpio_5_IRQHandler /* GPIO Port Interrupt #5 */
+ def_irq_handler ioss_interrupts_gpio_6_IRQHandler /* GPIO Port Interrupt #6 */
+ def_irq_handler ioss_interrupts_gpio_7_IRQHandler /* GPIO Port Interrupt #7 */
+ def_irq_handler ioss_interrupts_gpio_8_IRQHandler /* GPIO Port Interrupt #8 */
+ def_irq_handler ioss_interrupts_gpio_9_IRQHandler /* GPIO Port Interrupt #9 */
+ def_irq_handler ioss_interrupts_gpio_10_IRQHandler /* GPIO Port Interrupt #10 */
+ def_irq_handler ioss_interrupts_gpio_11_IRQHandler /* GPIO Port Interrupt #11 */
+ def_irq_handler ioss_interrupts_gpio_12_IRQHandler /* GPIO Port Interrupt #12 */
+ def_irq_handler ioss_interrupts_gpio_13_IRQHandler /* GPIO Port Interrupt #13 */
+ def_irq_handler ioss_interrupts_gpio_14_IRQHandler /* GPIO Port Interrupt #14 */
+ def_irq_handler ioss_interrupt_gpio_IRQHandler /* GPIO All Ports */
+ def_irq_handler ioss_interrupt_vdd_IRQHandler /* GPIO Supply Detect Interrupt */
+ def_irq_handler lpcomp_interrupt_IRQHandler /* Low Power Comparator Interrupt */
+ def_irq_handler scb_8_interrupt_IRQHandler /* Serial Communication Block #8 (DeepSleep capable) */
+ def_irq_handler srss_interrupt_mcwdt_0_IRQHandler /* Multi Counter Watchdog Timer interrupt */
+ def_irq_handler srss_interrupt_mcwdt_1_IRQHandler /* Multi Counter Watchdog Timer interrupt */
+ def_irq_handler srss_interrupt_backup_IRQHandler /* Backup domain interrupt */
+ def_irq_handler srss_interrupt_IRQHandler /* Other combined Interrupts for SRSS (LVD, WDT, CLKCAL) */
+ def_irq_handler pass_interrupt_ctbs_IRQHandler /* CTBm Interrupt (all CTBms) */
+ def_irq_handler bless_interrupt_IRQHandler /* Bluetooth Radio interrupt */
+ def_irq_handler cpuss_interrupts_ipc_0_IRQHandler /* CPUSS Inter Process Communication Interrupt #0 */
+ def_irq_handler cpuss_interrupts_ipc_1_IRQHandler /* CPUSS Inter Process Communication Interrupt #1 */
+ def_irq_handler cpuss_interrupts_ipc_2_IRQHandler /* CPUSS Inter Process Communication Interrupt #2 */
+ def_irq_handler cpuss_interrupts_ipc_3_IRQHandler /* CPUSS Inter Process Communication Interrupt #3 */
+ def_irq_handler cpuss_interrupts_ipc_4_IRQHandler /* CPUSS Inter Process Communication Interrupt #4 */
+ def_irq_handler cpuss_interrupts_ipc_5_IRQHandler /* CPUSS Inter Process Communication Interrupt #5 */
+ def_irq_handler cpuss_interrupts_ipc_6_IRQHandler /* CPUSS Inter Process Communication Interrupt #6 */
+ def_irq_handler cpuss_interrupts_ipc_7_IRQHandler /* CPUSS Inter Process Communication Interrupt #7 */
+ def_irq_handler cpuss_interrupts_ipc_8_IRQHandler /* CPUSS Inter Process Communication Interrupt #8 */
+ def_irq_handler cpuss_interrupts_ipc_9_IRQHandler /* CPUSS Inter Process Communication Interrupt #9 */
+ def_irq_handler cpuss_interrupts_ipc_10_IRQHandler /* CPUSS Inter Process Communication Interrupt #10 */
+ def_irq_handler cpuss_interrupts_ipc_11_IRQHandler /* CPUSS Inter Process Communication Interrupt #11 */
+ def_irq_handler cpuss_interrupts_ipc_12_IRQHandler /* CPUSS Inter Process Communication Interrupt #12 */
+ def_irq_handler cpuss_interrupts_ipc_13_IRQHandler /* CPUSS Inter Process Communication Interrupt #13 */
+ def_irq_handler cpuss_interrupts_ipc_14_IRQHandler /* CPUSS Inter Process Communication Interrupt #14 */
+ def_irq_handler cpuss_interrupts_ipc_15_IRQHandler /* CPUSS Inter Process Communication Interrupt #15 */
+ def_irq_handler scb_0_interrupt_IRQHandler /* Serial Communication Block #0 */
+ def_irq_handler scb_1_interrupt_IRQHandler /* Serial Communication Block #1 */
+ def_irq_handler scb_2_interrupt_IRQHandler /* Serial Communication Block #2 */
+ def_irq_handler scb_3_interrupt_IRQHandler /* Serial Communication Block #3 */
+ def_irq_handler scb_4_interrupt_IRQHandler /* Serial Communication Block #4 */
+ def_irq_handler scb_5_interrupt_IRQHandler /* Serial Communication Block #5 */
+ def_irq_handler scb_6_interrupt_IRQHandler /* Serial Communication Block #6 */
+ def_irq_handler scb_7_interrupt_IRQHandler /* Serial Communication Block #7 */
+ def_irq_handler csd_interrupt_IRQHandler /* CSD (Capsense) interrupt */
+ def_irq_handler cpuss_interrupts_dw0_0_IRQHandler /* CPUSS DataWire #0, Channel #0 */
+ def_irq_handler cpuss_interrupts_dw0_1_IRQHandler /* CPUSS DataWire #0, Channel #1 */
+ def_irq_handler cpuss_interrupts_dw0_2_IRQHandler /* CPUSS DataWire #0, Channel #2 */
+ def_irq_handler cpuss_interrupts_dw0_3_IRQHandler /* CPUSS DataWire #0, Channel #3 */
+ def_irq_handler cpuss_interrupts_dw0_4_IRQHandler /* CPUSS DataWire #0, Channel #4 */
+ def_irq_handler cpuss_interrupts_dw0_5_IRQHandler /* CPUSS DataWire #0, Channel #5 */
+ def_irq_handler cpuss_interrupts_dw0_6_IRQHandler /* CPUSS DataWire #0, Channel #6 */
+ def_irq_handler cpuss_interrupts_dw0_7_IRQHandler /* CPUSS DataWire #0, Channel #7 */
+ def_irq_handler cpuss_interrupts_dw0_8_IRQHandler /* CPUSS DataWire #0, Channel #8 */
+ def_irq_handler cpuss_interrupts_dw0_9_IRQHandler /* CPUSS DataWire #0, Channel #9 */
+ def_irq_handler cpuss_interrupts_dw0_10_IRQHandler /* CPUSS DataWire #0, Channel #10 */
+ def_irq_handler cpuss_interrupts_dw0_11_IRQHandler /* CPUSS DataWire #0, Channel #11 */
+ def_irq_handler cpuss_interrupts_dw0_12_IRQHandler /* CPUSS DataWire #0, Channel #12 */
+ def_irq_handler cpuss_interrupts_dw0_13_IRQHandler /* CPUSS DataWire #0, Channel #13 */
+ def_irq_handler cpuss_interrupts_dw0_14_IRQHandler /* CPUSS DataWire #0, Channel #14 */
+ def_irq_handler cpuss_interrupts_dw0_15_IRQHandler /* CPUSS DataWire #0, Channel #15 */
+ def_irq_handler cpuss_interrupts_dw1_0_IRQHandler /* CPUSS DataWire #1, Channel #0 */
+ def_irq_handler cpuss_interrupts_dw1_1_IRQHandler /* CPUSS DataWire #1, Channel #1 */
+ def_irq_handler cpuss_interrupts_dw1_2_IRQHandler /* CPUSS DataWire #1, Channel #2 */
+ def_irq_handler cpuss_interrupts_dw1_3_IRQHandler /* CPUSS DataWire #1, Channel #3 */
+ def_irq_handler cpuss_interrupts_dw1_4_IRQHandler /* CPUSS DataWire #1, Channel #4 */
+ def_irq_handler cpuss_interrupts_dw1_5_IRQHandler /* CPUSS DataWire #1, Channel #5 */
+ def_irq_handler cpuss_interrupts_dw1_6_IRQHandler /* CPUSS DataWire #1, Channel #6 */
+ def_irq_handler cpuss_interrupts_dw1_7_IRQHandler /* CPUSS DataWire #1, Channel #7 */
+ def_irq_handler cpuss_interrupts_dw1_8_IRQHandler /* CPUSS DataWire #1, Channel #8 */
+ def_irq_handler cpuss_interrupts_dw1_9_IRQHandler /* CPUSS DataWire #1, Channel #9 */
+ def_irq_handler cpuss_interrupts_dw1_10_IRQHandler /* CPUSS DataWire #1, Channel #10 */
+ def_irq_handler cpuss_interrupts_dw1_11_IRQHandler /* CPUSS DataWire #1, Channel #11 */
+ def_irq_handler cpuss_interrupts_dw1_12_IRQHandler /* CPUSS DataWire #1, Channel #12 */
+ def_irq_handler cpuss_interrupts_dw1_13_IRQHandler /* CPUSS DataWire #1, Channel #13 */
+ def_irq_handler cpuss_interrupts_dw1_14_IRQHandler /* CPUSS DataWire #1, Channel #14 */
+ def_irq_handler cpuss_interrupts_dw1_15_IRQHandler /* CPUSS DataWire #1, Channel #15 */
+ def_irq_handler cpuss_interrupts_fault_0_IRQHandler /* CPUSS Fault Structure Interrupt #0 */
+ def_irq_handler cpuss_interrupts_fault_1_IRQHandler /* CPUSS Fault Structure Interrupt #1 */
+ def_irq_handler cpuss_interrupt_crypto_IRQHandler /* CRYPTO Accelerator Interrupt */
+ def_irq_handler cpuss_interrupt_fm_IRQHandler /* FLASH Macro Interrupt */
+ def_irq_handler cpuss_interrupts_cm0_cti_0_IRQHandler /* CM0+ CTI #0 */
+ def_irq_handler cpuss_interrupts_cm0_cti_1_IRQHandler /* CM0+ CTI #1 */
+ def_irq_handler cpuss_interrupts_cm4_cti_0_IRQHandler /* CM4 CTI #0 */
+ def_irq_handler cpuss_interrupts_cm4_cti_1_IRQHandler /* CM4 CTI #1 */
+ def_irq_handler tcpwm_0_interrupts_0_IRQHandler /* TCPWM #0, Counter #0 */
+ def_irq_handler tcpwm_0_interrupts_1_IRQHandler /* TCPWM #0, Counter #1 */
+ def_irq_handler tcpwm_0_interrupts_2_IRQHandler /* TCPWM #0, Counter #2 */
+ def_irq_handler tcpwm_0_interrupts_3_IRQHandler /* TCPWM #0, Counter #3 */
+ def_irq_handler tcpwm_0_interrupts_4_IRQHandler /* TCPWM #0, Counter #4 */
+ def_irq_handler tcpwm_0_interrupts_5_IRQHandler /* TCPWM #0, Counter #5 */
+ def_irq_handler tcpwm_0_interrupts_6_IRQHandler /* TCPWM #0, Counter #6 */
+ def_irq_handler tcpwm_0_interrupts_7_IRQHandler /* TCPWM #0, Counter #7 */
+ def_irq_handler tcpwm_1_interrupts_0_IRQHandler /* TCPWM #1, Counter #0 */
+ def_irq_handler tcpwm_1_interrupts_1_IRQHandler /* TCPWM #1, Counter #1 */
+ def_irq_handler tcpwm_1_interrupts_2_IRQHandler /* TCPWM #1, Counter #2 */
+ def_irq_handler tcpwm_1_interrupts_3_IRQHandler /* TCPWM #1, Counter #3 */
+ def_irq_handler tcpwm_1_interrupts_4_IRQHandler /* TCPWM #1, Counter #4 */
+ def_irq_handler tcpwm_1_interrupts_5_IRQHandler /* TCPWM #1, Counter #5 */
+ def_irq_handler tcpwm_1_interrupts_6_IRQHandler /* TCPWM #1, Counter #6 */
+ def_irq_handler tcpwm_1_interrupts_7_IRQHandler /* TCPWM #1, Counter #7 */
+ def_irq_handler tcpwm_1_interrupts_8_IRQHandler /* TCPWM #1, Counter #8 */
+ def_irq_handler tcpwm_1_interrupts_9_IRQHandler /* TCPWM #1, Counter #9 */
+ def_irq_handler tcpwm_1_interrupts_10_IRQHandler /* TCPWM #1, Counter #10 */
+ def_irq_handler tcpwm_1_interrupts_11_IRQHandler /* TCPWM #1, Counter #11 */
+ def_irq_handler tcpwm_1_interrupts_12_IRQHandler /* TCPWM #1, Counter #12 */
+ def_irq_handler tcpwm_1_interrupts_13_IRQHandler /* TCPWM #1, Counter #13 */
+ def_irq_handler tcpwm_1_interrupts_14_IRQHandler /* TCPWM #1, Counter #14 */
+ def_irq_handler tcpwm_1_interrupts_15_IRQHandler /* TCPWM #1, Counter #15 */
+ def_irq_handler tcpwm_1_interrupts_16_IRQHandler /* TCPWM #1, Counter #16 */
+ def_irq_handler tcpwm_1_interrupts_17_IRQHandler /* TCPWM #1, Counter #17 */
+ def_irq_handler tcpwm_1_interrupts_18_IRQHandler /* TCPWM #1, Counter #18 */
+ def_irq_handler tcpwm_1_interrupts_19_IRQHandler /* TCPWM #1, Counter #19 */
+ def_irq_handler tcpwm_1_interrupts_20_IRQHandler /* TCPWM #1, Counter #20 */
+ def_irq_handler tcpwm_1_interrupts_21_IRQHandler /* TCPWM #1, Counter #21 */
+ def_irq_handler tcpwm_1_interrupts_22_IRQHandler /* TCPWM #1, Counter #22 */
+ def_irq_handler tcpwm_1_interrupts_23_IRQHandler /* TCPWM #1, Counter #23 */
+ def_irq_handler udb_interrupts_0_IRQHandler /* UDB Interrupt #0 */
+ def_irq_handler udb_interrupts_1_IRQHandler /* UDB Interrupt #1 */
+ def_irq_handler udb_interrupts_2_IRQHandler /* UDB Interrupt #2 */
+ def_irq_handler udb_interrupts_3_IRQHandler /* UDB Interrupt #3 */
+ def_irq_handler udb_interrupts_4_IRQHandler /* UDB Interrupt #4 */
+ def_irq_handler udb_interrupts_5_IRQHandler /* UDB Interrupt #5 */
+ def_irq_handler udb_interrupts_6_IRQHandler /* UDB Interrupt #6 */
+ def_irq_handler udb_interrupts_7_IRQHandler /* UDB Interrupt #7 */
+ def_irq_handler udb_interrupts_8_IRQHandler /* UDB Interrupt #8 */
+ def_irq_handler udb_interrupts_9_IRQHandler /* UDB Interrupt #9 */
+ def_irq_handler udb_interrupts_10_IRQHandler /* UDB Interrupt #10 */
+ def_irq_handler udb_interrupts_11_IRQHandler /* UDB Interrupt #11 */
+ def_irq_handler udb_interrupts_12_IRQHandler /* UDB Interrupt #12 */
+ def_irq_handler udb_interrupts_13_IRQHandler /* UDB Interrupt #13 */
+ def_irq_handler udb_interrupts_14_IRQHandler /* UDB Interrupt #14 */
+ def_irq_handler udb_interrupts_15_IRQHandler /* UDB Interrupt #15 */
+ def_irq_handler pass_interrupt_sar_IRQHandler /* SAR ADC interrupt */
+ def_irq_handler audioss_interrupt_i2s_IRQHandler /* I2S Audio interrupt */
+ def_irq_handler audioss_interrupt_pdm_IRQHandler /* PDM/PCM Audio interrupt */
+ def_irq_handler profile_interrupt_IRQHandler /* Energy Profiler interrupt */
+ def_irq_handler smif_interrupt_IRQHandler /* Serial Memory Interface interrupt */
+ def_irq_handler usb_interrupt_hi_IRQHandler /* USB Interrupt */
+ def_irq_handler usb_interrupt_med_IRQHandler /* USB Interrupt */
+ def_irq_handler usb_interrupt_lo_IRQHandler /* USB Interrupt */
+ def_irq_handler pass_interrupt_dacs_IRQHandler /* Consolidated interrrupt for all DACs */
+
+ .end
+
+
+/* [] END OF FILE */
diff --git a/2020TPCApp1.cydsn/host_main.c b/2020TPCApp1.cydsn/host_main.c
new file mode 100644
index 0000000..183ae11
--- /dev/null
+++ b/2020TPCApp1.cydsn/host_main.c
@@ -0,0 +1,505 @@
+/*******************************************************************************
+* File Name: host_main.c
+*
+* Version: 1.0
+*
+* Description:
+* BLE HID keyboard example project that supports both input and output reports
+* in boot and protocol mode. The example also demonstrates handling suspend
+* event from the central device and enters low power mode when suspended.
+*
+* References:
+* BLUETOOTH SPECIFICATION Version 5.0
+* HID Usage Tables spec ver 1.12
+*
+* Hardware Dependency:
+* CY8CKIT-062 PSoC6 BLE Pioneer Kit
+*
+******************************************************************************
+* Copyright (2019), Cypress Semiconductor Corporation.
+******************************************************************************
+* This software is owned by Cypress Semiconductor Corporation (Cypress) and is
+* protected by and subject to worldwide patent protection (United States and
+* foreign), United States copyright laws and international treaty provisions.
+* Cypress hereby grants to licensee a personal, non-exclusive, non-transferable
+* license to copy, use, modify, create derivative works of, and compile the
+* Cypress Source Code and derivative works for the sole purpose of creating
+* custom software in support of licensee product to be used only in conjunction
+* with a Cypress integrated circuit as specified in the applicable agreement.
+* Any reproduction, modification, translation, compilation, or representation of
+* this software except as specified above is prohibited without the express
+* written permission of Cypress.
+*
+* Disclaimer: CYPRESS MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH
+* REGARD TO THIS MATERIAL, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+* Cypress reserves the right to make changes without further notice to the
+* materials described herein. Cypress does not assume any liability arising out
+* of the application or use of any product or circuit described herein. Cypress
+* does not authorize its products for use as critical components in life-support
+* systems where a malfunction or failure may reasonably be expected to result in
+* significant injury to the user. The inclusion of Cypress' product in a life-
+* support systems application implies that the manufacturer assumes all risk of
+* such use and in doing so indemnifies Cypress against all charges. Use may be
+* limited by and subject to the applicable Cypress software license agreement.
+*****************************************************************************/
+
+#include "dfu/cy_dfu.h"
+#include "common.h"
+#include "user_interface.h"
+#include "ias.h"
+#include "scps.h"
+
+/* Global Variables */
+cy_stc_ble_conn_handle_t appConnHandle;
+
+static volatile uint32_t mainTimer = 1u;
+static cy_stc_ble_timer_info_t timerParam = { .timeout = ADV_TIMER_TIMEOUT };
+
+/* Private Function Prototypes */
+static void LowPowerImplementation(void);
+
+
+/*******************************************************************************
+* Function Name: AppCallBack()
+********************************************************************************
+*
+* Summary:
+* This is an event callback function to receive events from the BLE Component.
+*
+* event - the event code
+* *eventParam - the event parameters
+*
+*******************************************************************************/
+void AppCallBack(uint32_t event, void* eventParam)
+{
+ cy_en_ble_api_result_t apiResult;
+ uint8_t i;
+
+ static cy_stc_ble_gap_sec_key_info_t keyInfo =
+ {
+ .localKeysFlag = CY_BLE_GAP_SMP_INIT_ENC_KEY_DIST |
+ CY_BLE_GAP_SMP_INIT_IRK_KEY_DIST |
+ CY_BLE_GAP_SMP_INIT_CSRK_KEY_DIST,
+ .exchangeKeysFlag = CY_BLE_GAP_SMP_INIT_ENC_KEY_DIST |
+ CY_BLE_GAP_SMP_INIT_IRK_KEY_DIST |
+ CY_BLE_GAP_SMP_INIT_CSRK_KEY_DIST |
+ CY_BLE_GAP_SMP_RESP_ENC_KEY_DIST |
+ CY_BLE_GAP_SMP_RESP_IRK_KEY_DIST |
+ CY_BLE_GAP_SMP_RESP_CSRK_KEY_DIST,
+ };
+
+ switch (event)
+ {
+ /**********************************************************
+ * General Events
+ ***********************************************************/
+ case CY_BLE_EVT_STACK_ON: /* This event is received when the component is Started */
+ DBG_PRINTF("CY_BLE_EVT_STACK_ON, StartAdvertisement \r\n");
+
+ /* Enter into discoverable mode so that remote can find it. */
+ apiResult = Cy_BLE_GAPP_StartAdvertisement(CY_BLE_ADVERTISING_FAST, CY_BLE_PERIPHERAL_CONFIGURATION_0_INDEX);
+ if(apiResult != CY_BLE_SUCCESS)
+ {
+ DBG_PRINTF("Cy_BLE_GAPP_StartAdvertisement API Error: 0x%x \r\n", apiResult);
+ }
+
+ /* Generates the security keys */
+ apiResult = Cy_BLE_GAP_GenerateKeys(&keyInfo);
+ if(apiResult != CY_BLE_SUCCESS)
+ {
+ DBG_PRINTF("Cy_BLE_GAP_GenerateKeys API Error: 0x%x \r\n", apiResult);
+ }
+
+ /* Display Bond list */
+ App_DisplayBondList();
+ break;
+
+ case CY_BLE_EVT_TIMEOUT:
+ if((((cy_stc_ble_timeout_param_t *)eventParam)->reasonCode == CY_BLE_GENERIC_APP_TO) &&
+ (((cy_stc_ble_timeout_param_t *)eventParam)->timerHandle == timerParam.timerHandle))
+ {
+ /* Update LED State */
+ UpdateLedState();
+
+ /* Indicate that timer is raised to the main loop */
+ mainTimer++;
+
+ /* Press and hold the mechanical button (SW2) during 4 seconds to clear the bond list. */
+ App_RemoveDevicesFromBondListBySW2Press(SW2_PRESS_TIME_DEL_BOND_LIST);
+ }
+ break;
+
+ case CY_BLE_EVT_HARDWARE_ERROR: /* This event indicates that some internal HW error has occurred. */
+ DBG_PRINTF("CY_BLE_EVT_HARDWARE_ERROR \r\n");
+ ShowError();
+ break;
+
+ /* This event will be triggered by host stack if BLE stack is busy or not busy.
+ * Parameter corresponding to this event will be the state of BLE stack.
+ * BLE stack busy = CY_BLE_STACK_STATE_BUSY,
+ * BLE stack not busy = CY_BLE_STACK_STATE_FREE
+ */
+ case CY_BLE_EVT_STACK_BUSY_STATUS:
+ DBG_PRINTF("CY_BLE_EVT_STACK_BUSY_STATUS: %x\r\n", *(uint8_t *)eventParam);
+ break;
+
+ case CY_BLE_EVT_SET_TX_PWR_COMPLETE:
+ DBG_PRINTF("CY_BLE_EVT_SET_TX_PWR_COMPLETE \r\n");
+ break;
+
+ case CY_BLE_EVT_LE_SET_EVENT_MASK_COMPLETE:
+ DBG_PRINTF("CY_BLE_EVT_LE_SET_EVENT_MASK_COMPLETE \r\n");
+ break;
+
+ case CY_BLE_EVT_SET_DEVICE_ADDR_COMPLETE:
+ DBG_PRINTF("CY_BLE_EVT_SET_DEVICE_ADDR_COMPLETE \r\n");
+
+ /* Reads the BD device address from BLE Controller's memory */
+ apiResult = Cy_BLE_GAP_GetBdAddress();
+ if(apiResult != CY_BLE_SUCCESS)
+ {
+ DBG_PRINTF("Cy_BLE_GAP_GetBdAddress API Error: 0x%x \r\n", apiResult);
+ }
+ break;
+
+ case CY_BLE_EVT_GET_DEVICE_ADDR_COMPLETE:
+ DBG_PRINTF("CY_BLE_EVT_GET_DEVICE_ADDR_COMPLETE: ");
+ for(i = CY_BLE_GAP_BD_ADDR_SIZE; i > 0u; i--)
+ {
+ DBG_PRINTF("%2.2x", ((cy_stc_ble_bd_addrs_t *)
+ ((cy_stc_ble_events_param_generic_t *)eventParam)->eventParams)->publicBdAddr[i-1]);
+ }
+ DBG_PRINTF("\r\n");
+ break;
+
+ case CY_BLE_EVT_STACK_SHUTDOWN_COMPLETE:
+ DBG_PRINTF("CY_BLE_EVT_STACK_SHUTDOWN_COMPLETE \r\n");
+ DBG_PRINTF("Hibernate \r\n");
+ UART_DEB_WAIT_TX_COMPLETE();
+ /* Hibernate */
+ Cy_SysPm_Hibernate();
+ break;
+
+ /**********************************************************
+ * GAP Events
+ ***********************************************************/
+ case CY_BLE_EVT_GAP_AUTH_REQ:
+ /* This event is received by Peripheral and Central devices. When it is received by a peripheral,
+ * that peripheral must Call Cy_BLE_GAPP_AuthReqReply() to reply to the authentication request
+ * from Central. */
+ DBG_PRINTF("CY_BLE_EVT_GAP_AUTH_REQ: bdHandle=%x, security=%x, bonding=%x, ekeySize=%x, err=%x \r\n",
+ (*(cy_stc_ble_gap_auth_info_t *)eventParam).bdHandle, (*(cy_stc_ble_gap_auth_info_t *)eventParam).security,
+ (*(cy_stc_ble_gap_auth_info_t *)eventParam).bonding, (*(cy_stc_ble_gap_auth_info_t *)eventParam).ekeySize,
+ (*(cy_stc_ble_gap_auth_info_t *)eventParam).authErr);
+
+ if(cy_ble_configPtr->authInfo[CY_BLE_SECURITY_CONFIGURATION_0_INDEX].security ==
+ (CY_BLE_GAP_SEC_MODE_1 | CY_BLE_GAP_SEC_LEVEL_1))
+ {
+ cy_ble_configPtr->authInfo[CY_BLE_SECURITY_CONFIGURATION_0_INDEX].authErr =
+ CY_BLE_GAP_AUTH_ERROR_PAIRING_NOT_SUPPORTED;
+ }
+
+ cy_ble_configPtr->authInfo[CY_BLE_SECURITY_CONFIGURATION_0_INDEX].bdHandle =
+ ((cy_stc_ble_gap_auth_info_t *)eventParam)->bdHandle;
+
+ /* Pass security information for authentication in reply to an authentication request
+ * from the master device */
+ apiResult = Cy_BLE_GAPP_AuthReqReply(&cy_ble_configPtr->authInfo[CY_BLE_SECURITY_CONFIGURATION_0_INDEX]);
+ if(apiResult != CY_BLE_SUCCESS)
+ {
+ Cy_BLE_GAP_RemoveOldestDeviceFromBondedList();
+ apiResult = Cy_BLE_GAPP_AuthReqReply(&cy_ble_configPtr->authInfo[CY_BLE_SECURITY_CONFIGURATION_0_INDEX]);
+ if(apiResult != CY_BLE_SUCCESS)
+ {
+ DBG_PRINTF("Cy_BLE_GAPP_AuthReqReply API Error: 0x%x \r\n", apiResult);
+ }
+ }
+ break;
+
+ case CY_BLE_EVT_GAP_PASSKEY_ENTRY_REQUEST:
+ DBG_PRINTF("CY_BLE_EVT_GAP_PASSKEY_ENTRY_REQUEST\r\n");
+ DBG_PRINTF("Please enter the passkey displayed on the peer device:\r\n");
+ break;
+
+ case CY_BLE_EVT_GAP_PASSKEY_DISPLAY_REQUEST:
+ DBG_PRINTF("CY_BLE_EVT_GAP_PASSKEY_DISPLAY_REQUEST: %6.6ld\r\n", *(uint32_t *)eventParam);
+ break;
+
+ case CY_BLE_EVT_GAP_NUMERIC_COMPARISON_REQUEST:
+ DBG_PRINTF("Compare this passkey with the one displayed in your peer device and press 'y' or 'n':"
+ " %6.6lu \r\n", *(uint32_t *)eventParam);
+ break;
+
+ case CY_BLE_EVT_GAP_KEYINFO_EXCHNGE_CMPLT:
+ DBG_PRINTF("CY_BLE_EVT_GAP_KEYINFO_EXCHNGE_CMPLT \r\n");
+ break;
+
+ case CY_BLE_EVT_GAP_SMP_NEGOTIATED_AUTH_INFO:
+ DBG_PRINTF("CY_BLE_EVT_GAP_SMP_NEGOTIATED_AUTH_INFO:"
+ " bdHandle=%x, security=%x, bonding=%x, ekeySize=%x, err=%x \r\n",
+ (*(cy_stc_ble_gap_auth_info_t *)eventParam).bdHandle,
+ (*(cy_stc_ble_gap_auth_info_t *)eventParam).security,
+ (*(cy_stc_ble_gap_auth_info_t *)eventParam).bonding,
+ (*(cy_stc_ble_gap_auth_info_t *)eventParam).ekeySize,
+ (*(cy_stc_ble_gap_auth_info_t *)eventParam).authErr);
+ break;
+
+ case CY_BLE_EVT_GAP_AUTH_COMPLETE:
+ DBG_PRINTF("CY_BLE_EVT_GAP_AUTH_COMPLETE: bdHandle=%x, security=%x, bonding=%x, ekeySize=%x, err=%x \r\n",
+ (*(cy_stc_ble_gap_auth_info_t *)eventParam).bdHandle,
+ (*(cy_stc_ble_gap_auth_info_t *)eventParam).security,
+ (*(cy_stc_ble_gap_auth_info_t *)eventParam).bonding,
+ (*(cy_stc_ble_gap_auth_info_t *)eventParam).ekeySize,
+ (*(cy_stc_ble_gap_auth_info_t *)eventParam).authErr);
+ break;
+
+ case CY_BLE_EVT_GAP_AUTH_FAILED:
+ DBG_PRINTF("CY_BLE_EVT_GAP_AUTH_FAILED: bdHandle=%x, authErr=%x\r\n",
+ (*(cy_stc_ble_gap_auth_info_t *)eventParam).bdHandle,
+ (*(cy_stc_ble_gap_auth_info_t *)eventParam).authErr);
+ break;
+
+ case CY_BLE_EVT_GAPP_ADVERTISEMENT_START_STOP:
+ DBG_PRINTF("CY_BLE_EVT_GAPP_ADVERTISEMENT_START_STOP, state: %d \r\n", Cy_BLE_GetAdvertisementState());
+ if((Cy_BLE_GetAdvertisementState() == CY_BLE_ADV_STATE_STOPPED) && (Cy_BLE_GetNumOfActiveConn() == 0u))
+ {
+ /* Fast and slow advertising period complete, go to low power
+ * mode (Hibernate) and wait for an external
+ * user event to wake up the device again */
+ UpdateLedState();
+ Cy_BLE_Stop();
+ }
+ break;
+
+ case CY_BLE_EVT_GAP_DEVICE_CONNECTED:
+ DBG_PRINTF("CY_BLE_EVT_GAP_DEVICE_CONNECTED: connIntv = %d ms \r\n",
+ ((cy_stc_ble_gap_connected_param_t *)eventParam)->connIntv * 5u /4u); /* in milliseconds / 1.25ms */
+
+
+
+ /* Set security keys for new device which is not already bonded */
+ if(App_IsDeviceInBondList((*(cy_stc_ble_gap_connected_param_t *)eventParam).bdHandle) == 0u)
+ {
+ keyInfo.SecKeyParam.bdHandle = (*(cy_stc_ble_gap_connected_param_t *)eventParam).bdHandle;
+ apiResult = Cy_BLE_GAP_SetSecurityKeys(&keyInfo);
+ if(apiResult != CY_BLE_SUCCESS)
+ {
+ DBG_PRINTF("Cy_BLE_GAP_SetSecurityKeys API Error: 0x%x \r\n", apiResult);
+ }
+ }
+ break;
+
+ case CY_BLE_EVT_L2CAP_CONN_PARAM_UPDATE_RSP:
+ DBG_PRINTF("CY_BLE_EVT_L2CAP_CONN_PARAM_UPDATE_RSP, result = %d\r\n",
+ (*(cy_stc_ble_l2cap_conn_update_rsp_param_t *)eventParam).result);
+ break;
+
+ case CY_BLE_EVT_GAP_KEYS_GEN_COMPLETE:
+ DBG_PRINTF("CY_BLE_EVT_GAP_KEYS_GEN_COMPLETE \r\n");
+ keyInfo.SecKeyParam = (*(cy_stc_ble_gap_sec_key_param_t *)eventParam);
+ Cy_BLE_GAP_SetIdAddress(&cy_ble_deviceAddress);
+ break;
+
+ case CY_BLE_EVT_GAP_CONNECTION_UPDATE_COMPLETE:
+ DBG_PRINTF("CY_BLE_EVT_GAP_CONNECTION_UPDATE_COMPLETE: connIntv = %d ms \r\n", /* in milliseconds / 1.25ms */
+ ((cy_stc_ble_gap_conn_param_updated_in_controller_t *)eventParam)->connIntv * 5u /4u);
+ break;
+
+ case CY_BLE_EVT_GAP_DEVICE_DISCONNECTED:
+ DBG_PRINTF("CY_BLE_EVT_GAP_DEVICE_DISCONNECTED: bdHandle=%x, reason=%x, status=%x\r\n",
+ (*(cy_stc_ble_gap_disconnect_param_t *)eventParam).bdHandle,
+ (*(cy_stc_ble_gap_disconnect_param_t *)eventParam).reason,
+ (*(cy_stc_ble_gap_disconnect_param_t *)eventParam).status);
+
+ /* Put the device into discoverable mode so that a remote can search it. */
+ apiResult = Cy_BLE_GAPP_StartAdvertisement(CY_BLE_ADVERTISING_FAST, CY_BLE_PERIPHERAL_CONFIGURATION_0_INDEX);
+ if(apiResult != CY_BLE_SUCCESS)
+ {
+ DBG_PRINTF("StartAdvertisement API Error: 0x%x \r\n", apiResult);
+ }
+ break;
+
+ case CY_BLE_EVT_GAP_ENCRYPT_CHANGE:
+ DBG_PRINTF("CY_BLE_EVT_GAP_ENCRYPT_CHANGE: %x \r\n", *(uint8_t *)eventParam);
+ break;
+
+ /**********************************************************
+ * GATT Events
+ ***********************************************************/
+ case CY_BLE_EVT_GATT_CONNECT_IND:
+ appConnHandle = *(cy_stc_ble_conn_handle_t *)eventParam;
+ DBG_PRINTF("CY_BLE_EVT_GATT_CONNECT_IND: %x, %x \r\n",
+ (*(cy_stc_ble_conn_handle_t *)eventParam).attId, (*(cy_stc_ble_conn_handle_t *)eventParam).bdHandle);
+
+ break;
+
+ case CY_BLE_EVT_GATT_DISCONNECT_IND:
+ DBG_PRINTF("CY_BLE_EVT_GATT_DISCONNECT_IND: %x, %x \r\n",
+ (*(cy_stc_ble_conn_handle_t *)eventParam).attId, (*(cy_stc_ble_conn_handle_t *)eventParam).bdHandle);
+ break;
+
+ case CY_BLE_EVT_GATTS_XCNHG_MTU_REQ:
+ {
+ cy_stc_ble_gatt_xchg_mtu_param_t mtu =
+ {
+ .connHandle = ((cy_stc_ble_gatt_xchg_mtu_param_t *)eventParam)->connHandle
+ };
+ Cy_BLE_GATT_GetMtuSize(&mtu);
+ DBG_PRINTF("CY_BLE_EVT_GATTS_XCNHG_MTU_REQ %x, %x, final mtu= %d \r\n",
+ mtu.connHandle.attId, mtu.connHandle.bdHandle, mtu.mtu);
+ }
+ break;
+
+ case CY_BLE_EVT_GATTS_READ_CHAR_VAL_ACCESS_REQ:
+ DBG_PRINTF("CY_BLE_EVT_GATTS_READ_CHAR_VAL_ACCESS_REQ %x %x: handle: %x \r\n",
+ ((cy_stc_ble_gatts_char_val_read_req_t *)eventParam)->connHandle.attId,
+ ((cy_stc_ble_gatts_char_val_read_req_t *)eventParam)->connHandle.bdHandle,
+ ((cy_stc_ble_gatts_char_val_read_req_t *)eventParam)->attrHandle);
+ break;
+
+ case CY_BLE_EVT_GATTS_WRITE_REQ:
+ DBG_PRINTF("CY_BLE_EVT_GATTS_WRITE_REQ attr handle: %4.4x , value: ",
+ ((cy_stc_ble_gatts_write_cmd_req_param_t *)eventParam)->handleValPair.attrHandle);
+ for(i = 0; i < ((cy_stc_ble_gatts_write_cmd_req_param_t *)eventParam)->handleValPair.value.len; i++)
+ {
+ DBG_PRINTF("%2.2x ", ((cy_stc_ble_gatts_write_cmd_req_param_t *)eventParam)->handleValPair.value.val[i]);
+ }
+ DBG_PRINTF("\r\n");
+ break;
+
+ case CY_BLE_EVT_GATTS_INDICATION_DISABLED:
+ DBG_PRINTF("CY_BLE_EVT_GATTS_INDICATION_DISABLED \r\n");
+ break;
+
+ case CY_BLE_EVT_GATTS_INDICATION_ENABLED:
+ DBG_PRINTF("CY_BLE_EVT_GATTS_INDICATION_ENABLED \r\n");
+ break;
+
+ /**********************************************************
+ * Other Events
+ ***********************************************************/
+ case CY_BLE_EVT_PENDING_FLASH_WRITE:
+ /* Inform application that flash write is pending. Stack internal data
+ * structures are modified and require to be stored in Flash using
+ * Cy_BLE_StoreBondingData() */
+ DBG_PRINTF("CY_BLE_EVT_PENDING_FLASH_WRITE\r\n");
+ break;
+
+ default:
+ DBG_PRINTF("Other event: 0x%lx \r\n", event);
+ break;
+ }
+}
+
+
+/*******************************************************************************
+* Function Name: LowPowerImplementation()
+********************************************************************************
+* Summary:
+* Implements low power in the project.
+*
+* Theory:
+* The function tries to enter deep sleep as much as possible - whenever the
+* BLE is idle and the UART transmission/reception is not happening.
+*
+*******************************************************************************/
+static void LowPowerImplementation(void)
+{
+ if(UART_DEB_IS_TX_COMPLETE() != 0u)
+ {
+ /* Entering into the Deep Sleep */
+ Cy_SysPm_DeepSleep(CY_SYSPM_WAIT_FOR_INTERRUPT);
+ }
+}
+
+
+/*******************************************************************************
+* Function Name: HostMain()
+********************************************************************************
+* Summary:
+* Main function for the project.
+*
+*******************************************************************************/
+int HostMain(void)
+{
+ cy_en_ble_api_result_t apiResult;
+
+ /* Initialization the user interface: LEDs, SW2, ect. */
+ InitUserInterface();
+
+ /* Initialize Debug UART */
+ UART_START();
+ DBG_PRINTF("BLE HID Keyboard Example\r\n");
+
+ /* Start BLE component and register generic event handler */
+ apiResult = Cy_BLE_Start(AppCallBack);
+ if(apiResult != CY_BLE_SUCCESS)
+ {
+ DBG_PRINTF("Cy_BLE_Start API Error: 0x%x \r\n", apiResult);
+ }
+
+ /* Initialize BLE Services */
+ ScpsInit();
+ IasInit();
+
+
+ /***************************************************************************
+ * Main polling loop
+ ***************************************************************************/
+ while(1)
+ {
+ /* Cy_BLE_ProcessEvents() allows BLE stack to process pending events */
+ Cy_BLE_ProcessEvents();
+
+ /* To achieve low power in the device */
+ LowPowerImplementation();
+
+ /* Restart 1s timer */
+ if(mainTimer != 0u)
+ {
+ mainTimer = 0u;
+ Cy_BLE_StartTimer(&timerParam);
+ }
+
+ /* Remove devices from the bond list. Should be done when no active connections */
+ if((Cy_BLE_GetNumOfActiveConn() == 0u) && (App_IsRemoveBondListFlag() == true))
+ {
+ App_RemoveDevicesFromBondList();
+ }
+
+ #if(CY_BLE_BONDING_REQUIREMENT == CY_BLE_BONDING_YES)
+ /* Store bonding data to flash only when all debug information has been sent */
+ if(cy_ble_pendingFlashWrite != 0u)
+ {
+ apiResult = Cy_BLE_StoreBondingData();
+ DBG_PRINTF("Store bonding data, status: %x, pending: %x \r\n", apiResult, cy_ble_pendingFlashWrite);
+ }
+ #endif /* CY_BLE_BONDING_REQUIREMENT == CY_BLE_BONDING_YES */
+
+ if (alertLevel != 0u)
+ {
+ cy_stc_ble_gap_disconnect_info_t disconnectInfoParam =
+ {
+ .bdHandle = appConnHandle.bdHandle,
+ .reason = CY_BLE_HCI_ERROR_OTHER_END_TERMINATED_USER
+ };
+
+ /* Initiate disconnection from the peer device*/
+ if(Cy_BLE_GAP_Disconnect(&disconnectInfoParam) == CY_BLE_SUCCESS)
+ {
+ /* Wait for disconnection event */
+ while(Cy_BLE_GetConnectionState(appConnHandle) == CY_BLE_CONN_STATE_CONNECTED)
+ {
+ /* Process BLE events */
+ Cy_BLE_ProcessEvents();
+ }
+ }
+ /* Stop BLE component. */
+ Cy_BLE_Disable();
+ Cy_DFU_ExecuteApp(0u);
+ }
+ }
+}
+
+/* [] END OF FILE */
diff --git a/2020TPCApp1.cydsn/iar/startup_psoc6_01_cm0plus.s b/2020TPCApp1.cydsn/iar/startup_psoc6_01_cm0plus.s
new file mode 100644
index 0000000..a867384
--- /dev/null
+++ b/2020TPCApp1.cydsn/iar/startup_psoc6_01_cm0plus.s
@@ -0,0 +1,423 @@
+;/**************************************************************************//**
+; * @file startup_psoc6_01_cm0plus.s
+; * @brief CMSIS Core Device Startup File for
+; * ARMCM0plus Device Series
+; * @version V5.00
+; * @date 08. March 2016
+; ******************************************************************************/
+;/*
+; * Copyright (c) 2009-2016 ARM Limited. All rights reserved.
+; *
+; * 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
+; *
+; * 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.
+; */
+
+;
+; The modules in this file are included in the libraries, and may be replaced
+; by any user-defined modules that define the PUBLIC symbol _program_start or
+; a user defined start symbol.
+; To override the cstartup defined in the library, simply add your modified
+; version to the workbench project.
+;
+; The vector table is normally located at address 0.
+; When debugging in RAM, it can be located in RAM, aligned to at least 2^6.
+; The name "__vector_table" has special meaning for C-SPY:
+; it is where the SP start value is found, and the NVIC vector
+; table register (VTOR) is initialized to this address if != 0.
+;
+; Cortex-M version
+;
+
+ MODULE ?cstartup
+
+ ;; Forward declaration of sections.
+ SECTION CSTACK:DATA:NOROOT(3)
+ SECTION .intvec_ram:DATA:NOROOT(2)
+ SECTION .intvec:CODE:NOROOT(2)
+
+ EXTERN __iar_program_start
+ EXTERN SystemInit
+ EXTERN __iar_data_init3
+ PUBLIC __vector_table
+ PUBLIC __vector_table_0x1c
+ PUBLIC __Vectors
+ PUBLIC __Vectors_End
+ PUBLIC __Vectors_Size
+ PUBLIC __ramVectors
+
+ DATA
+
+__vector_table
+ DCD sfe(CSTACK)
+ DCD Reset_Handler
+
+ DCD 0x0000000D ; NMI_Handler is defined in ROM code
+ DCD HardFault_Handler
+ DCD 0
+ DCD 0
+ DCD 0
+__vector_table_0x1c
+ DCD 0
+ DCD 0
+ DCD 0
+ DCD 0
+ DCD SVC_Handler
+ DCD 0
+ DCD 0
+ DCD PendSV_Handler
+ DCD SysTick_Handler
+
+ ; External interrupts Power Mode Description
+ DCD NvicMux0_IRQHandler ; CM0+ NVIC Mux input 0
+ DCD NvicMux1_IRQHandler ; CM0+ NVIC Mux input 1
+ DCD NvicMux2_IRQHandler ; CM0+ NVIC Mux input 2
+ DCD NvicMux3_IRQHandler ; CM0+ NVIC Mux input 3
+ DCD NvicMux4_IRQHandler ; CM0+ NVIC Mux input 4
+ DCD NvicMux5_IRQHandler ; CM0+ NVIC Mux input 5
+ DCD NvicMux6_IRQHandler ; CM0+ NVIC Mux input 6
+ DCD NvicMux7_IRQHandler ; CM0+ NVIC Mux input 7
+ DCD NvicMux8_IRQHandler ; CM0+ NVIC Mux input 8
+ DCD NvicMux9_IRQHandler ; CM0+ NVIC Mux input 9
+ DCD NvicMux10_IRQHandler ; CM0+ NVIC Mux input 10
+ DCD NvicMux11_IRQHandler ; CM0+ NVIC Mux input 11
+ DCD NvicMux12_IRQHandler ; CM0+ NVIC Mux input 12
+ DCD NvicMux13_IRQHandler ; CM0+ NVIC Mux input 13
+ DCD NvicMux14_IRQHandler ; CM0+ NVIC Mux input 14
+ DCD NvicMux15_IRQHandler ; CM0+ NVIC Mux input 15
+ DCD NvicMux16_IRQHandler ; CM0+ NVIC Mux input 16
+ DCD NvicMux17_IRQHandler ; CM0+ NVIC Mux input 17
+ DCD NvicMux18_IRQHandler ; CM0+ NVIC Mux input 18
+ DCD NvicMux19_IRQHandler ; CM0+ NVIC Mux input 19
+ DCD NvicMux20_IRQHandler ; CM0+ NVIC Mux input 20
+ DCD NvicMux21_IRQHandler ; CM0+ NVIC Mux input 21
+ DCD NvicMux22_IRQHandler ; CM0+ NVIC Mux input 22
+ DCD NvicMux23_IRQHandler ; CM0+ NVIC Mux input 23
+ DCD NvicMux24_IRQHandler ; CM0+ NVIC Mux input 24
+ DCD NvicMux25_IRQHandler ; CM0+ NVIC Mux input 25
+ DCD NvicMux26_IRQHandler ; CM0+ NVIC Mux input 26
+ DCD NvicMux27_IRQHandler ; CM0+ NVIC Mux input 27
+ DCD NvicMux28_IRQHandler ; CM0+ NVIC Mux input 28
+ DCD NvicMux29_IRQHandler ; CM0+ NVIC Mux input 29
+ DCD NvicMux30_IRQHandler ; CM0+ NVIC Mux input 30
+ DCD NvicMux31_IRQHandler ; CM0+ NVIC Mux input 31
+
+__Vectors_End
+
+__Vectors EQU __vector_table
+__Vectors_Size EQU __Vectors_End - __Vectors
+
+ SECTION .intvec_ram:DATA:REORDER:NOROOT(2)
+__ramVectors
+ DS32 __Vectors_Size
+
+
+ THUMB
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Default handlers
+;;
+ PUBWEAK Default_Handler
+ SECTION .text:CODE:REORDER:NOROOT(2)
+Default_Handler
+ B Default_Handler
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Weak function for startup customization
+;;
+;; Note. The global resources are not yet initialized (for example global variables, peripherals, clocks)
+;; because this function is executed as the first instruction in the ResetHandler.
+;; The PDL is also not initialized to use the proper register offsets.
+;; The user of this function is responsible for initializing the PDL and resources before using them.
+;;
+ PUBWEAK Cy_OnResetUser
+ SECTION .text:CODE:REORDER:NOROOT(2)
+Cy_OnResetUser
+ BX LR
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Define strong version to return zero for
+;; __iar_program_start to skip data sections
+;; initialization.
+;;
+ PUBLIC __low_level_init
+ SECTION .text:CODE:REORDER:NOROOT(2)
+__low_level_init
+ MOVS R0, #0
+ BX LR
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Default interrupt handlers.
+;;
+ THUMB
+ PUBWEAK Reset_Handler
+ SECTION .text:CODE:REORDER:NOROOT(2)
+Reset_Handler
+
+ ; Define strong function for startup customization
+ LDR R0, =Cy_OnResetUser
+ BLX R0
+
+ ; Disable global interrupts
+ CPSID I
+
+ ; Copy vectors from ROM to RAM
+ LDR r1, =__vector_table
+ LDR r0, =__ramVectors
+ LDR r2, =__Vectors_Size
+intvec_copy
+ LDR r3, [r1]
+ STR r3, [r0]
+ ADDS r0, r0, #4
+ ADDS r1, r1, #4
+ SUBS r2, r2, #1
+ CMP r2, #0
+ BNE intvec_copy
+
+ ; Update Vector Table Offset Register
+ LDR r0, =__ramVectors
+ LDR r1, =0xE000ED08
+ STR r0, [r1]
+ dsb
+
+ ; Initialize data sections
+ LDR R0, =__iar_data_init3
+ BLX R0
+
+ LDR R0, =SystemInit
+ BLX R0
+
+ LDR R0, =__iar_program_start
+ BLX R0
+
+; Should never get here
+Cy_Main_Exited
+ B Cy_Main_Exited
+
+
+ PUBWEAK NMI_Handler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NMI_Handler
+ B NMI_Handler
+
+
+ PUBWEAK Cy_SysLib_FaultHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+Cy_SysLib_FaultHandler
+ B Cy_SysLib_FaultHandler
+
+ PUBWEAK HardFault_Handler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+HardFault_Handler
+ IMPORT Cy_SysLib_FaultHandler
+ movs r0, #4
+ mov r1, LR
+ tst r0, r1
+ beq L_MSP
+ mrs r0, PSP
+ b L_API_call
+L_MSP
+ mrs r0, MSP
+L_API_call
+ ; Storing LR content for Creator call stack trace
+ push {LR}
+ bl Cy_SysLib_FaultHandler
+
+
+ PUBWEAK SVC_Handler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+SVC_Handler
+ B SVC_Handler
+
+ PUBWEAK PendSV_Handler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+PendSV_Handler
+ B PendSV_Handler
+
+ PUBWEAK SysTick_Handler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+SysTick_Handler
+ B SysTick_Handler
+
+
+ ; External interrupts
+ PUBWEAK NvicMux0_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux0_IRQHandler
+ B NvicMux0_IRQHandler
+
+ PUBWEAK NvicMux1_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux1_IRQHandler
+ B NvicMux1_IRQHandler
+
+ PUBWEAK NvicMux2_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux2_IRQHandler
+ B NvicMux2_IRQHandler
+
+ PUBWEAK NvicMux3_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux3_IRQHandler
+ B NvicMux3_IRQHandler
+
+ PUBWEAK NvicMux4_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux4_IRQHandler
+ B NvicMux4_IRQHandler
+
+ PUBWEAK NvicMux5_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux5_IRQHandler
+ B NvicMux5_IRQHandler
+
+ PUBWEAK NvicMux6_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux6_IRQHandler
+ B NvicMux6_IRQHandler
+
+ PUBWEAK NvicMux7_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux7_IRQHandler
+ B NvicMux7_IRQHandler
+
+ PUBWEAK NvicMux8_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux8_IRQHandler
+ B NvicMux8_IRQHandler
+
+ PUBWEAK NvicMux9_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux9_IRQHandler
+ B NvicMux9_IRQHandler
+
+ PUBWEAK NvicMux10_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux10_IRQHandler
+ B NvicMux10_IRQHandler
+
+ PUBWEAK NvicMux11_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux11_IRQHandler
+ B NvicMux11_IRQHandler
+
+ PUBWEAK NvicMux12_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux12_IRQHandler
+ B NvicMux12_IRQHandler
+
+ PUBWEAK NvicMux13_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux13_IRQHandler
+ B NvicMux13_IRQHandler
+
+ PUBWEAK NvicMux14_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux14_IRQHandler
+ B NvicMux14_IRQHandler
+
+ PUBWEAK NvicMux15_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux15_IRQHandler
+ B NvicMux15_IRQHandler
+
+ PUBWEAK NvicMux16_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux16_IRQHandler
+ B NvicMux16_IRQHandler
+
+ PUBWEAK NvicMux17_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux17_IRQHandler
+ B NvicMux17_IRQHandler
+
+ PUBWEAK NvicMux18_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux18_IRQHandler
+ B NvicMux18_IRQHandler
+
+ PUBWEAK NvicMux19_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux19_IRQHandler
+ B NvicMux19_IRQHandler
+
+ PUBWEAK NvicMux20_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux20_IRQHandler
+ B NvicMux20_IRQHandler
+
+ PUBWEAK NvicMux21_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux21_IRQHandler
+ B NvicMux21_IRQHandler
+
+ PUBWEAK NvicMux22_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux22_IRQHandler
+ B NvicMux22_IRQHandler
+
+ PUBWEAK NvicMux23_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux23_IRQHandler
+ B NvicMux23_IRQHandler
+
+ PUBWEAK NvicMux24_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux24_IRQHandler
+ B NvicMux24_IRQHandler
+
+ PUBWEAK NvicMux25_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux25_IRQHandler
+ B NvicMux25_IRQHandler
+
+ PUBWEAK NvicMux26_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux26_IRQHandler
+ B NvicMux26_IRQHandler
+
+ PUBWEAK NvicMux27_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux27_IRQHandler
+ B NvicMux27_IRQHandler
+
+ PUBWEAK NvicMux28_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux28_IRQHandler
+ B NvicMux28_IRQHandler
+
+ PUBWEAK NvicMux29_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux29_IRQHandler
+ B NvicMux29_IRQHandler
+
+ PUBWEAK NvicMux30_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux30_IRQHandler
+ B NvicMux30_IRQHandler
+
+ PUBWEAK NvicMux31_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NvicMux31_IRQHandler
+ B NvicMux31_IRQHandler
+
+
+ END
+
+
+; [] END OF FILE
diff --git a/2020TPCApp1.cydsn/iar/startup_psoc6_01_cm4.s b/2020TPCApp1.cydsn/iar/startup_psoc6_01_cm4.s
new file mode 100644
index 0000000..6f1e869
--- /dev/null
+++ b/2020TPCApp1.cydsn/iar/startup_psoc6_01_cm4.s
@@ -0,0 +1,1142 @@
+;/**************************************************************************//**
+; * @file startup_psoc6_01_cm4.s
+; * @brief CMSIS Core Device Startup File for
+; * ARMCM4 Device Series
+; * @version V5.00
+; * @date 08. March 2016
+; ******************************************************************************/
+;/*
+; * Copyright (c) 2009-2016 ARM Limited. All rights reserved.
+; *
+; * 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
+; *
+; * 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.
+; */
+
+;
+; The modules in this file are included in the libraries, and may be replaced
+; by any user-defined modules that define the PUBLIC symbol _program_start or
+; a user defined start symbol.
+; To override the cstartup defined in the library, simply add your modified
+; version to the workbench project.
+;
+; The vector table is normally located at address 0.
+; When debugging in RAM, it can be located in RAM, aligned to at least 2^6.
+; The name "__vector_table" has special meaning for C-SPY:
+; it is where the SP start value is found, and the NVIC vector
+; table register (VTOR) is initialized to this address if != 0.
+;
+; Cortex-M version
+;
+
+ MODULE ?cstartup
+
+ ;; Forward declaration of sections.
+ SECTION CSTACK:DATA:NOROOT(3)
+ SECTION .intvec_ram:DATA:NOROOT(2)
+ SECTION .intvec:CODE:NOROOT(2)
+
+ EXTERN __iar_program_start
+ EXTERN SystemInit
+ EXTERN Cy_SystemInitFpuEnable
+ EXTERN __iar_data_init3
+ PUBLIC __vector_table
+ PUBLIC __vector_table_0x1c
+ PUBLIC __Vectors
+ PUBLIC __Vectors_End
+ PUBLIC __Vectors_Size
+ PUBLIC __ramVectors
+
+ DATA
+
+__vector_table
+ DCD sfe(CSTACK)
+ DCD Reset_Handler
+
+ DCD 0x0000000D ; NMI_Handler is defined in ROM code
+ DCD HardFault_Handler
+ DCD MemManage_Handler
+ DCD BusFault_Handler
+ DCD UsageFault_Handler
+__vector_table_0x1c
+ DCD 0
+ DCD 0
+ DCD 0
+ DCD 0
+ DCD SVC_Handler
+ DCD DebugMon_Handler
+ DCD 0
+ DCD PendSV_Handler
+ DCD SysTick_Handler
+
+
+ ; External interrupts Description
+ DCD ioss_interrupts_gpio_0_IRQHandler ; GPIO Port Interrupt #0
+ DCD ioss_interrupts_gpio_1_IRQHandler ; GPIO Port Interrupt #1
+ DCD ioss_interrupts_gpio_2_IRQHandler ; GPIO Port Interrupt #2
+ DCD ioss_interrupts_gpio_3_IRQHandler ; GPIO Port Interrupt #3
+ DCD ioss_interrupts_gpio_4_IRQHandler ; GPIO Port Interrupt #4
+ DCD ioss_interrupts_gpio_5_IRQHandler ; GPIO Port Interrupt #5
+ DCD ioss_interrupts_gpio_6_IRQHandler ; GPIO Port Interrupt #6
+ DCD ioss_interrupts_gpio_7_IRQHandler ; GPIO Port Interrupt #7
+ DCD ioss_interrupts_gpio_8_IRQHandler ; GPIO Port Interrupt #8
+ DCD ioss_interrupts_gpio_9_IRQHandler ; GPIO Port Interrupt #9
+ DCD ioss_interrupts_gpio_10_IRQHandler ; GPIO Port Interrupt #10
+ DCD ioss_interrupts_gpio_11_IRQHandler ; GPIO Port Interrupt #11
+ DCD ioss_interrupts_gpio_12_IRQHandler ; GPIO Port Interrupt #12
+ DCD ioss_interrupts_gpio_13_IRQHandler ; GPIO Port Interrupt #13
+ DCD ioss_interrupts_gpio_14_IRQHandler ; GPIO Port Interrupt #14
+ DCD ioss_interrupt_gpio_IRQHandler ; GPIO All Ports
+ DCD ioss_interrupt_vdd_IRQHandler ; GPIO Supply Detect Interrupt
+ DCD lpcomp_interrupt_IRQHandler ; Low Power Comparator Interrupt
+ DCD scb_8_interrupt_IRQHandler ; Serial Communication Block #8 (DeepSleep capable)
+ DCD srss_interrupt_mcwdt_0_IRQHandler ; Multi Counter Watchdog Timer interrupt
+ DCD srss_interrupt_mcwdt_1_IRQHandler ; Multi Counter Watchdog Timer interrupt
+ DCD srss_interrupt_backup_IRQHandler ; Backup domain interrupt
+ DCD srss_interrupt_IRQHandler ; Other combined Interrupts for SRSS (LVD, WDT, CLKCAL)
+ DCD pass_interrupt_ctbs_IRQHandler ; CTBm Interrupt (all CTBms)
+ DCD bless_interrupt_IRQHandler ; Bluetooth Radio interrupt
+ DCD cpuss_interrupts_ipc_0_IRQHandler ; CPUSS Inter Process Communication Interrupt #0
+ DCD cpuss_interrupts_ipc_1_IRQHandler ; CPUSS Inter Process Communication Interrupt #1
+ DCD cpuss_interrupts_ipc_2_IRQHandler ; CPUSS Inter Process Communication Interrupt #2
+ DCD cpuss_interrupts_ipc_3_IRQHandler ; CPUSS Inter Process Communication Interrupt #3
+ DCD cpuss_interrupts_ipc_4_IRQHandler ; CPUSS Inter Process Communication Interrupt #4
+ DCD cpuss_interrupts_ipc_5_IRQHandler ; CPUSS Inter Process Communication Interrupt #5
+ DCD cpuss_interrupts_ipc_6_IRQHandler ; CPUSS Inter Process Communication Interrupt #6
+ DCD cpuss_interrupts_ipc_7_IRQHandler ; CPUSS Inter Process Communication Interrupt #7
+ DCD cpuss_interrupts_ipc_8_IRQHandler ; CPUSS Inter Process Communication Interrupt #8
+ DCD cpuss_interrupts_ipc_9_IRQHandler ; CPUSS Inter Process Communication Interrupt #9
+ DCD cpuss_interrupts_ipc_10_IRQHandler ; CPUSS Inter Process Communication Interrupt #10
+ DCD cpuss_interrupts_ipc_11_IRQHandler ; CPUSS Inter Process Communication Interrupt #11
+ DCD cpuss_interrupts_ipc_12_IRQHandler ; CPUSS Inter Process Communication Interrupt #12
+ DCD cpuss_interrupts_ipc_13_IRQHandler ; CPUSS Inter Process Communication Interrupt #13
+ DCD cpuss_interrupts_ipc_14_IRQHandler ; CPUSS Inter Process Communication Interrupt #14
+ DCD cpuss_interrupts_ipc_15_IRQHandler ; CPUSS Inter Process Communication Interrupt #15
+ DCD scb_0_interrupt_IRQHandler ; Serial Communication Block #0
+ DCD scb_1_interrupt_IRQHandler ; Serial Communication Block #1
+ DCD scb_2_interrupt_IRQHandler ; Serial Communication Block #2
+ DCD scb_3_interrupt_IRQHandler ; Serial Communication Block #3
+ DCD scb_4_interrupt_IRQHandler ; Serial Communication Block #4
+ DCD scb_5_interrupt_IRQHandler ; Serial Communication Block #5
+ DCD scb_6_interrupt_IRQHandler ; Serial Communication Block #6
+ DCD scb_7_interrupt_IRQHandler ; Serial Communication Block #7
+ DCD csd_interrupt_IRQHandler ; CSD (Capsense) interrupt
+ DCD cpuss_interrupts_dw0_0_IRQHandler ; CPUSS DataWire #0, Channel #0
+ DCD cpuss_interrupts_dw0_1_IRQHandler ; CPUSS DataWire #0, Channel #1
+ DCD cpuss_interrupts_dw0_2_IRQHandler ; CPUSS DataWire #0, Channel #2
+ DCD cpuss_interrupts_dw0_3_IRQHandler ; CPUSS DataWire #0, Channel #3
+ DCD cpuss_interrupts_dw0_4_IRQHandler ; CPUSS DataWire #0, Channel #4
+ DCD cpuss_interrupts_dw0_5_IRQHandler ; CPUSS DataWire #0, Channel #5
+ DCD cpuss_interrupts_dw0_6_IRQHandler ; CPUSS DataWire #0, Channel #6
+ DCD cpuss_interrupts_dw0_7_IRQHandler ; CPUSS DataWire #0, Channel #7
+ DCD cpuss_interrupts_dw0_8_IRQHandler ; CPUSS DataWire #0, Channel #8
+ DCD cpuss_interrupts_dw0_9_IRQHandler ; CPUSS DataWire #0, Channel #9
+ DCD cpuss_interrupts_dw0_10_IRQHandler ; CPUSS DataWire #0, Channel #10
+ DCD cpuss_interrupts_dw0_11_IRQHandler ; CPUSS DataWire #0, Channel #11
+ DCD cpuss_interrupts_dw0_12_IRQHandler ; CPUSS DataWire #0, Channel #12
+ DCD cpuss_interrupts_dw0_13_IRQHandler ; CPUSS DataWire #0, Channel #13
+ DCD cpuss_interrupts_dw0_14_IRQHandler ; CPUSS DataWire #0, Channel #14
+ DCD cpuss_interrupts_dw0_15_IRQHandler ; CPUSS DataWire #0, Channel #15
+ DCD cpuss_interrupts_dw1_0_IRQHandler ; CPUSS DataWire #1, Channel #0
+ DCD cpuss_interrupts_dw1_1_IRQHandler ; CPUSS DataWire #1, Channel #1
+ DCD cpuss_interrupts_dw1_2_IRQHandler ; CPUSS DataWire #1, Channel #2
+ DCD cpuss_interrupts_dw1_3_IRQHandler ; CPUSS DataWire #1, Channel #3
+ DCD cpuss_interrupts_dw1_4_IRQHandler ; CPUSS DataWire #1, Channel #4
+ DCD cpuss_interrupts_dw1_5_IRQHandler ; CPUSS DataWire #1, Channel #5
+ DCD cpuss_interrupts_dw1_6_IRQHandler ; CPUSS DataWire #1, Channel #6
+ DCD cpuss_interrupts_dw1_7_IRQHandler ; CPUSS DataWire #1, Channel #7
+ DCD cpuss_interrupts_dw1_8_IRQHandler ; CPUSS DataWire #1, Channel #8
+ DCD cpuss_interrupts_dw1_9_IRQHandler ; CPUSS DataWire #1, Channel #9
+ DCD cpuss_interrupts_dw1_10_IRQHandler ; CPUSS DataWire #1, Channel #10
+ DCD cpuss_interrupts_dw1_11_IRQHandler ; CPUSS DataWire #1, Channel #11
+ DCD cpuss_interrupts_dw1_12_IRQHandler ; CPUSS DataWire #1, Channel #12
+ DCD cpuss_interrupts_dw1_13_IRQHandler ; CPUSS DataWire #1, Channel #13
+ DCD cpuss_interrupts_dw1_14_IRQHandler ; CPUSS DataWire #1, Channel #14
+ DCD cpuss_interrupts_dw1_15_IRQHandler ; CPUSS DataWire #1, Channel #15
+ DCD cpuss_interrupts_fault_0_IRQHandler ; CPUSS Fault Structure Interrupt #0
+ DCD cpuss_interrupts_fault_1_IRQHandler ; CPUSS Fault Structure Interrupt #1
+ DCD cpuss_interrupt_crypto_IRQHandler ; CRYPTO Accelerator Interrupt
+ DCD cpuss_interrupt_fm_IRQHandler ; FLASH Macro Interrupt
+ DCD cpuss_interrupts_cm0_cti_0_IRQHandler ; CM0+ CTI #0
+ DCD cpuss_interrupts_cm0_cti_1_IRQHandler ; CM0+ CTI #1
+ DCD cpuss_interrupts_cm4_cti_0_IRQHandler ; CM4 CTI #0
+ DCD cpuss_interrupts_cm4_cti_1_IRQHandler ; CM4 CTI #1
+ DCD tcpwm_0_interrupts_0_IRQHandler ; TCPWM #0, Counter #0
+ DCD tcpwm_0_interrupts_1_IRQHandler ; TCPWM #0, Counter #1
+ DCD tcpwm_0_interrupts_2_IRQHandler ; TCPWM #0, Counter #2
+ DCD tcpwm_0_interrupts_3_IRQHandler ; TCPWM #0, Counter #3
+ DCD tcpwm_0_interrupts_4_IRQHandler ; TCPWM #0, Counter #4
+ DCD tcpwm_0_interrupts_5_IRQHandler ; TCPWM #0, Counter #5
+ DCD tcpwm_0_interrupts_6_IRQHandler ; TCPWM #0, Counter #6
+ DCD tcpwm_0_interrupts_7_IRQHandler ; TCPWM #0, Counter #7
+ DCD tcpwm_1_interrupts_0_IRQHandler ; TCPWM #1, Counter #0
+ DCD tcpwm_1_interrupts_1_IRQHandler ; TCPWM #1, Counter #1
+ DCD tcpwm_1_interrupts_2_IRQHandler ; TCPWM #1, Counter #2
+ DCD tcpwm_1_interrupts_3_IRQHandler ; TCPWM #1, Counter #3
+ DCD tcpwm_1_interrupts_4_IRQHandler ; TCPWM #1, Counter #4
+ DCD tcpwm_1_interrupts_5_IRQHandler ; TCPWM #1, Counter #5
+ DCD tcpwm_1_interrupts_6_IRQHandler ; TCPWM #1, Counter #6
+ DCD tcpwm_1_interrupts_7_IRQHandler ; TCPWM #1, Counter #7
+ DCD tcpwm_1_interrupts_8_IRQHandler ; TCPWM #1, Counter #8
+ DCD tcpwm_1_interrupts_9_IRQHandler ; TCPWM #1, Counter #9
+ DCD tcpwm_1_interrupts_10_IRQHandler ; TCPWM #1, Counter #10
+ DCD tcpwm_1_interrupts_11_IRQHandler ; TCPWM #1, Counter #11
+ DCD tcpwm_1_interrupts_12_IRQHandler ; TCPWM #1, Counter #12
+ DCD tcpwm_1_interrupts_13_IRQHandler ; TCPWM #1, Counter #13
+ DCD tcpwm_1_interrupts_14_IRQHandler ; TCPWM #1, Counter #14
+ DCD tcpwm_1_interrupts_15_IRQHandler ; TCPWM #1, Counter #15
+ DCD tcpwm_1_interrupts_16_IRQHandler ; TCPWM #1, Counter #16
+ DCD tcpwm_1_interrupts_17_IRQHandler ; TCPWM #1, Counter #17
+ DCD tcpwm_1_interrupts_18_IRQHandler ; TCPWM #1, Counter #18
+ DCD tcpwm_1_interrupts_19_IRQHandler ; TCPWM #1, Counter #19
+ DCD tcpwm_1_interrupts_20_IRQHandler ; TCPWM #1, Counter #20
+ DCD tcpwm_1_interrupts_21_IRQHandler ; TCPWM #1, Counter #21
+ DCD tcpwm_1_interrupts_22_IRQHandler ; TCPWM #1, Counter #22
+ DCD tcpwm_1_interrupts_23_IRQHandler ; TCPWM #1, Counter #23
+ DCD udb_interrupts_0_IRQHandler ; UDB Interrupt #0
+ DCD udb_interrupts_1_IRQHandler ; UDB Interrupt #1
+ DCD udb_interrupts_2_IRQHandler ; UDB Interrupt #2
+ DCD udb_interrupts_3_IRQHandler ; UDB Interrupt #3
+ DCD udb_interrupts_4_IRQHandler ; UDB Interrupt #4
+ DCD udb_interrupts_5_IRQHandler ; UDB Interrupt #5
+ DCD udb_interrupts_6_IRQHandler ; UDB Interrupt #6
+ DCD udb_interrupts_7_IRQHandler ; UDB Interrupt #7
+ DCD udb_interrupts_8_IRQHandler ; UDB Interrupt #8
+ DCD udb_interrupts_9_IRQHandler ; UDB Interrupt #9
+ DCD udb_interrupts_10_IRQHandler ; UDB Interrupt #10
+ DCD udb_interrupts_11_IRQHandler ; UDB Interrupt #11
+ DCD udb_interrupts_12_IRQHandler ; UDB Interrupt #12
+ DCD udb_interrupts_13_IRQHandler ; UDB Interrupt #13
+ DCD udb_interrupts_14_IRQHandler ; UDB Interrupt #14
+ DCD udb_interrupts_15_IRQHandler ; UDB Interrupt #15
+ DCD pass_interrupt_sar_IRQHandler ; SAR ADC interrupt
+ DCD audioss_interrupt_i2s_IRQHandler ; I2S Audio interrupt
+ DCD audioss_interrupt_pdm_IRQHandler ; PDM/PCM Audio interrupt
+ DCD profile_interrupt_IRQHandler ; Energy Profiler interrupt
+ DCD smif_interrupt_IRQHandler ; Serial Memory Interface interrupt
+ DCD usb_interrupt_hi_IRQHandler ; USB Interrupt
+ DCD usb_interrupt_med_IRQHandler ; USB Interrupt
+ DCD usb_interrupt_lo_IRQHandler ; USB Interrupt
+ DCD pass_interrupt_dacs_IRQHandler ; Consolidated interrrupt for all DACs
+
+__Vectors_End
+
+__Vectors EQU __vector_table
+__Vectors_Size EQU __Vectors_End - __Vectors
+
+ SECTION .intvec_ram:DATA:REORDER:NOROOT(2)
+__ramVectors
+ DS32 __Vectors_Size
+
+
+ THUMB
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Default handlers
+;;
+ PUBWEAK Default_Handler
+ SECTION .text:CODE:REORDER:NOROOT(2)
+Default_Handler
+ B Default_Handler
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Weak function for startup customization
+;;
+;; Note. The global resources are not yet initialized (for example global variables, peripherals, clocks)
+;; because this function is executed as the first instruction in the ResetHandler.
+;; The PDL is also not initialized to use the proper register offsets.
+;; The user of this function is responsible for initializing the PDL and resources before using them.
+;;
+ PUBWEAK Cy_OnResetUser
+ SECTION .text:CODE:REORDER:NOROOT(2)
+Cy_OnResetUser
+ BX LR
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Define strong version to return zero for
+;; __iar_program_start to skip data sections
+;; initialization.
+;;
+ PUBLIC __low_level_init
+ SECTION .text:CODE:REORDER:NOROOT(2)
+__low_level_init
+ MOVS R0, #0
+ BX LR
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Default interrupt handlers.
+;;
+ PUBWEAK Reset_Handler
+ SECTION .text:CODE:REORDER:NOROOT(2)
+Reset_Handler
+
+ ; Define strong function for startup customization
+ LDR R0, =Cy_OnResetUser
+ BLX R0
+
+ ; Disable global interrupts
+ CPSID I
+
+ ; Copy vectors from ROM to RAM
+ LDR r1, =__vector_table
+ LDR r0, =__ramVectors
+ LDR r2, =__Vectors_Size
+intvec_copy
+ LDR r3, [r1]
+ STR r3, [r0]
+ ADDS r0, r0, #4
+ ADDS r1, r1, #4
+ SUBS r2, r2, #1
+ CMP r2, #0
+ BNE intvec_copy
+
+ ; Update Vector Table Offset Register
+ LDR r0, =__ramVectors
+ LDR r1, =0xE000ED08
+ STR r0, [r1]
+ dsb
+
+ ; Enable the FPU if used
+ LDR R0, =Cy_SystemInitFpuEnable
+ BLX R0
+
+ ; Initialize data sections
+ LDR R0, =__iar_data_init3
+ BLX R0
+
+ LDR R0, =SystemInit
+ BLX R0
+
+ LDR R0, =__iar_program_start
+ BLX R0
+
+; Should never get here
+Cy_Main_Exited
+ B Cy_Main_Exited
+
+
+ PUBWEAK NMI_Handler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+NMI_Handler
+ B NMI_Handler
+
+
+ PUBWEAK Cy_SysLib_FaultHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+Cy_SysLib_FaultHandler
+ B Cy_SysLib_FaultHandler
+
+ PUBWEAK HardFault_Wrapper
+ SECTION .text:CODE:REORDER:NOROOT(1)
+HardFault_Wrapper
+ IMPORT Cy_SysLib_FaultHandler
+ movs r0, #4
+ mov r1, LR
+ tst r0, r1
+ beq L_MSP
+ mrs r0, PSP
+ b L_API_call
+L_MSP
+ mrs r0, MSP
+L_API_call
+ ; Storing LR content for Creator call stack trace
+ push {LR}
+ bl Cy_SysLib_FaultHandler
+
+ PUBWEAK HardFault_Handler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+HardFault_Handler
+ B HardFault_Wrapper
+
+ PUBWEAK MemManage_Handler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+MemManage_Handler
+ B HardFault_Wrapper
+
+ PUBWEAK BusFault_Handler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+BusFault_Handler
+ B HardFault_Wrapper
+
+ PUBWEAK UsageFault_Handler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+UsageFault_Handler
+ B HardFault_Wrapper
+
+ PUBWEAK SVC_Handler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+SVC_Handler
+ B SVC_Handler
+
+ PUBWEAK DebugMon_Handler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+DebugMon_Handler
+ B DebugMon_Handler
+
+ PUBWEAK PendSV_Handler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+PendSV_Handler
+ B PendSV_Handler
+
+ PUBWEAK SysTick_Handler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+SysTick_Handler
+ B SysTick_Handler
+
+
+ ; External interrupts
+ PUBWEAK ioss_interrupts_gpio_0_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+ioss_interrupts_gpio_0_IRQHandler
+ B ioss_interrupts_gpio_0_IRQHandler
+
+ PUBWEAK ioss_interrupts_gpio_1_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+ioss_interrupts_gpio_1_IRQHandler
+ B ioss_interrupts_gpio_1_IRQHandler
+
+ PUBWEAK ioss_interrupts_gpio_2_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+ioss_interrupts_gpio_2_IRQHandler
+ B ioss_interrupts_gpio_2_IRQHandler
+
+ PUBWEAK ioss_interrupts_gpio_3_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+ioss_interrupts_gpio_3_IRQHandler
+ B ioss_interrupts_gpio_3_IRQHandler
+
+ PUBWEAK ioss_interrupts_gpio_4_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+ioss_interrupts_gpio_4_IRQHandler
+ B ioss_interrupts_gpio_4_IRQHandler
+
+ PUBWEAK ioss_interrupts_gpio_5_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+ioss_interrupts_gpio_5_IRQHandler
+ B ioss_interrupts_gpio_5_IRQHandler
+
+ PUBWEAK ioss_interrupts_gpio_6_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+ioss_interrupts_gpio_6_IRQHandler
+ B ioss_interrupts_gpio_6_IRQHandler
+
+ PUBWEAK ioss_interrupts_gpio_7_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+ioss_interrupts_gpio_7_IRQHandler
+ B ioss_interrupts_gpio_7_IRQHandler
+
+ PUBWEAK ioss_interrupts_gpio_8_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+ioss_interrupts_gpio_8_IRQHandler
+ B ioss_interrupts_gpio_8_IRQHandler
+
+ PUBWEAK ioss_interrupts_gpio_9_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+ioss_interrupts_gpio_9_IRQHandler
+ B ioss_interrupts_gpio_9_IRQHandler
+
+ PUBWEAK ioss_interrupts_gpio_10_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+ioss_interrupts_gpio_10_IRQHandler
+ B ioss_interrupts_gpio_10_IRQHandler
+
+ PUBWEAK ioss_interrupts_gpio_11_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+ioss_interrupts_gpio_11_IRQHandler
+ B ioss_interrupts_gpio_11_IRQHandler
+
+ PUBWEAK ioss_interrupts_gpio_12_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+ioss_interrupts_gpio_12_IRQHandler
+ B ioss_interrupts_gpio_12_IRQHandler
+
+ PUBWEAK ioss_interrupts_gpio_13_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+ioss_interrupts_gpio_13_IRQHandler
+ B ioss_interrupts_gpio_13_IRQHandler
+
+ PUBWEAK ioss_interrupts_gpio_14_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+ioss_interrupts_gpio_14_IRQHandler
+ B ioss_interrupts_gpio_14_IRQHandler
+
+ PUBWEAK ioss_interrupt_gpio_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+ioss_interrupt_gpio_IRQHandler
+ B ioss_interrupt_gpio_IRQHandler
+
+ PUBWEAK ioss_interrupt_vdd_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+ioss_interrupt_vdd_IRQHandler
+ B ioss_interrupt_vdd_IRQHandler
+
+ PUBWEAK lpcomp_interrupt_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+lpcomp_interrupt_IRQHandler
+ B lpcomp_interrupt_IRQHandler
+
+ PUBWEAK scb_8_interrupt_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+scb_8_interrupt_IRQHandler
+ B scb_8_interrupt_IRQHandler
+
+ PUBWEAK srss_interrupt_mcwdt_0_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+srss_interrupt_mcwdt_0_IRQHandler
+ B srss_interrupt_mcwdt_0_IRQHandler
+
+ PUBWEAK srss_interrupt_mcwdt_1_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+srss_interrupt_mcwdt_1_IRQHandler
+ B srss_interrupt_mcwdt_1_IRQHandler
+
+ PUBWEAK srss_interrupt_backup_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+srss_interrupt_backup_IRQHandler
+ B srss_interrupt_backup_IRQHandler
+
+ PUBWEAK srss_interrupt_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+srss_interrupt_IRQHandler
+ B srss_interrupt_IRQHandler
+
+ PUBWEAK pass_interrupt_ctbs_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+pass_interrupt_ctbs_IRQHandler
+ B pass_interrupt_ctbs_IRQHandler
+
+ PUBWEAK bless_interrupt_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+bless_interrupt_IRQHandler
+ B bless_interrupt_IRQHandler
+
+ PUBWEAK cpuss_interrupts_ipc_0_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_ipc_0_IRQHandler
+ B cpuss_interrupts_ipc_0_IRQHandler
+
+ PUBWEAK cpuss_interrupts_ipc_1_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_ipc_1_IRQHandler
+ B cpuss_interrupts_ipc_1_IRQHandler
+
+ PUBWEAK cpuss_interrupts_ipc_2_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_ipc_2_IRQHandler
+ B cpuss_interrupts_ipc_2_IRQHandler
+
+ PUBWEAK cpuss_interrupts_ipc_3_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_ipc_3_IRQHandler
+ B cpuss_interrupts_ipc_3_IRQHandler
+
+ PUBWEAK cpuss_interrupts_ipc_4_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_ipc_4_IRQHandler
+ B cpuss_interrupts_ipc_4_IRQHandler
+
+ PUBWEAK cpuss_interrupts_ipc_5_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_ipc_5_IRQHandler
+ B cpuss_interrupts_ipc_5_IRQHandler
+
+ PUBWEAK cpuss_interrupts_ipc_6_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_ipc_6_IRQHandler
+ B cpuss_interrupts_ipc_6_IRQHandler
+
+ PUBWEAK cpuss_interrupts_ipc_7_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_ipc_7_IRQHandler
+ B cpuss_interrupts_ipc_7_IRQHandler
+
+ PUBWEAK cpuss_interrupts_ipc_8_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_ipc_8_IRQHandler
+ B cpuss_interrupts_ipc_8_IRQHandler
+
+ PUBWEAK cpuss_interrupts_ipc_9_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_ipc_9_IRQHandler
+ B cpuss_interrupts_ipc_9_IRQHandler
+
+ PUBWEAK cpuss_interrupts_ipc_10_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_ipc_10_IRQHandler
+ B cpuss_interrupts_ipc_10_IRQHandler
+
+ PUBWEAK cpuss_interrupts_ipc_11_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_ipc_11_IRQHandler
+ B cpuss_interrupts_ipc_11_IRQHandler
+
+ PUBWEAK cpuss_interrupts_ipc_12_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_ipc_12_IRQHandler
+ B cpuss_interrupts_ipc_12_IRQHandler
+
+ PUBWEAK cpuss_interrupts_ipc_13_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_ipc_13_IRQHandler
+ B cpuss_interrupts_ipc_13_IRQHandler
+
+ PUBWEAK cpuss_interrupts_ipc_14_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_ipc_14_IRQHandler
+ B cpuss_interrupts_ipc_14_IRQHandler
+
+ PUBWEAK cpuss_interrupts_ipc_15_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_ipc_15_IRQHandler
+ B cpuss_interrupts_ipc_15_IRQHandler
+
+ PUBWEAK scb_0_interrupt_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+scb_0_interrupt_IRQHandler
+ B scb_0_interrupt_IRQHandler
+
+ PUBWEAK scb_1_interrupt_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+scb_1_interrupt_IRQHandler
+ B scb_1_interrupt_IRQHandler
+
+ PUBWEAK scb_2_interrupt_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+scb_2_interrupt_IRQHandler
+ B scb_2_interrupt_IRQHandler
+
+ PUBWEAK scb_3_interrupt_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+scb_3_interrupt_IRQHandler
+ B scb_3_interrupt_IRQHandler
+
+ PUBWEAK scb_4_interrupt_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+scb_4_interrupt_IRQHandler
+ B scb_4_interrupt_IRQHandler
+
+ PUBWEAK scb_5_interrupt_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+scb_5_interrupt_IRQHandler
+ B scb_5_interrupt_IRQHandler
+
+ PUBWEAK scb_6_interrupt_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+scb_6_interrupt_IRQHandler
+ B scb_6_interrupt_IRQHandler
+
+ PUBWEAK scb_7_interrupt_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+scb_7_interrupt_IRQHandler
+ B scb_7_interrupt_IRQHandler
+
+ PUBWEAK csd_interrupt_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+csd_interrupt_IRQHandler
+ B csd_interrupt_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw0_0_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw0_0_IRQHandler
+ B cpuss_interrupts_dw0_0_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw0_1_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw0_1_IRQHandler
+ B cpuss_interrupts_dw0_1_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw0_2_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw0_2_IRQHandler
+ B cpuss_interrupts_dw0_2_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw0_3_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw0_3_IRQHandler
+ B cpuss_interrupts_dw0_3_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw0_4_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw0_4_IRQHandler
+ B cpuss_interrupts_dw0_4_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw0_5_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw0_5_IRQHandler
+ B cpuss_interrupts_dw0_5_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw0_6_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw0_6_IRQHandler
+ B cpuss_interrupts_dw0_6_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw0_7_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw0_7_IRQHandler
+ B cpuss_interrupts_dw0_7_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw0_8_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw0_8_IRQHandler
+ B cpuss_interrupts_dw0_8_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw0_9_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw0_9_IRQHandler
+ B cpuss_interrupts_dw0_9_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw0_10_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw0_10_IRQHandler
+ B cpuss_interrupts_dw0_10_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw0_11_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw0_11_IRQHandler
+ B cpuss_interrupts_dw0_11_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw0_12_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw0_12_IRQHandler
+ B cpuss_interrupts_dw0_12_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw0_13_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw0_13_IRQHandler
+ B cpuss_interrupts_dw0_13_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw0_14_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw0_14_IRQHandler
+ B cpuss_interrupts_dw0_14_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw0_15_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw0_15_IRQHandler
+ B cpuss_interrupts_dw0_15_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw1_0_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw1_0_IRQHandler
+ B cpuss_interrupts_dw1_0_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw1_1_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw1_1_IRQHandler
+ B cpuss_interrupts_dw1_1_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw1_2_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw1_2_IRQHandler
+ B cpuss_interrupts_dw1_2_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw1_3_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw1_3_IRQHandler
+ B cpuss_interrupts_dw1_3_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw1_4_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw1_4_IRQHandler
+ B cpuss_interrupts_dw1_4_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw1_5_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw1_5_IRQHandler
+ B cpuss_interrupts_dw1_5_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw1_6_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw1_6_IRQHandler
+ B cpuss_interrupts_dw1_6_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw1_7_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw1_7_IRQHandler
+ B cpuss_interrupts_dw1_7_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw1_8_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw1_8_IRQHandler
+ B cpuss_interrupts_dw1_8_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw1_9_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw1_9_IRQHandler
+ B cpuss_interrupts_dw1_9_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw1_10_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw1_10_IRQHandler
+ B cpuss_interrupts_dw1_10_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw1_11_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw1_11_IRQHandler
+ B cpuss_interrupts_dw1_11_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw1_12_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw1_12_IRQHandler
+ B cpuss_interrupts_dw1_12_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw1_13_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw1_13_IRQHandler
+ B cpuss_interrupts_dw1_13_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw1_14_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw1_14_IRQHandler
+ B cpuss_interrupts_dw1_14_IRQHandler
+
+ PUBWEAK cpuss_interrupts_dw1_15_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_dw1_15_IRQHandler
+ B cpuss_interrupts_dw1_15_IRQHandler
+
+ PUBWEAK cpuss_interrupts_fault_0_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_fault_0_IRQHandler
+ B cpuss_interrupts_fault_0_IRQHandler
+
+ PUBWEAK cpuss_interrupts_fault_1_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_fault_1_IRQHandler
+ B cpuss_interrupts_fault_1_IRQHandler
+
+ PUBWEAK cpuss_interrupt_crypto_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupt_crypto_IRQHandler
+ B cpuss_interrupt_crypto_IRQHandler
+
+ PUBWEAK cpuss_interrupt_fm_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupt_fm_IRQHandler
+ B cpuss_interrupt_fm_IRQHandler
+
+ PUBWEAK cpuss_interrupts_cm0_cti_0_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_cm0_cti_0_IRQHandler
+ B cpuss_interrupts_cm0_cti_0_IRQHandler
+
+ PUBWEAK cpuss_interrupts_cm0_cti_1_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_cm0_cti_1_IRQHandler
+ B cpuss_interrupts_cm0_cti_1_IRQHandler
+
+ PUBWEAK cpuss_interrupts_cm4_cti_0_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_cm4_cti_0_IRQHandler
+ B cpuss_interrupts_cm4_cti_0_IRQHandler
+
+ PUBWEAK cpuss_interrupts_cm4_cti_1_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+cpuss_interrupts_cm4_cti_1_IRQHandler
+ B cpuss_interrupts_cm4_cti_1_IRQHandler
+
+ PUBWEAK tcpwm_0_interrupts_0_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_0_interrupts_0_IRQHandler
+ B tcpwm_0_interrupts_0_IRQHandler
+
+ PUBWEAK tcpwm_0_interrupts_1_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_0_interrupts_1_IRQHandler
+ B tcpwm_0_interrupts_1_IRQHandler
+
+ PUBWEAK tcpwm_0_interrupts_2_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_0_interrupts_2_IRQHandler
+ B tcpwm_0_interrupts_2_IRQHandler
+
+ PUBWEAK tcpwm_0_interrupts_3_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_0_interrupts_3_IRQHandler
+ B tcpwm_0_interrupts_3_IRQHandler
+
+ PUBWEAK tcpwm_0_interrupts_4_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_0_interrupts_4_IRQHandler
+ B tcpwm_0_interrupts_4_IRQHandler
+
+ PUBWEAK tcpwm_0_interrupts_5_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_0_interrupts_5_IRQHandler
+ B tcpwm_0_interrupts_5_IRQHandler
+
+ PUBWEAK tcpwm_0_interrupts_6_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_0_interrupts_6_IRQHandler
+ B tcpwm_0_interrupts_6_IRQHandler
+
+ PUBWEAK tcpwm_0_interrupts_7_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_0_interrupts_7_IRQHandler
+ B tcpwm_0_interrupts_7_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_0_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_0_IRQHandler
+ B tcpwm_1_interrupts_0_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_1_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_1_IRQHandler
+ B tcpwm_1_interrupts_1_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_2_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_2_IRQHandler
+ B tcpwm_1_interrupts_2_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_3_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_3_IRQHandler
+ B tcpwm_1_interrupts_3_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_4_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_4_IRQHandler
+ B tcpwm_1_interrupts_4_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_5_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_5_IRQHandler
+ B tcpwm_1_interrupts_5_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_6_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_6_IRQHandler
+ B tcpwm_1_interrupts_6_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_7_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_7_IRQHandler
+ B tcpwm_1_interrupts_7_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_8_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_8_IRQHandler
+ B tcpwm_1_interrupts_8_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_9_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_9_IRQHandler
+ B tcpwm_1_interrupts_9_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_10_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_10_IRQHandler
+ B tcpwm_1_interrupts_10_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_11_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_11_IRQHandler
+ B tcpwm_1_interrupts_11_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_12_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_12_IRQHandler
+ B tcpwm_1_interrupts_12_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_13_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_13_IRQHandler
+ B tcpwm_1_interrupts_13_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_14_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_14_IRQHandler
+ B tcpwm_1_interrupts_14_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_15_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_15_IRQHandler
+ B tcpwm_1_interrupts_15_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_16_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_16_IRQHandler
+ B tcpwm_1_interrupts_16_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_17_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_17_IRQHandler
+ B tcpwm_1_interrupts_17_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_18_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_18_IRQHandler
+ B tcpwm_1_interrupts_18_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_19_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_19_IRQHandler
+ B tcpwm_1_interrupts_19_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_20_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_20_IRQHandler
+ B tcpwm_1_interrupts_20_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_21_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_21_IRQHandler
+ B tcpwm_1_interrupts_21_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_22_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_22_IRQHandler
+ B tcpwm_1_interrupts_22_IRQHandler
+
+ PUBWEAK tcpwm_1_interrupts_23_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+tcpwm_1_interrupts_23_IRQHandler
+ B tcpwm_1_interrupts_23_IRQHandler
+
+ PUBWEAK udb_interrupts_0_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+udb_interrupts_0_IRQHandler
+ B udb_interrupts_0_IRQHandler
+
+ PUBWEAK udb_interrupts_1_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+udb_interrupts_1_IRQHandler
+ B udb_interrupts_1_IRQHandler
+
+ PUBWEAK udb_interrupts_2_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+udb_interrupts_2_IRQHandler
+ B udb_interrupts_2_IRQHandler
+
+ PUBWEAK udb_interrupts_3_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+udb_interrupts_3_IRQHandler
+ B udb_interrupts_3_IRQHandler
+
+ PUBWEAK udb_interrupts_4_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+udb_interrupts_4_IRQHandler
+ B udb_interrupts_4_IRQHandler
+
+ PUBWEAK udb_interrupts_5_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+udb_interrupts_5_IRQHandler
+ B udb_interrupts_5_IRQHandler
+
+ PUBWEAK udb_interrupts_6_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+udb_interrupts_6_IRQHandler
+ B udb_interrupts_6_IRQHandler
+
+ PUBWEAK udb_interrupts_7_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+udb_interrupts_7_IRQHandler
+ B udb_interrupts_7_IRQHandler
+
+ PUBWEAK udb_interrupts_8_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+udb_interrupts_8_IRQHandler
+ B udb_interrupts_8_IRQHandler
+
+ PUBWEAK udb_interrupts_9_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+udb_interrupts_9_IRQHandler
+ B udb_interrupts_9_IRQHandler
+
+ PUBWEAK udb_interrupts_10_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+udb_interrupts_10_IRQHandler
+ B udb_interrupts_10_IRQHandler
+
+ PUBWEAK udb_interrupts_11_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+udb_interrupts_11_IRQHandler
+ B udb_interrupts_11_IRQHandler
+
+ PUBWEAK udb_interrupts_12_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+udb_interrupts_12_IRQHandler
+ B udb_interrupts_12_IRQHandler
+
+ PUBWEAK udb_interrupts_13_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+udb_interrupts_13_IRQHandler
+ B udb_interrupts_13_IRQHandler
+
+ PUBWEAK udb_interrupts_14_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+udb_interrupts_14_IRQHandler
+ B udb_interrupts_14_IRQHandler
+
+ PUBWEAK udb_interrupts_15_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+udb_interrupts_15_IRQHandler
+ B udb_interrupts_15_IRQHandler
+
+ PUBWEAK pass_interrupt_sar_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+pass_interrupt_sar_IRQHandler
+ B pass_interrupt_sar_IRQHandler
+
+ PUBWEAK audioss_interrupt_i2s_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+audioss_interrupt_i2s_IRQHandler
+ B audioss_interrupt_i2s_IRQHandler
+
+ PUBWEAK audioss_interrupt_pdm_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+audioss_interrupt_pdm_IRQHandler
+ B audioss_interrupt_pdm_IRQHandler
+
+ PUBWEAK profile_interrupt_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+profile_interrupt_IRQHandler
+ B profile_interrupt_IRQHandler
+
+ PUBWEAK smif_interrupt_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+smif_interrupt_IRQHandler
+ B smif_interrupt_IRQHandler
+
+ PUBWEAK usb_interrupt_hi_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+usb_interrupt_hi_IRQHandler
+ B usb_interrupt_hi_IRQHandler
+
+ PUBWEAK usb_interrupt_med_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+usb_interrupt_med_IRQHandler
+ B usb_interrupt_med_IRQHandler
+
+ PUBWEAK usb_interrupt_lo_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+usb_interrupt_lo_IRQHandler
+ B usb_interrupt_lo_IRQHandler
+
+ PUBWEAK pass_interrupt_dacs_IRQHandler
+ SECTION .text:CODE:REORDER:NOROOT(1)
+pass_interrupt_dacs_IRQHandler
+ B pass_interrupt_dacs_IRQHandler
+
+
+ END
+
+
+; [] END OF FILE
diff --git a/2020TPCApp1.cydsn/ias.c b/2020TPCApp1.cydsn/ias.c
new file mode 100644
index 0000000..43c8e63
--- /dev/null
+++ b/2020TPCApp1.cydsn/ias.c
@@ -0,0 +1,62 @@
+/*******************************************************************************
+* File Name: ias.c
+*
+* Description:
+* This file contains Immediate Alert Service callback handler function.
+*
+********************************************************************************
+* Copyright 2017, Cypress Semiconductor Corporation. All rights reserved.
+* You may use this file only in accordance with the license, terms, conditions,
+* disclaimers, and limitations in the end user license agreement accompanying
+* the software package with which this file was provided.
+*******************************************************************************/
+
+#include MISRA Rule | +*Rule Class (Required/Advisory) | +*Rule Description | +*Description of Deviation(s) | +*
---|---|---|---|
5.6 | +*A | +*No identifier in one name space should have the same spelling +* as an identifier in another name space, with the exception of +* structure member and union member names. | +*Violated since the utility redefines the function declared in standard +* library. | +*
6.3 | +*A | +*typedefs that indicate size and signedness should be used in +* place of the basic numerical type. | +*Basic numerical types are used to match the definition of the +* function with the prototype defined in the standard library. | +*
8.8 | +*R | +*An external object or function shall be declared in one and only one file. | +*The _write is declared in the standard i/o library with +* weak attribute and is redefined in the utility. | +*
14.2 | +*R | +*All non-null statements shall either: (a) have at least one +* side-effect however executed, or (b) cause control flow to change. |
+* The unused function parameters are cast to void. This statement +* has no side-effect and is used to suppress a compiler warning. | +*
20.9 | +*R | +*The input/output library |
+* stdio.h file is included to connect the standard function +* definition with their declaration in the standard library. | +*
Version | Changes | Reason for Change |
---|---|---|
1.20 | +*Changed include path for cy_scb_uart.h to reflect the PDL source code structure | +*+* |
1.10 | +*Added STDIN support | +*+* |
1.0 | +*Initial version | +*+* |
MISRA Rule | +*Rule Class (Required/Advisory) | +*Rule Description | +*Description of Deviation(s) | +*
---|---|---|---|
2.3 | +*R | +*The character sequence // shall not be used within a comment. | +*The comments provide a useful WEB link to the documentation. | +*
Version | +*Changes | +*Reason for Change | +*
---|---|---|
2.20 | +*Moved the Cy_IPC_SystemSemaInit(), Cy_IPC_SystemPipeInit() functions implementation from IPC to Startup. | +*Changed the IPC driver configuration method from compile time to run time. | +*
2.10 | +*Added constructor attribute to SystemInit() function declaration for ARM MDK compiler. \n +* Removed $Sub$$main symbol for ARM MDK compiler. +* | +*uVision Debugger support. | +*
Updated description of the Startup behavior for Single-Core Devices. \n +* Added note about WDT disabling by SystemInit() function. +* | +*Documentation improvement. | +*|
2.0 | +*Added restoring of FLL registers to the default state in SystemInit() API for single core devices. +* Single core device support. +* | +*+* |
Added Normal Access Restrictions, Public Key, TOC part2 and TOC part2 copy to Supervisory flash linker memory regions. \n +* Renamed 'wflash' memory region to 'em_eeprom'. +* | +*Linker scripts usability improvement. | +*|
Added Cy_IPC_SystemSemaInit(), Cy_IPC_SystemPipeInit(), Cy_Flash_Init() functions call to SystemInit() API. | +*Reserved system resources for internal operations. | +*|
Added clearing and releasing of IPC structure #7 (reserved for the Deep-Sleep operations) to SystemInit() API. | +*To avoid deadlocks in case of SW or WDT reset during Deep-Sleep entering. | +*|
1.0 | +*Initial version | +*+* |
MISRA Rule | +*Rule Class (Required/Advisory) | +*Rule Description | +*Description of Deviation(s) | +*
---|---|---|---|
5.6 | +*A | +*No identifier in one name space should have the same spelling +* as an identifier in another name space, with the exception of +* structure member and union member names. | +*Violated since the utility redefines the function declared in standard +* library. | +*
6.3 | +*A | +*typedefs that indicate size and signedness should be used in +* place of the basic numerical type. | +*Basic numerical types are used to match the definition of the +* function with the prototype defined in the standard library. | +*
8.8 | +*R | +*An external object or function shall be declared in one and only one file. | +*The _write is declared in the standard i/o library with +* weak attribute and is redefined in the utility. | +*
14.2 | +*R | +*All non-null statements shall either: (a) have at least one +* side-effect however executed, or (b) cause control flow to change. |
+* The unused function parameters are cast to void. This statement +* has no side-effect and is used to suppress a compiler warning. | +*
20.9 | +*R | +*The input/output library |
+* stdio.h file is included to connect the standard function +* definition with their declaration in the standard library. | +*
Version | Changes | Reason for Change |
---|---|---|
1.20 | +*Changed include path for cy_scb_uart.h to reflect the PDL source code structure | +*+* |
1.10 | +*Added STDIN support | +*+* |
1.0 | +*Initial version | +*+* |
MISRA Rule | +*Rule Class (Required/Advisory) | +*Rule Description | +*Description of Deviation(s) | +*
---|---|---|---|
2.3 | +*R | +*The character sequence // shall not be used within a comment. | +*The comments provide a useful WEB link to the documentation. | +*
Version | +*Changes | +*Reason for Change | +*
---|---|---|
2.20 | +*Moved the Cy_IPC_SystemSemaInit(), Cy_IPC_SystemPipeInit() functions implementation from IPC to Startup. | +*Changed the IPC driver configuration method from compile time to run time. | +*
2.10 | +*Added constructor attribute to SystemInit() function declaration for ARM MDK compiler. \n +* Removed $Sub$$main symbol for ARM MDK compiler. +* | +*uVision Debugger support. | +*
Updated description of the Startup behavior for Single-Core Devices. \n +* Added note about WDT disabling by SystemInit() function. +* | +*Documentation improvement. | +*|
2.0 | +*Added restoring of FLL registers to the default state in SystemInit() API for single core devices. +* Single core device support. +* | +*+* |
Added Normal Access Restrictions, Public Key, TOC part2 and TOC part2 copy to Supervisory flash linker memory regions. \n +* Renamed 'wflash' memory region to 'em_eeprom'. +* | +*Linker scripts usability improvement. | +*|
Added Cy_IPC_SystemSemaInit(), Cy_IPC_SystemPipeInit(), Cy_Flash_Init() functions call to SystemInit() API. | +*Reserved system resources for internal operations. | +*|
Added clearing and releasing of IPC structure #7 (reserved for the Deep-Sleep operations) to SystemInit() API. | +*To avoid deadlocks in case of SW or WDT reset during Deep-Sleep entering. | +*|
1.0 | +*Initial version | +*+* |