1 ;/*****************************************************************************
\r
2 ; * @file: startup_LPC51U68.s
\r
3 ; * @purpose: CMSIS Cortex-M0 Core Device Startup File
\r
6 ; * @date: 2017-12-15
\r
7 ; *----------------------------------------------------------------------------
\r
9 ; Copyright 1997-2016 Freescale Semiconductor, Inc.
\r
10 ; Copyright 2016-2018 NXP
\r
12 ; SPDX-License-Identifier: BSD-3-Clause
\r
14 ; The modules in this file are included in the libraries, and may be replaced
\r
15 ; by any user-defined modules that define the PUBLIC symbol _program_start or
\r
16 ; a user defined start symbol.
\r
17 ; To override the cstartup defined in the library, simply add your modified
\r
18 ; version to the workbench project.
\r
20 ; The vector table is normally located at address 0.
\r
21 ; When debugging in RAM, it can be located in RAM, aligned to at least 2^6.
\r
22 ; The name "__vector_table" has special meaning for C-SPY:
\r
23 ; it is where the SP start value is found, and the NVIC vector
\r
24 ; table register (VTOR) is initialized to this address if != 0.
\r
31 ;; Forward declaration of sections.
\r
32 SECTION CSTACK:DATA:NOROOT(3)
\r
34 SECTION .intvec:CODE:NOROOT(2)
\r
36 EXTERN __iar_program_start
\r
38 PUBLIC __vector_table
\r
39 PUBLIC __vector_table_0x1c
\r
41 PUBLIC __Vectors_End
\r
42 PUBLIC __Vectors_Size
\r
51 DCD HardFault_Handler
\r
66 ; External Interrupts
\r
67 DCD WDT_BOD_IRQHandler ; Windowed watchdog timer, Brownout detect
\r
68 DCD DMA0_IRQHandler ; DMA controller
\r
69 DCD GINT0_IRQHandler ; GPIO group 0
\r
70 DCD GINT1_IRQHandler ; GPIO group 1
\r
71 DCD PIN_INT0_IRQHandler ; Pin interrupt 0 or pattern match engine slice 0
\r
72 DCD PIN_INT1_IRQHandler ; Pin interrupt 1or pattern match engine slice 1
\r
73 DCD PIN_INT2_IRQHandler ; Pin interrupt 2 or pattern match engine slice 2
\r
74 DCD PIN_INT3_IRQHandler ; Pin interrupt 3 or pattern match engine slice 3
\r
75 DCD UTICK0_IRQHandler ; Micro-tick Timer
\r
76 DCD MRT0_IRQHandler ; Multi-rate timer
\r
77 DCD CTIMER0_IRQHandler ; Standard counter/timer CTIMER0
\r
78 DCD CTIMER1_IRQHandler ; Standard counter/timer CTIMER1
\r
79 DCD SCT0_IRQHandler ; SCTimer/PWM
\r
80 DCD CTIMER3_IRQHandler ; Standard counter/timer CTIMER3
\r
81 DCD FLEXCOMM0_IRQHandler ; Flexcomm Interface 0 (USART, SPI, I2C)
\r
82 DCD FLEXCOMM1_IRQHandler ; Flexcomm Interface 1 (USART, SPI, I2C)
\r
83 DCD FLEXCOMM2_IRQHandler ; Flexcomm Interface 2 (USART, SPI, I2C)
\r
84 DCD FLEXCOMM3_IRQHandler ; Flexcomm Interface 3 (USART, SPI, I2C)
\r
85 DCD FLEXCOMM4_IRQHandler ; Flexcomm Interface 4 (USART, SPI, I2C)
\r
86 DCD FLEXCOMM5_IRQHandler ; Flexcomm Interface 5 (USART, SPI, I2C)
\r
87 DCD FLEXCOMM6_IRQHandler ; Flexcomm Interface 6 (USART, SPI, I2C, I2S)
\r
88 DCD FLEXCOMM7_IRQHandler ; Flexcomm Interface 7 (USART, SPI, I2C, I2S)
\r
89 DCD ADC0_SEQA_IRQHandler ; ADC0 sequence A completion.
\r
90 DCD ADC0_SEQB_IRQHandler ; ADC0 sequence B completion.
\r
91 DCD ADC0_THCMP_IRQHandler ; ADC0 threshold compare and error.
\r
92 DCD Reserved41_IRQHandler ; Reserved interrupt
\r
93 DCD Reserved42_IRQHandler ; Reserved interrupt
\r
94 DCD USB0_NEEDCLK_IRQHandler ; USB Activity Wake-up Interrupt
\r
95 DCD USB0_IRQHandler ; USB device
\r
96 DCD RTC_IRQHandler ; RTC alarm and wake-up interrupts
\r
97 DCD Reserved46_IRQHandler ; Reserved interrupt
\r
98 DCD Reserved47_IRQHandler ; Reserved interrupt
\r
101 ; Code Read Protection Level (CRP)
\r
102 ; <0xFFFFFFFF=> Disabled
\r
103 ; <0x4E697370=> NO_ISP
\r
104 ; <0x12345678=> CRP1
\r
105 ; <0x87654321=> CRP2
\r
106 ; <0x43218765=> CRP3
\r
108 #if !defined NO_CRP
\r
115 __Vectors EQU __vector_table
\r
116 __Vectors_Size EQU __Vectors_End - __Vectors
\r
119 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
\r
121 ;; Default interrupt handlers.
\r
125 PUBWEAK Reset_Handler
\r
126 SECTION .text:CODE:REORDER:NOROOT(2)
\r
128 LDR r0, =SystemInit
\r
130 LDR r0, =__iar_program_start
\r
133 PUBWEAK NMI_Handler
\r
134 SECTION .text:CODE:REORDER:NOROOT(1)
\r
138 PUBWEAK HardFault_Handler
\r
139 SECTION .text:CODE:REORDER:NOROOT(1)
\r
143 PUBWEAK SVC_Handler
\r
144 SECTION .text:CODE:REORDER:NOROOT(1)
\r
148 PUBWEAK PendSV_Handler
\r
149 SECTION .text:CODE:REORDER:NOROOT(1)
\r
153 PUBWEAK SysTick_Handler
\r
154 SECTION .text:CODE:REORDER:NOROOT(1)
\r
158 PUBWEAK WDT_BOD_IRQHandler
\r
159 PUBWEAK WDT_BOD_DriverIRQHandler
\r
160 SECTION .text:CODE:REORDER:NOROOT(2)
\r
162 LDR R0, =WDT_BOD_DriverIRQHandler
\r
164 PUBWEAK DMA0_IRQHandler
\r
165 PUBWEAK DMA0_DriverIRQHandler
\r
166 SECTION .text:CODE:REORDER:NOROOT(2)
\r
168 LDR R0, =DMA0_DriverIRQHandler
\r
170 PUBWEAK GINT0_IRQHandler
\r
171 PUBWEAK GINT0_DriverIRQHandler
\r
172 SECTION .text:CODE:REORDER:NOROOT(2)
\r
174 LDR R0, =GINT0_DriverIRQHandler
\r
176 PUBWEAK GINT1_IRQHandler
\r
177 PUBWEAK GINT1_DriverIRQHandler
\r
178 SECTION .text:CODE:REORDER:NOROOT(2)
\r
180 LDR R0, =GINT1_DriverIRQHandler
\r
182 PUBWEAK PIN_INT0_IRQHandler
\r
183 PUBWEAK PIN_INT0_DriverIRQHandler
\r
184 SECTION .text:CODE:REORDER:NOROOT(2)
\r
185 PIN_INT0_IRQHandler
\r
186 LDR R0, =PIN_INT0_DriverIRQHandler
\r
188 PUBWEAK PIN_INT1_IRQHandler
\r
189 PUBWEAK PIN_INT1_DriverIRQHandler
\r
190 SECTION .text:CODE:REORDER:NOROOT(2)
\r
191 PIN_INT1_IRQHandler
\r
192 LDR R0, =PIN_INT1_DriverIRQHandler
\r
194 PUBWEAK PIN_INT2_IRQHandler
\r
195 PUBWEAK PIN_INT2_DriverIRQHandler
\r
196 SECTION .text:CODE:REORDER:NOROOT(2)
\r
197 PIN_INT2_IRQHandler
\r
198 LDR R0, =PIN_INT2_DriverIRQHandler
\r
200 PUBWEAK PIN_INT3_IRQHandler
\r
201 PUBWEAK PIN_INT3_DriverIRQHandler
\r
202 SECTION .text:CODE:REORDER:NOROOT(2)
\r
203 PIN_INT3_IRQHandler
\r
204 LDR R0, =PIN_INT3_DriverIRQHandler
\r
206 PUBWEAK UTICK0_IRQHandler
\r
207 PUBWEAK UTICK0_DriverIRQHandler
\r
208 SECTION .text:CODE:REORDER:NOROOT(2)
\r
210 LDR R0, =UTICK0_DriverIRQHandler
\r
212 PUBWEAK MRT0_IRQHandler
\r
213 PUBWEAK MRT0_DriverIRQHandler
\r
214 SECTION .text:CODE:REORDER:NOROOT(2)
\r
216 LDR R0, =MRT0_DriverIRQHandler
\r
218 PUBWEAK CTIMER0_IRQHandler
\r
219 PUBWEAK CTIMER0_DriverIRQHandler
\r
220 SECTION .text:CODE:REORDER:NOROOT(2)
\r
222 LDR R0, =CTIMER0_DriverIRQHandler
\r
224 PUBWEAK CTIMER1_IRQHandler
\r
225 PUBWEAK CTIMER1_DriverIRQHandler
\r
226 SECTION .text:CODE:REORDER:NOROOT(2)
\r
228 LDR R0, =CTIMER1_DriverIRQHandler
\r
230 PUBWEAK SCT0_IRQHandler
\r
231 PUBWEAK SCT0_DriverIRQHandler
\r
232 SECTION .text:CODE:REORDER:NOROOT(2)
\r
234 LDR R0, =SCT0_DriverIRQHandler
\r
236 PUBWEAK CTIMER3_IRQHandler
\r
237 PUBWEAK CTIMER3_DriverIRQHandler
\r
238 SECTION .text:CODE:REORDER:NOROOT(2)
\r
240 LDR R0, =CTIMER3_DriverIRQHandler
\r
242 PUBWEAK FLEXCOMM0_IRQHandler
\r
243 PUBWEAK FLEXCOMM0_DriverIRQHandler
\r
244 SECTION .text:CODE:REORDER:NOROOT(2)
\r
245 FLEXCOMM0_IRQHandler
\r
246 LDR R0, =FLEXCOMM0_DriverIRQHandler
\r
248 PUBWEAK FLEXCOMM1_IRQHandler
\r
249 PUBWEAK FLEXCOMM1_DriverIRQHandler
\r
250 SECTION .text:CODE:REORDER:NOROOT(2)
\r
251 FLEXCOMM1_IRQHandler
\r
252 LDR R0, =FLEXCOMM1_DriverIRQHandler
\r
254 PUBWEAK FLEXCOMM2_IRQHandler
\r
255 PUBWEAK FLEXCOMM2_DriverIRQHandler
\r
256 SECTION .text:CODE:REORDER:NOROOT(2)
\r
257 FLEXCOMM2_IRQHandler
\r
258 LDR R0, =FLEXCOMM2_DriverIRQHandler
\r
260 PUBWEAK FLEXCOMM3_IRQHandler
\r
261 PUBWEAK FLEXCOMM3_DriverIRQHandler
\r
262 SECTION .text:CODE:REORDER:NOROOT(2)
\r
263 FLEXCOMM3_IRQHandler
\r
264 LDR R0, =FLEXCOMM3_DriverIRQHandler
\r
266 PUBWEAK FLEXCOMM4_IRQHandler
\r
267 PUBWEAK FLEXCOMM4_DriverIRQHandler
\r
268 SECTION .text:CODE:REORDER:NOROOT(2)
\r
269 FLEXCOMM4_IRQHandler
\r
270 LDR R0, =FLEXCOMM4_DriverIRQHandler
\r
272 PUBWEAK FLEXCOMM5_IRQHandler
\r
273 PUBWEAK FLEXCOMM5_DriverIRQHandler
\r
274 SECTION .text:CODE:REORDER:NOROOT(2)
\r
275 FLEXCOMM5_IRQHandler
\r
276 LDR R0, =FLEXCOMM5_DriverIRQHandler
\r
278 PUBWEAK FLEXCOMM6_IRQHandler
\r
279 PUBWEAK FLEXCOMM6_DriverIRQHandler
\r
280 SECTION .text:CODE:REORDER:NOROOT(2)
\r
281 FLEXCOMM6_IRQHandler
\r
282 LDR R0, =FLEXCOMM6_DriverIRQHandler
\r
284 PUBWEAK FLEXCOMM7_IRQHandler
\r
285 PUBWEAK FLEXCOMM7_DriverIRQHandler
\r
286 SECTION .text:CODE:REORDER:NOROOT(2)
\r
287 FLEXCOMM7_IRQHandler
\r
288 LDR R0, =FLEXCOMM7_DriverIRQHandler
\r
290 PUBWEAK ADC0_SEQA_IRQHandler
\r
291 PUBWEAK ADC0_SEQA_DriverIRQHandler
\r
292 SECTION .text:CODE:REORDER:NOROOT(2)
\r
293 ADC0_SEQA_IRQHandler
\r
294 LDR R0, =ADC0_SEQA_DriverIRQHandler
\r
296 PUBWEAK ADC0_SEQB_IRQHandler
\r
297 PUBWEAK ADC0_SEQB_DriverIRQHandler
\r
298 SECTION .text:CODE:REORDER:NOROOT(2)
\r
299 ADC0_SEQB_IRQHandler
\r
300 LDR R0, =ADC0_SEQB_DriverIRQHandler
\r
302 PUBWEAK ADC0_THCMP_IRQHandler
\r
303 PUBWEAK ADC0_THCMP_DriverIRQHandler
\r
304 SECTION .text:CODE:REORDER:NOROOT(2)
\r
305 ADC0_THCMP_IRQHandler
\r
306 LDR R0, =ADC0_THCMP_DriverIRQHandler
\r
308 PUBWEAK Reserved41_IRQHandler
\r
309 PUBWEAK Reserved41_DriverIRQHandler
\r
310 SECTION .text:CODE:REORDER:NOROOT(2)
\r
311 Reserved41_IRQHandler
\r
312 LDR R0, =Reserved41_DriverIRQHandler
\r
314 PUBWEAK Reserved42_IRQHandler
\r
315 PUBWEAK Reserved42_DriverIRQHandler
\r
316 SECTION .text:CODE:REORDER:NOROOT(2)
\r
317 Reserved42_IRQHandler
\r
318 LDR R0, =Reserved42_DriverIRQHandler
\r
320 PUBWEAK USB0_NEEDCLK_IRQHandler
\r
321 PUBWEAK USB0_NEEDCLK_DriverIRQHandler
\r
322 SECTION .text:CODE:REORDER:NOROOT(2)
\r
323 USB0_NEEDCLK_IRQHandler
\r
324 LDR R0, =USB0_NEEDCLK_DriverIRQHandler
\r
326 PUBWEAK USB0_IRQHandler
\r
327 PUBWEAK USB0_DriverIRQHandler
\r
328 SECTION .text:CODE:REORDER:NOROOT(2)
\r
330 LDR R0, =USB0_DriverIRQHandler
\r
332 PUBWEAK RTC_IRQHandler
\r
333 PUBWEAK RTC_DriverIRQHandler
\r
334 SECTION .text:CODE:REORDER:NOROOT(2)
\r
336 LDR R0, =RTC_DriverIRQHandler
\r
338 PUBWEAK Reserved46_IRQHandler
\r
339 PUBWEAK Reserved46_DriverIRQHandler
\r
340 SECTION .text:CODE:REORDER:NOROOT(2)
\r
341 Reserved46_IRQHandler
\r
342 LDR R0, =Reserved46_DriverIRQHandler
\r
344 PUBWEAK Reserved47_IRQHandler
\r
345 PUBWEAK Reserved47_DriverIRQHandler
\r
346 SECTION .text:CODE:REORDER:NOROOT(2)
\r
347 Reserved47_IRQHandler
\r
348 LDR R0, =Reserved47_DriverIRQHandler
\r
350 WDT_BOD_DriverIRQHandler
\r
351 DMA0_DriverIRQHandler
\r
352 GINT0_DriverIRQHandler
\r
353 GINT1_DriverIRQHandler
\r
354 PIN_INT0_DriverIRQHandler
\r
355 PIN_INT1_DriverIRQHandler
\r
356 PIN_INT2_DriverIRQHandler
\r
357 PIN_INT3_DriverIRQHandler
\r
358 UTICK0_DriverIRQHandler
\r
359 MRT0_DriverIRQHandler
\r
360 CTIMER0_DriverIRQHandler
\r
361 CTIMER1_DriverIRQHandler
\r
362 SCT0_DriverIRQHandler
\r
363 CTIMER3_DriverIRQHandler
\r
364 FLEXCOMM0_DriverIRQHandler
\r
365 FLEXCOMM1_DriverIRQHandler
\r
366 FLEXCOMM2_DriverIRQHandler
\r
367 FLEXCOMM3_DriverIRQHandler
\r
368 FLEXCOMM4_DriverIRQHandler
\r
369 FLEXCOMM5_DriverIRQHandler
\r
370 FLEXCOMM6_DriverIRQHandler
\r
371 FLEXCOMM7_DriverIRQHandler
\r
372 ADC0_SEQA_DriverIRQHandler
\r
373 ADC0_SEQB_DriverIRQHandler
\r
374 ADC0_THCMP_DriverIRQHandler
\r
375 Reserved41_DriverIRQHandler
\r
376 Reserved42_DriverIRQHandler
\r
377 USB0_NEEDCLK_DriverIRQHandler
\r
378 USB0_DriverIRQHandler
\r
379 RTC_DriverIRQHandler
\r
380 Reserved46_DriverIRQHandler
\r
381 Reserved47_DriverIRQHandler
\r