summaryrefslogtreecommitdiff
path: root/tool/mbed/mbed-sdk/libraries/mbed/targets/cmsis/TARGET_NXP/TARGET_LPC15XX/TOOLCHAIN_ARM_MICRO/startup_LPC15xx.s
blob: 0c9e87ff3cad30be5d91cd9e8b12393dc54553b4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
;/**************************************************************************//**
; * @file     startup_LPC15xx.s
; * @brief    CMSIS Cortex-M3 Core Device Startup File for
; *           NXP LPC15xx Device Series
; * @version  V1.00
; * @date     17. July 2013
; *
; * @note
; * Copyright (C) 2009-2013 ARM Limited. All rights reserved.
; *
; * @par
; * ARM Limited (ARM) is supplying this software for use with Cortex-M
; * processor based microcontrollers.  This file can be freely distributed
; * within development tools that are supporting such ARM based processors.
; *
; * @par
; * THIS SOFTWARE IS PROVIDED "AS IS".  NO WARRANTIES, WHETHER EXPRESS, IMPLIED
; * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
; * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
; * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
; * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
; *
; ******************************************************************************/

; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------

; <h> Stack Configuration
;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>

Stack_Size      EQU     0x00000200

                AREA    STACK, NOINIT, READWRITE, ALIGN=3
                EXPORT  __initial_sp

__initial_sp        EQU     0x02009000  ; Top of RAM from LPC1549


; <h> Heap Configuration
;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>

Heap_Size       EQU     0x00000000

                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem        SPACE   Heap_Size
__heap_limit


                PRESERVE8
                THUMB


; Vector Table Mapped to Address 0 at Reset

                AREA    RESET, DATA, READONLY
                EXPORT  __Vectors

__Vectors       DCD     __initial_sp              ; Top of Stack
                DCD     Reset_Handler             ; Reset Handler
                DCD     NMI_Handler               ; NMI Handler
                DCD     HardFault_Handler         ; Hard Fault Handler
                DCD     MemManage_Handler         ; MPU Fault Handler
                DCD     BusFault_Handler          ; Bus Fault Handler
                DCD     UsageFault_Handler        ; Usage Fault Handler
                DCD     0                         ; Reserved
                DCD     0                         ; Reserved
                DCD     0                         ; Reserved
                DCD     0                         ; Reserved
                DCD     SVC_Handler               ; SVCall Handler
                DCD     DebugMon_Handler          ; Debug Monitor Handler
                DCD     0                         ; Reserved
                DCD     PendSV_Handler            ; PendSV Handler
                DCD     SysTick_Handler           ; SysTick Handler

                ; External Interrupts
                DCD     WDT_IRQHandler            ; 16+ 0 Windowed watchdog timer interrupt
                DCD     BOD_IRQHandler            ; 16+ 1 BOD interrupt
                DCD     FLASH_IRQHandler          ; 16+ 2 Flash controller interrupt
                DCD     EE_IRQHandler             ; 16+ 3 EEPROM controller interrupt
                DCD     DMA_IRQHandler            ; 16+ 4 DMA interrupt
                DCD     GINT0_IRQHandler          ; 16+ 5 GPIO group0 interrupt
                DCD     GINT1_IRQHandler          ; 16+ 6 GPIO group1 interrupt
                DCD     PIN_INT0_IRQHandler       ; 16+ 7 Pin interrupt 0 or pattern match engine slice 0 interrupt
                DCD     PIN_INT1_IRQHandler       ; 16+ 8 Pin interrupt 1 or pattern match engine slice 1 interrupt
                DCD     PIN_INT2_IRQHandler       ; 16+ 9 Pin interrupt 2 or pattern match engine slice 2 interrupt
                DCD     PIN_INT3_IRQHandler       ; 16+10 Pin interrupt 3 or pattern match engine slice 3 interrupt
                DCD     PIN_INT4_IRQHandler       ; 16+11 Pin interrupt 4 or pattern match engine slice 4 interrupt
                DCD     PIN_INT5_IRQHandler       ; 16+12 Pin interrupt 5 or pattern match engine slice 5 interrupt
                DCD     PIN_INT6_IRQHandler       ; 16+13 Pin interrupt 6 or pattern match engine slice 6 interrupt
                DCD     PIN_INT7_IRQHandler       ; 16+14 Pin interrupt 7 or pattern match engine slice 7 interrupt
                DCD     RIT_IRQHandler            ; 16+15 RIT interrupt
                DCD     SCT0_IRQHandler           ; 16+16 State configurable timer interrupt
                DCD     SCT1_IRQHandler           ; 16+17 State configurable timer interrupt
                DCD     SCT2_IRQHandler           ; 16+18 State configurable timer interrupt
                DCD     SCT3_IRQHandler           ; 16+19 State configurable timer interrupt
                DCD     MRT_IRQHandler            ; 16+20 Multi-rate timer interrupt
                DCD     UART0_IRQHandler          ; 16+21 USART0 interrupt
                DCD     UART1_IRQHandler          ; 16+22 USART1 interrupt
                DCD     UART2_IRQHandler          ; 16+23 USART2 interrupt
                DCD     I2C0_IRQHandler           ; 16+24 I2C0 interrupt
                DCD     SPI0_IRQHandler           ; 16+25 SPI0 interrupt
                DCD     SPI1_IRQHandler           ; 16+26 SPI1 interrupt
                DCD     C_CAN0_IRQHandler         ; 16+27 C_CAN0 interrupt
                DCD     USB_IRQ_IRQHandler        ; 16+28 USB interrupt
                DCD     USB_FIQ_IRQHandler        ; 16+29 USB interrupt
                DCD     USBWAKEUP_IRQHandler      ; 16+30 USB wake-up interrupt
                DCD     ADC0_SEQA_IRQHandler      ; 16+31 ADC0 sequence A completion.
                DCD     ADC0_SEQB_IRQHandler      ; 16+32 ADC0 sequence B completion.
                DCD     ADC0_THCMP_IRQHandler     ; 16+33 ADC0 threshold compare
                DCD     ADC0_OVR_IRQHandler       ; 16+34 ADC0 overrun
                DCD     ADC1_SEQA_IRQHandler      ; 16+35 ADC1 sequence A completion.
                DCD     ADC1_SEQB_IRQHandler      ; 16+36 ADC1 sequence B completion.
                DCD     ADC1_THCMP_IRQHandler     ; 16+37 ADC1 threshold compare
                DCD     ADC1_OVR_IRQHandler       ; 16+38 ADC1 overrun
                DCD     DAC_IRQHandler            ; 16+39 DAC interrupt
                DCD     CMP0_IRQHandler           ; 16+40 Analog comparator 0 interrupt (ACMP0)
                DCD     CMP1_IRQHandler           ; 16+41 Analog comparator 1 interrupt (ACMP1)
                DCD     CMP2_IRQHandler           ; 16+42 Analog comparator 2 interrupt (ACMP2)
                DCD     CMP3_IRQHandler           ; 16+43 Analog comparator 3 interrupt (ACMP3)
                DCD     QEI_IRQHandler            ; 16+44 QEI interrupt
                DCD     RTC_ALARM_IRQHandler      ; 16+45 RTC alarm interrupt
                DCD     RTC_WAKE_IRQHandler       ; 16+46 RTC wake-up interrut

