1 ;**********************************************************************************
\r
3 ;* Part one of the system initialization code, contains low-level
\r
4 ;* initialization, plain thumb variant.
\r
6 ;* Copyright 2013 IAR Systems. All rights reserved.
\r
8 ;* $Revision: 64600 $
\r
10 ;******************* Version History **********************************************
\r
11 ; V5, Feb, 6, 2013 TYS:a) Add DAVE3_CE defination,
\r
12 ; b) Remove Math,ADC,CCU8,POSIF,LEDTS,BCCU0 interrupt
\r
13 ; c) Change AllowPLLInitByStartup to AllowClkInitByStartup
\r
14 ; V6, May, 16,2013 TYS:a) Add XMC1100_SCU.inc
\r
16 ;**********************************************************************************
\r
18 ; The modules in this file are included in the libraries, and may be replaced
\r
19 ; by any user-defined modules that define the PUBLIC symbol _program_start or
\r
20 ; a user defined start symbol.
\r
21 ; To override the cstartup defined in the library, simply add your modified
\r
22 ; version to the workbench project.
\r
30 #include "XMC1100_SCU.inc"
\r
31 #include "Device_Data.h"
\r
33 #define CLKVAL1_SSW 0x00000100
\r
34 #define CLKVAL2_SSW 0x00000000
\r
37 ;; Forward declaration of sections.
\r
38 SECTION CSTACK:DATA:NOROOT(3)
\r
39 SECTION .intvec:CODE:NOROOT(2)
\r
41 EXTERN __iar_program_start
\r
42 PUBLIC __vector_table
\r
47 DCD Reset_Handler ; Reset Handler
\r
50 DCD CLKVAL1_SSW ; 0x10 CLK_VAL1 - (CLKCR default)
\r
51 DCD CLKVAL2_SSW ; 0x14 CLK_VAL2 - (CGATCLR0 default)
\r
53 SECTION .vect_table:CODE:ROOT(2)
\r
55 LDR R0,=HardFault_Handler
\r
57 LDR R0,=Undef_Handler
\r
59 LDR R0,=Undef_Handler
\r
61 LDR R0,=Undef_Handler
\r
63 LDR R0,=Undef_Handler
\r
65 LDR R0,=Undef_Handler
\r
67 LDR R0,=Undef_Handler
\r
69 LDR R0,=Undef_Handler
\r
73 LDR R0,=Undef_Handler
\r
75 LDR R0,=Undef_Handler
\r
77 LDR R0,=PendSV_Handler
\r
79 LDR R0,=SysTick_Handler
\r
82 ; External Interrupts
\r
83 LDR R0,=SCU_0_IRQHandler ; Handler name for SR SCU_0
\r
85 LDR R0,=SCU_1_IRQHandler ; Handler name for SR SCU_1
\r
87 LDR R0,=SCU_2_IRQHandler ; Handler name for SR SCU_2
\r
89 LDR R0,=ERU0_0_IRQHandler ; Handler name for SR ERU0_0
\r
91 LDR R0,=ERU0_1_IRQHandler ; Handler name for SR ERU0_1
\r
93 LDR R0,=ERU0_2_IRQHandler ; Handler name for SR ERU0_2
\r
95 LDR R0,=ERU0_3_IRQHandler ; Handler name for SR ERU0_3
\r
97 LDR R0,=Undef_Handler ; Not Available
\r
99 LDR R0,=Undef_Handler ; Not Available
\r
101 LDR R0,=USIC0_0_IRQHandler ; Handler name for SR USIC0_0
\r
103 LDR R0,=USIC0_1_IRQHandler ; Handler name for SR USIC0_1
\r
105 LDR R0,=USIC0_2_IRQHandler ; Handler name for SR USIC0_2
\r
107 LDR R0,=USIC0_3_IRQHandler ; Handler name for SR USIC0_3
\r
109 LDR R0,=USIC0_4_IRQHandler ; Handler name for SR USIC0_4
\r
111 LDR R0,=USIC0_5_IRQHandler ; Handler name for SR USIC0_5
\r
113 LDR R0,=VADC0_C0_0_IRQHandler ; Handler name for SR VADC0_C0_0
\r
115 LDR R0,=VADC0_C0_1_IRQHandler ; Handler name for SR VADC0_C0_1
\r
117 LDR R0,=Undef_Handler ; Not Available
\r
119 LDR R0,=Undef_Handler ; Not Available
\r
121 LDR R0,=Undef_Handler ; Not Available
\r
123 LDR R0,=Undef_Handler ; Not Available
\r
125 LDR R0,=CCU40_0_IRQHandler ; Handler name for SR CCU40_0
\r
127 LDR R0,=CCU40_1_IRQHandler ; Handler name for SR CCU40_1
\r
129 LDR R0,=CCU40_2_IRQHandler ; Handler name for SR CCU40_2
\r
131 LDR R0,=CCU40_3_IRQHandler ; Handler name for SR CCU40_3
\r
133 LDR R0,=Undef_Handler ; Not Available
\r
135 LDR R0,=Undef_Handler ; Not Available
\r
137 LDR R0,=Undef_Handler ; Not Available
\r
139 LDR R0,=Undef_Handler ; Not Available
\r
141 LDR R0,=Undef_Handler ; Not Available
\r
143 LDR R0,=Undef_Handler ; Not Available
\r
145 LDR R0,=Undef_Handler ; Not Available
\r
148 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
\r
150 ;; Default interrupt handlers.
\r
153 SECTION .text:CODE:NOROOT(2)
\r
157 PUBWEAK Reset_Handler
\r
158 SECTION .text:CODE:REORDER(2)
\r
160 LDR R0, =SystemInit
\r
162 LDR R0, =SystemInit_DAVE3
\r
164 LDR R0, =__iar_program_start
\r
167 PUBWEAK Undef_Handler
\r
168 SECTION .text:CODE:REORDER:NOROOT(1)
\r
173 PUBWEAK HardFault_Handler
\r
174 SECTION .text:CODE:REORDER:NOROOT(1)
\r
176 B HardFault_Handler
\r
179 PUBWEAK SVC_Handler
\r
180 SECTION .text:CODE:REORDER:NOROOT(1)
\r
185 PUBWEAK PendSV_Handler
\r
186 SECTION .text:CODE:REORDER:NOROOT(1)
\r
191 PUBWEAK SysTick_Handler
\r
192 SECTION .text:CODE:REORDER:NOROOT(1)
\r
197 PUBWEAK SCU_0_IRQHandler
\r
198 SECTION .text:CODE:REORDER:NOROOT(1)
\r
202 PUBWEAK SCU_1_IRQHandler
\r
203 SECTION .text:CODE:REORDER:NOROOT(1)
\r
208 PUBWEAK SCU_2_IRQHandler
\r
209 SECTION .text:CODE:REORDER:NOROOT(1)
\r
214 PUBWEAK ERU0_0_IRQHandler
\r
215 SECTION .text:CODE:REORDER:NOROOT(1)
\r
217 B ERU0_0_IRQHandler
\r
220 PUBWEAK ERU0_1_IRQHandler
\r
221 SECTION .text:CODE:REORDER:NOROOT(1)
\r
223 B ERU0_1_IRQHandler
\r
226 PUBWEAK ERU0_2_IRQHandler
\r
227 SECTION .text:CODE:REORDER:NOROOT(1)
\r
229 B ERU0_2_IRQHandler
\r
232 PUBWEAK ERU0_3_IRQHandler
\r
233 SECTION .text:CODE:REORDER:NOROOT(1)
\r
235 B ERU0_3_IRQHandler
\r
238 PUBWEAK USIC0_0_IRQHandler
\r
239 SECTION .text:CODE:REORDER:NOROOT(1)
\r
241 B USIC0_0_IRQHandler
\r
244 PUBWEAK USIC0_1_IRQHandler
\r
245 SECTION .text:CODE:REORDER:NOROOT(1)
\r
247 B USIC0_1_IRQHandler
\r
250 PUBWEAK USIC0_2_IRQHandler
\r
251 SECTION .text:CODE:REORDER:NOROOT(1)
\r
253 B USIC0_2_IRQHandler
\r
256 PUBWEAK USIC0_3_IRQHandler
\r
257 SECTION .text:CODE:REORDER:NOROOT(1)
\r
259 B USIC0_3_IRQHandler
\r
262 PUBWEAK USIC0_4_IRQHandler
\r
263 SECTION .text:CODE:REORDER:NOROOT(1)
\r
265 B USIC0_4_IRQHandler
\r
268 PUBWEAK USIC0_5_IRQHandler
\r
269 SECTION .text:CODE:REORDER:NOROOT(1)
\r
271 B USIC0_5_IRQHandler
\r
274 PUBWEAK VADC0_C0_0_IRQHandler
\r
275 SECTION .text:CODE:REORDER:NOROOT(1)
\r
276 VADC0_C0_0_IRQHandler
\r
277 B VADC0_C0_0_IRQHandler
\r
280 PUBWEAK VADC0_C0_1_IRQHandler
\r
281 SECTION .text:CODE:REORDER:NOROOT(1)
\r
282 VADC0_C0_1_IRQHandler
\r
283 B VADC0_C0_1_IRQHandler
\r
286 PUBWEAK CCU40_0_IRQHandler
\r
287 SECTION .text:CODE:REORDER:NOROOT(1)
\r
289 B CCU40_0_IRQHandler
\r
292 PUBWEAK CCU40_1_IRQHandler
\r
293 SECTION .text:CODE:REORDER:NOROOT(1)
\r
295 B CCU40_1_IRQHandler
\r
298 PUBWEAK CCU40_2_IRQHandler
\r
299 SECTION .text:CODE:REORDER:NOROOT(1)
\r
301 B CCU40_2_IRQHandler
\r
304 PUBWEAK CCU40_3_IRQHandler
\r
305 SECTION .text:CODE:REORDER:NOROOT(1)
\r
307 B CCU40_3_IRQHandler
\r
310 ; Definition of the default weak SystemInit_DAVE3 function
\r
311 ;If DAVE3 requires an extended SystemInit it will create its own version of
\r
312 ;SystemInit_DAVE3 which overrides this weak definition. Example includes
\r
313 ;setting up of external memory interfaces.
\r
315 PUBWEAK SystemInit_DAVE3
\r
316 SECTION .text:CODE:REORDER:NOROOT(2)
\r
321 ;Decision function queried by CMSIS startup for Clock tree setup ======== */
\r
322 ;In the absence of DAVE code engine, CMSIS SystemInit() must perform clock tree setup.
\r
323 ;This decision routine defined here will always return TRUE.
\r
324 ;When overridden by a definition defined in DAVE code engine, this routine
\r
325 ;returns FALSE indicating that the code engine has performed the clock setup
\r
327 PUBWEAK AllowClkInitByStartup
\r
328 SECTION .text:CODE:REORDER:NOROOT(2)
\r
329 AllowClkInitByStartup
\r