;************************************************ ;* ;* Part one of the system initialization code, contains low-level ;* initialization, plain thumb variant. ;* ;* Copyright 2013 IAR Systems. All rights reserved. ;* ;* $Revision: 64600 $ ;* ;******************* Version History ********************************************** ; ; V6, May, 16,2013 TYS:a) Add XMC1300_SCU.inc ; ;********************************************************************************** ; ; 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. ; ; Cortex-M version ; MODULE ?cstartup #ifdef DAVE_CE #include "XMC1300_SCU.inc" #include "Device_Data.h" #else #define CLKVAL1_SSW 0x00000100 #define CLKVAL2_SSW 0x00000000 #endif ;; Forward declaration of sections. SECTION CSTACK:DATA:NOROOT(3) SECTION .intvec:CODE:NOROOT(2) EXTERN __iar_program_start PUBLIC __vector_table DATA __vector_table DCD sfe(CSTACK) DCD Reset_Handler ; Reset Handler DCD 0 ; 0x8 DCD 0 ; 0xC DCD CLKVAL1_SSW ; 0x10 CLK_VAL1 - (CLKCR default) DCD CLKVAL2_SSW ; 0x14 CLK_VAL2 - (CGATCLR0 default) SECTION .vect_table:CODE:ROOT(2) THUMB LDR R0,=HardFault_Handler BX R0 LDR R0,=Undef_Handler BX R0 LDR R0,=Undef_Handler BX R0 LDR R0,=Undef_Handler BX R0 LDR R0,=Undef_Handler BX R0 LDR R0,=Undef_Handler BX R0 LDR R0,=Undef_Handler BX R0 LDR R0,=Undef_Handler BX R0 LDR R0,=SVC_Handler BX R0 LDR R0,=Undef_Handler BX R0 LDR R0,=Undef_Handler BX R0 LDR R0,=PendSV_Handler BX R0 LDR R0,=SysTick_Handler BX R0 ; External Interrupts LDR R0,=SCU_0_IRQHandler ; Handler name for SR SCU_0 BX R0 LDR R0,=SCU_1_IRQHandler ; Handler name for SR SCU_1 BX R0 LDR R0,=SCU_2_IRQHandler ; Handler name for SR SCU_2 BX R0 LDR R0,=ERU0_0_IRQHandler ; Handler name for SR ERU0_0 BX R0 LDR R0,=ERU0_1_IRQHandler ; Handler name for SR ERU0_1 BX R0 LDR R0,=ERU0_2_IRQHandler ; Handler name for SR ERU0_2 BX R0 LDR R0,=ERU0_3_IRQHandler ; Handler name for SR ERU0_3 BX R0 LDR R0,=MATH0_0_IRQHandler ; Handler name for SR MATH0_0 BX R0 LDR R0,=Undef_Handler ; Not Available BX R0 LDR R0,=USIC0_0_IRQHandler ; Handler name for SR USIC0_0 BX R0 LDR R0,=USIC0_1_IRQHandler ; Handler name for SR USIC0_1 BX R0 LDR R0,=USIC0_2_IRQHandler ; Handler name for SR USIC0_2 BX R0 LDR R0,=USIC0_3_IRQHandler ; Handler name for SR USIC0_3 BX R0 LDR R0,=USIC0_4_IRQHandler ; Handler name for SR USIC0_4 BX R0 LDR R0,=USIC0_5_IRQHandler ; Handler name for SR USIC0_5 BX R0 LDR R0,=VADC0_C0_0_IRQHandler ; Handler name for SR VADC0_C0_0 BX R0 LDR R0,=VADC0_C0_1_IRQHandler ; Handler name for SR VADC0_C0_1 BX R0 LDR R0,=VADC0_G0_0_IRQHandler ; Handler name for SR VADC0_G0_0 BX R0 LDR R0,=VADC0_G0_1_IRQHandler ; Handler name for SR VADC0_G0_1 BX R0 LDR R0,=VADC0_G1_0_IRQHandler ; Handler name for SR VADC0_G1_0 BX R0 LDR R0,=VADC0_G1_1_IRQHandler ; Handler name for SR VADC0_G1_1 BX R0 LDR R0,=CCU40_0_IRQHandler ; Handler name for SR CCU40_0 BX R0 LDR R0,=CCU40_1_IRQHandler ; Handler name for SR CCU40_1 BX R0 LDR R0,=CCU40_2_IRQHandler ; Handler name for SR CCU40_2 BX R0 LDR R0,=CCU40_3_IRQHandler ; Handler name for SR CCU40_3 BX R0 LDR R0,=CCU80_0_IRQHandler ; Handler name for SR CCU80_0 BX R0 LDR R0,=CCU80_1_IRQHandler ; Handler name for SR CCU80_1 BX R0 LDR R0,=POSIF0_0_IRQHandler ; Handler name for SR POSIF0_0 BX R0 LDR R0,=POSIF0_1_IRQHandler ; Handler name for SR POSIF0_1 BX R0 LDR R0,=Undef_Handler ; Not Available BX R0 LDR R0,=Undef_Handler ; Not Available BX R0 LDR R0,=BCCU0_0_IRQHandler ; Handler name for SR BCCU0_0 BX R0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; Default interrupt handlers. ;; EXTERN SystemInit SECTION .text:CODE:NOROOT(2) THUMB PUBLIC Reset_Handler SECTION .text:CODE:REORDER(2) Reset_Handler LDR R0, =SystemInit BLX R0 LDR R0, =SystemInit_DAVE3 BLX R0 LDR R0, =__iar_program_start BX R0 PUBWEAK Undef_Handler SECTION .text:CODE:REORDER:NOROOT(1) Undef_Handler B Undef_Handler PUBWEAK HardFault_Handler SECTION .text:CODE:REORDER:NOROOT(1) HardFault_Handler B HardFault_Handler 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 PUBWEAK SCU_0_IRQHandler SECTION .text:CODE:REORDER:NOROOT(1) SCU_0_IRQHandler B SCU_0_IRQHandler PUBWEAK SCU_1_IRQHandler SECTION .text:CODE:REORDER:NOROOT(1) SCU_1_IRQHandler B SCU_1_IRQHandler PUBWEAK SCU_2_IRQHandler SECTION .text:CODE:REORDER:NOROOT(1) SCU_2_IRQHandler B SCU_2_IRQHandler PUBWEAK ERU0_0_IRQHandler SECTION .text:CODE:REORDER:NOROOT(1) ERU0_0_IRQHandler B ERU0_0_IRQHandler PUBWEAK ERU0_1_IRQHandler SECTION .text:CODE:REORDER:NOROOT(1) ERU0_1_IRQHandler B ERU0_1_IRQHandler PUBWEAK ERU0_2_IRQHandler SECTION .text:CODE:REORDER:NOROOT(1) ERU0_2_IRQHandler B ERU0_2_IRQHandler PUBWEAK ERU0_3_IRQHandler SECTION .text:CODE:REORDER:NOROOT(1) ERU0_3_IRQHandler B ERU0_3_IRQHandler PUBWEAK MATH0_0_IRQHandler SECTION .text:CODE:REORDER:NOROOT(1) MATH0_0_IRQHandler B MATH0_0_IRQHandler PUBWEAK USIC0_0_IRQHandler SECTION .text:CODE:REORDER:NOROOT(1) USIC0_0_IRQHandler B USIC0_0_IRQHandler PUBWEAK USIC0_1_IRQHandler SECTION .text:CODE:REORDER:NOROOT(1) USIC0_1_IRQHandler B USIC0_1_IRQHandler PUBWEAK USIC0_2_IRQHandler SECTION .text:CODE:REORDER:NOROOT(1) USIC0_2_IRQHandler B USIC0_2_IRQHandler PUBWEAK USIC0_3_IRQHandler SECTION .text:CODE:REORDER:NOROOT(1) USIC0_3_IRQHandler B USIC0_3_IRQHandler PUBWEAK USIC0_4_IRQHandler SECTION .text:CODE:REORDER:NOROOT(1) USIC0_4_IRQHandler B USIC0_4_IRQHandler PUBWEAK USIC0_5_IRQHandler SECTION .text:CODE:REORDER:NOROOT(1) USIC0_5_IRQHandler B USIC0_5_IRQHandler PUBWEAK VADC0_C0_0_IRQHandler SECTION .text:CODE:REORDER:NOROOT(1) VADC0_C0_0_IRQHandler B VADC0_C0_0_IRQHandler PUBWEAK VADC0_C0_1_IRQHandler SECTION .text:CODE:REORDER:NOROOT(1) VADC0_C0_1_IRQHandler B VADC0_C0_1_IRQHandler PUBWEAK VADC0_G0_0_IRQHandler SECTION .text:CODE:REORDER:NOROOT(1) VADC0_G0_0_IRQHandler B VADC0_G0_0_IRQHandler PUBWEAK VADC0_G0_1_IRQHandler SECTION .text:CODE:REORDER:NOROOT(1) VADC0_G0_1_IRQHandler B VADC0_G0_1_IRQHandler PUBWEAK VADC0_G1_0_IRQHandler SECTION .text:CODE:REORDER:NOROOT(1) VADC0_G1_0_IRQHandler B VADC0_G1_0_IRQHandler PUBWEAK VADC0_G1_1_IRQHandler SECTION .text:CODE:REORDER:NOROOT(1) VADC0_G1_1_IRQHandler B VADC0_G1_1_IRQHandler PUBWEAK CCU40_0_IRQHandler SECTION .text:CODE:REORDER:NOROOT(1) CCU40_0_IRQHandler B CCU40_0_IRQHandler PUBWEAK CCU40_1_IRQHandler SECTION .text:CODE:REORDER:NOROOT(1) CCU40_1_IRQHandler B CCU40_1_IRQHandler PUBWEAK CCU40_2_IRQHandler SECTION .text:CODE:REORDER:NOROOT(1) CCU40_2_IRQHandler B CCU40_2_IRQHandler PUBWEAK CCU40_3_IRQHandler SECTION .text:CODE:REORDER:NOROOT(1) CCU40_3_IRQHandler B CCU40_3_IRQHandler PUBWEAK CCU80_0_IRQHandler SECTION .text:CODE:REORDER:NOROOT(1) CCU80_0_IRQHandler B CCU80_0_IRQHandler PUBWEAK CCU80_1_IRQHandler SECTION .text:CODE:REORDER:NOROOT(1) CCU80_1_IRQHandler B CCU80_1_IRQHandler PUBWEAK POSIF0_0_IRQHandler SECTION .text:CODE:REORDER:NOROOT(1) POSIF0_0_IRQHandler B POSIF0_0_IRQHandler PUBWEAK POSIF0_1_IRQHandler SECTION .text:CODE:REORDER:NOROOT(1) POSIF0_1_IRQHandler B POSIF0_1_IRQHandler PUBWEAK BCCU0_0_IRQHandler SECTION .text:CODE:REORDER:NOROOT(1) BCCU0_0_IRQHandler B BCCU0_0_IRQHandler ; Definition of the default weak SystemInit_DAVE3 function ;If DAVE3 requires an extended SystemInit it will create its own version of ;SystemInit_DAVE3 which overrides this weak definition. Example includes ;setting up of external memory interfaces. PUBWEAK SystemInit_DAVE3 SECTION .text:CODE:REORDER:NOROOT(2) SystemInit_DAVE3 NOP BX LR ;Decision function queried by CMSIS startup for Clock tree setup ======== */ ;In the absence of DAVE code engine, CMSIS SystemInit() must perform clock tree setup. ;This decision routine defined here will always return TRUE. ;When overridden by a definition defined in DAVE code engine, this routine ;returns FALSE indicating that the code engine has performed the clock setup PUBWEAK AllowClkInitByStartup SECTION .text:CODE:REORDER:NOROOT(2) AllowClkInitByStartup MOVS R0,#1 BX LR END