; <h> Code Read Protection
;   <o> Code Read Protection  <0xFFFFFFFF=>CRP Disabled
;                             <0x12345678=>CRP Level 1
;                             <0x87654321=>CRP Level 2
;                             <0x43218765=>CRP Level 3 (ARE YOU SURE?)
;                             <0x4E697370=>NO ISP (ARE YOU SURE?)
; </h>
                IF      :LNOT::DEF:NO_CRP
                AREA    |.ARM.__at_0x02FC|, CODE, READONLY
                DCD     0xFFFFFFFF
                ENDIF

                AREA    |.text|, CODE, READONLY


; Reset Handler

Reset_Handler   PROC
                EXPORT  Reset_Handler             [WEAK]
                IMPORT  SystemInit
                IMPORT  __main

;--- enable SRAM1 and SRAM2 memory
                LDR     R0, =0x400740C4   ; SYSAHBCLKCTRL0 register addr
                LDR     R2, [R0]          ; read SYSAHBCLKCTRL0
                ORR     R2, R2, #0x18     ; enable SRAM1, SRAM2
                STR     R2, [R0]          ; store SYSAHBCLKCTRL0
;---                
                LDR     R0, =SystemInit
                BLX     R0
                LDR     R0, =__main
                BX      R0
                ENDP


; Dummy Exception Handlers (infinite loops which can be modified)

NMI_Handler     PROC
                EXPORT  NMI_Handler               [WEAK]
                B       .
                ENDP
HardFault_Handler\
                PROC
                EXPORT  HardFault_Handler         [WEAK]
                B       .
                ENDP
MemManage_Handler\
                PROC
                EXPORT  MemManage_Handler         [WEAK]
                B       .
                ENDP
BusFault_Handler\
                PROC
                EXPORT  BusFault_Handler          [WEAK]
                B       .
                ENDP
UsageFault_Handler\
                PROC
                EXPORT  UsageFault_Handler        [WEAK]
                B       .
                ENDP
SVC_Handler     PROC
                EXPORT  SVC_Handler               [WEAK]
                B       .
                ENDP
DebugMon_Handler\
                PROC
                EXPORT  DebugMon_Handler          [WEAK]
                B       .
                ENDP
PendSV_Handler  PROC
                EXPORT  PendSV_Handler            [WEAK]
                B       .
                ENDP
SysTick_Handler PROC
                EXPORT  SysTick_Handler           [WEAK]
                B       .
                ENDP

