| ;************************************************ | |
| ;* | |
| ;* 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 | |
| PUBWEAK 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 |