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
12 ; V6, May, 16,2013 TYS:a) Add XMC1200_SCU.inc
\r
14 ;**********************************************************************************
\r
16 ; The modules in this file are included in the libraries, and may be replaced
\r
17 ; by any user-defined modules that define the PUBLIC symbol _program_start or
\r
18 ; a user defined start symbol.
\r
19 ; To override the cstartup defined in the library, simply add your modified
\r
20 ; version to the workbench project.
\r
27 #include "XMC1200_SCU.inc"
\r
28 #include "Device_Data.h"
\r
30 #define CLKVAL1_SSW 0x00000100
\r
31 #define CLKVAL2_SSW 0x00000000
\r
34 ;; Forward declaration of sections.
\r
35 SECTION CSTACK:DATA:NOROOT(3)
\r
36 SECTION .intvec:CODE:NOROOT(2)
\r
38 EXTERN __iar_program_start
\r
39 PUBLIC __vector_table
\r
44 DCD Reset_Handler ; Reset Handler
\r
47 DCD CLKVAL1_SSW ; 0x10 CLK_VAL1 - (CLKCR default)
\r
48 DCD CLKVAL2_SSW ; 0x14 CLK_VAL2 - (CGATCLR0 default)
\r
50 SECTION .vect_table:CODE:ROOT(2)
\r
52 LDR R0,=HardFault_Handler
\r
54 LDR R0,=Undef_Handler
\r
56 LDR R0,=Undef_Handler
\r
58 LDR R0,=Undef_Handler
\r
60 LDR R0,=Undef_Handler
\r
62 LDR R0,=Undef_Handler
\r
64 LDR R0,=Undef_Handler
\r
66 LDR R0,=Undef_Handler
\r
70 LDR R0,=Undef_Handler
\r
72 LDR R0,=Undef_Handler
\r
74 LDR R0,=PendSV_Handler
\r
76 LDR R0,=SysTick_Handler
\r
79 ; External Interrupts
\r
80 LDR R0,=SCU_0_IRQHandler ; Handler name for SR SCU_0
\r
82 LDR R0,=SCU_1_IRQHandler ; Handler name for SR SCU_1
\r
84 LDR R0,=SCU_2_IRQHandler ; Handler name for SR SCU_2
\r
86 LDR R0,=ERU0_0_IRQHandler ; Handler name for SR ERU0_0
\r
88 LDR R0,=ERU0_1_IRQHandler ; Handler name for SR ERU0_1
\r
90 LDR R0,=ERU0_2_IRQHandler ; Handler name for SR ERU0_2
\r
92 LDR R0,=ERU0_3_IRQHandler ; Handler name for SR ERU0_3
\r
94 LDR R0,=Undef_Handler ; Not Available
\r
96 LDR R0,=Undef_Handler ; Not Available
\r
98 LDR R0,=USIC0_0_IRQHandler ; Handler name for SR USIC0_0
\r
100 LDR R0,=USIC0_1_IRQHandler ; Handler name for SR USIC0_1
\r
102 LDR R0,=USIC0_2_IRQHandler ; Handler name for SR USIC0_2
\r
104 LDR R0,=USIC0_3_IRQHandler ; Handler name for SR USIC0_3
\r
106 LDR R0,=USIC0_4_IRQHandler ; Handler name for SR USIC0_4
\r
108 LDR R0,=USIC0_5_IRQHandler ; Handler name for SR USIC0_5
\r
110 LDR R0,=VADC0_C0_0_IRQHandler ; Handler name for SR VADC0_C0_0
\r
112 LDR R0,=VADC0_C0_1_IRQHandler ; Handler name for SR VADC0_C0_1
\r
114 LDR R0,=VADC0_G0_0_IRQHandler ; Handler name for SR VADC0_G0_0
\r
116 LDR R0,=VADC0_G0_1_IRQHandler ; Handler name for SR VADC0_G0_1
\r
118 LDR R0,=VADC0_G1_0_IRQHandler ; Handler name for SR VADC0_G1_0
\r
120 LDR R0,=VADC0_G1_1_IRQHandler ; Handler name for SR VADC0_G1_1
\r
122 LDR R0,=CCU40_0_IRQHandler ; Handler name for SR CCU40_0
\r
124 LDR R0,=CCU40_1_IRQHandler ; Handler name for SR CCU40_1
\r
126 LDR R0,=CCU40_2_IRQHandler ; Handler name for SR CCU40_2
\r
128 LDR R0,=CCU40_3_IRQHandler ; Handler name for SR CCU40_3
\r
130 LDR R0,=Undef_Handler ; Not Available
\r
132 LDR R0,=Undef_Handler ; Not Available
\r
134 LDR R0,=Undef_Handler ; Not Available
\r
136 LDR R0,=Undef_Handler ; Not Available
\r
138 LDR R0,=LEDTS0_0_IRQHandler ; Handler name for SR LEDTS0_0
\r
140 LDR R0,=LEDTS1_0_IRQHandler ; Handler name for SR LEDTS1_0
\r
142 LDR R0,=BCCU0_0_IRQHandler ; Handler name for SR BCCU0_0
\r
145 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
\r
147 ;; Default interrupt handlers.
\r
150 SECTION .text:CODE:NOROOT(2)
\r
154 PUBWEAK Reset_Handler
\r
155 SECTION .text:CODE:REORDER(2)
\r
157 LDR R0, =SystemInit
\r
159 LDR R0, =SystemInit_DAVE3
\r
161 LDR R0, =__iar_program_start
\r
164 PUBWEAK Undef_Handler
\r
165 SECTION .text:CODE:REORDER:NOROOT(1)
\r
170 PUBWEAK HardFault_Handler
\r
171 SECTION .text:CODE:REORDER:NOROOT(1)
\r
173 B HardFault_Handler
\r
176 PUBWEAK SVC_Handler
\r
177 SECTION .text:CODE:REORDER:NOROOT(1)
\r
182 PUBWEAK PendSV_Handler
\r
183 SECTION .text:CODE:REORDER:NOROOT(1)
\r
188 PUBWEAK SysTick_Handler
\r
189 SECTION .text:CODE:REORDER:NOROOT(1)
\r
194 PUBWEAK SCU_0_IRQHandler
\r
195 SECTION .text:CODE:REORDER:NOROOT(1)
\r
199 PUBWEAK SCU_1_IRQHandler
\r
200 SECTION .text:CODE:REORDER:NOROOT(1)
\r
205 PUBWEAK SCU_2_IRQHandler
\r
206 SECTION .text:CODE:REORDER:NOROOT(1)
\r
211 PUBWEAK ERU0_0_IRQHandler
\r
212 SECTION .text:CODE:REORDER:NOROOT(1)
\r
214 B ERU0_0_IRQHandler
\r
217 PUBWEAK ERU0_1_IRQHandler
\r
218 SECTION .text:CODE:REORDER:NOROOT(1)
\r
220 B ERU0_1_IRQHandler
\r
223 PUBWEAK ERU0_2_IRQHandler
\r
224 SECTION .text:CODE:REORDER:NOROOT(1)
\r
226 B ERU0_2_IRQHandler
\r
229 PUBWEAK ERU0_3_IRQHandler
\r
230 SECTION .text:CODE:REORDER:NOROOT(1)
\r
232 B ERU0_3_IRQHandler
\r
235 PUBWEAK USIC0_0_IRQHandler
\r
236 SECTION .text:CODE:REORDER:NOROOT(1)
\r
238 B USIC0_0_IRQHandler
\r
241 PUBWEAK USIC0_1_IRQHandler
\r
242 SECTION .text:CODE:REORDER:NOROOT(1)
\r
244 B USIC0_1_IRQHandler
\r
247 PUBWEAK USIC0_2_IRQHandler
\r
248 SECTION .text:CODE:REORDER:NOROOT(1)
\r
250 B USIC0_2_IRQHandler
\r
253 PUBWEAK USIC0_3_IRQHandler
\r
254 SECTION .text:CODE:REORDER:NOROOT(1)
\r
256 B USIC0_3_IRQHandler
\r
259 PUBWEAK USIC0_4_IRQHandler
\r
260 SECTION .text:CODE:REORDER:NOROOT(1)
\r
262 B USIC0_4_IRQHandler
\r
265 PUBWEAK USIC0_5_IRQHandler
\r
266 SECTION .text:CODE:REORDER:NOROOT(1)
\r
268 B USIC0_5_IRQHandler
\r
271 PUBWEAK VADC0_C0_0_IRQHandler
\r
272 SECTION .text:CODE:REORDER:NOROOT(1)
\r
273 VADC0_C0_0_IRQHandler
\r
274 B VADC0_C0_0_IRQHandler
\r
277 PUBWEAK VADC0_C0_1_IRQHandler
\r
278 SECTION .text:CODE:REORDER:NOROOT(1)
\r
279 VADC0_C0_1_IRQHandler
\r
280 B VADC0_C0_1_IRQHandler
\r
283 PUBWEAK VADC0_G0_0_IRQHandler
\r
284 SECTION .text:CODE:REORDER:NOROOT(1)
\r
285 VADC0_G0_0_IRQHandler
\r
286 B VADC0_G0_0_IRQHandler
\r
289 PUBWEAK VADC0_G0_1_IRQHandler
\r
290 SECTION .text:CODE:REORDER:NOROOT(1)
\r
291 VADC0_G0_1_IRQHandler
\r
292 B VADC0_G0_1_IRQHandler
\r
295 PUBWEAK VADC0_G1_0_IRQHandler
\r
296 SECTION .text:CODE:REORDER:NOROOT(1)
\r
297 VADC0_G1_0_IRQHandler
\r
298 B VADC0_G1_0_IRQHandler
\r
301 PUBWEAK VADC0_G1_1_IRQHandler
\r
302 SECTION .text:CODE:REORDER:NOROOT(1)
\r
303 VADC0_G1_1_IRQHandler
\r
304 B VADC0_G1_1_IRQHandler
\r
307 PUBWEAK CCU40_0_IRQHandler
\r
308 SECTION .text:CODE:REORDER:NOROOT(1)
\r
310 B CCU40_0_IRQHandler
\r
313 PUBWEAK CCU40_1_IRQHandler
\r
314 SECTION .text:CODE:REORDER:NOROOT(1)
\r
316 B CCU40_1_IRQHandler
\r
319 PUBWEAK CCU40_2_IRQHandler
\r
320 SECTION .text:CODE:REORDER:NOROOT(1)
\r
322 B CCU40_2_IRQHandler
\r
325 PUBWEAK CCU40_3_IRQHandler
\r
326 SECTION .text:CODE:REORDER:NOROOT(1)
\r
328 B CCU40_3_IRQHandler
\r
331 PUBWEAK LEDTS0_0_IRQHandler
\r
332 SECTION .text:CODE:REORDER:NOROOT(1)
\r
333 LEDTS0_0_IRQHandler
\r
334 B LEDTS0_0_IRQHandler
\r
337 PUBWEAK LEDTS1_0_IRQHandler
\r
338 SECTION .text:CODE:REORDER:NOROOT(1)
\r
339 LEDTS1_0_IRQHandler
\r
340 B LEDTS1_0_IRQHandler
\r
343 PUBWEAK BCCU0_0_IRQHandler
\r
344 SECTION .text:CODE:REORDER:NOROOT(1)
\r
346 B BCCU0_0_IRQHandler
\r
348 ; Definition of the default weak SystemInit_DAVE3 function
\r
349 ;If DAVE3 requires an extended SystemInit it will create its own version of
\r
350 ;SystemInit_DAVE3 which overrides this weak definition. Example includes
\r
351 ;setting up of external memory interfaces.
\r
353 PUBWEAK SystemInit_DAVE3
\r
354 SECTION .text:CODE:REORDER:NOROOT(2)
\r
359 ;Decision function queried by CMSIS startup for Clock tree setup ======== */
\r
360 ;In the absence of DAVE code engine, CMSIS SystemInit() must perform clock tree setup.
\r
361 ;This decision routine defined here will always return TRUE.
\r
362 ;When overridden by a definition defined in DAVE code engine, this routine
\r
363 ;returns FALSE indicating that the code engine has performed the clock setup
\r
365 PUBWEAK AllowClkInitByStartup
\r
366 SECTION .text:CODE:REORDER:NOROOT(2)
\r
367 AllowClkInitByStartup
\r