Default_Handler PROC

                EXPORT  WDT_IRQHandler            [WEAK]
                EXPORT  BOD_IRQHandler            [WEAK]
                EXPORT  FLASH_IRQHandler          [WEAK]
                EXPORT  EE_IRQHandler             [WEAK]
                EXPORT  DMA_IRQHandler            [WEAK]
                EXPORT  GINT0_IRQHandler          [WEAK]
                EXPORT  GINT1_IRQHandler          [WEAK]
                EXPORT  PIN_INT0_IRQHandler       [WEAK]
                EXPORT  PIN_INT1_IRQHandler       [WEAK]
                EXPORT  PIN_INT2_IRQHandler       [WEAK]
                EXPORT  PIN_INT3_IRQHandler       [WEAK]
                EXPORT  PIN_INT4_IRQHandler       [WEAK]
                EXPORT  PIN_INT5_IRQHandler       [WEAK]
                EXPORT  PIN_INT6_IRQHandler       [WEAK]
                EXPORT  PIN_INT7_IRQHandler       [WEAK]
                EXPORT  RIT_IRQHandler            [WEAK]
                EXPORT  SCT0_IRQHandler           [WEAK]
                EXPORT  SCT1_IRQHandler           [WEAK]
                EXPORT  SCT2_IRQHandler           [WEAK]
                EXPORT  SCT3_IRQHandler           [WEAK]
                EXPORT  MRT_IRQHandler            [WEAK]
                EXPORT  UART0_IRQHandler          [WEAK]
                EXPORT  UART1_IRQHandler          [WEAK]
                EXPORT  UART2_IRQHandler          [WEAK]
                EXPORT  I2C0_IRQHandler           [WEAK]
                EXPORT  SPI0_IRQHandler           [WEAK]
                EXPORT  SPI1_IRQHandler           [WEAK]
                EXPORT  C_CAN0_IRQHandler         [WEAK]
                EXPORT  USB_IRQ_IRQHandler        [WEAK]
                EXPORT  USB_FIQ_IRQHandler        [WEAK]
                EXPORT  USBWAKEUP_IRQHandler      [WEAK]
                EXPORT  ADC0_SEQA_IRQHandler      [WEAK]
                EXPORT  ADC0_SEQB_IRQHandler      [WEAK]
                EXPORT  ADC0_THCMP_IRQHandler     [WEAK]
                EXPORT  ADC0_OVR_IRQHandler       [WEAK]
                EXPORT  ADC1_SEQA_IRQHandler      [WEAK]
                EXPORT  ADC1_SEQB_IRQHandler      [WEAK]
                EXPORT  ADC1_THCMP_IRQHandler     [WEAK]
                EXPORT  ADC1_OVR_IRQHandler       [WEAK]
                EXPORT  DAC_IRQHandler            [WEAK]
                EXPORT  CMP0_IRQHandler           [WEAK]
                EXPORT  CMP1_IRQHandler           [WEAK]
                EXPORT  CMP2_IRQHandler           [WEAK]
                EXPORT  CMP3_IRQHandler           [WEAK]
                EXPORT  QEI_IRQHandler            [WEAK]
                EXPORT  RTC_ALARM_IRQHandler      [WEAK]
                EXPORT  RTC_WAKE_IRQHandler       [WEAK]

WDT_IRQHandler
BOD_IRQHandler
FLASH_IRQHandler
EE_IRQHandler
DMA_IRQHandler
GINT0_IRQHandler
GINT1_IRQHandler
PIN_INT0_IRQHandler
PIN_INT1_IRQHandler
PIN_INT2_IRQHandler
PIN_INT3_IRQHandler
PIN_INT4_IRQHandler
PIN_INT5_IRQHandler
PIN_INT6_IRQHandler
PIN_INT7_IRQHandler
RIT_IRQHandler
SCT0_IRQHandler
SCT1_IRQHandler
SCT2_IRQHandler
SCT3_IRQHandler
MRT_IRQHandler
UART0_IRQHandler
UART1_IRQHandler
UART2_IRQHandler
I2C0_IRQHandler
SPI0_IRQHandler
SPI1_IRQHandler
C_CAN0_IRQHandler
USB_IRQ_IRQHandler
USB_FIQ_IRQHandler
USBWAKEUP_IRQHandler
ADC0_SEQA_IRQHandler
ADC0_SEQB_IRQHandler
ADC0_THCMP_IRQHandler
ADC0_OVR_IRQHandler
ADC1_SEQA_IRQHandler
ADC1_SEQB_IRQHandler
ADC1_THCMP_IRQHandler
ADC1_OVR_IRQHandler
DAC_IRQHandler
CMP0_IRQHandler
CMP1_IRQHandler
CMP2_IRQHandler
CMP3_IRQHandler
QEI_IRQHandler
RTC_ALARM_IRQHandler
RTC_WAKE_IRQHandler

                B       .

                ENDP


                ALIGN


; User Initial Stack & Heap

                EXPORT  __initial_sp
                EXPORT  __heap_base
                EXPORT  __heap_limit

                END