1 ;/***********************************************************************
\r
2 ; * $Id: startup_LPC43xx.s 8389 2011-10-19 13:53:14Z nxp28536 $
\r
4 ; * Project: LPC43xx CMSIS Package
\r
6 ; * Description: Cortex-M4 Core Device Startup File for the NXP LPC18xx
\r
9 ; * Copyright(C) 2011, NXP Semiconductor
\r
10 ; * All rights reserved.
\r
12 ; ***********************************************************************
\r
13 ; * Software that is described herein is for illustrative purposes only
\r
14 ; * which provides customers with programming information regarding the
\r
15 ; * products. This software is supplied "AS IS" without any warranties.
\r
16 ; * NXP Semiconductors assumes no responsibility or liability for the
\r
17 ; * use of the software, conveys no license or title under any patent,
\r
18 ; * copyright, or mask work right to the product. NXP Semiconductors
\r
19 ; * reserves the right to make changes in the software without
\r
20 ; * notification. NXP Semiconductors also make no representation or
\r
21 ; * warranty that such application will be suitable for the specified
\r
22 ; * use without further testing or modification.
\r
23 ; **********************************************************************/
\r
25 ; <h> Stack Configuration
\r
26 ; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
\r
29 Stack_Size EQU 0x00000400
\r
31 AREA STACK, NOINIT, READWRITE, ALIGN=3
\r
32 Stack_Mem SPACE Stack_Size
\r
35 ; <h> Heap Configuration
\r
36 ; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
\r
39 Heap_Size EQU 0x00000000
\r
41 AREA HEAP, NOINIT, READWRITE, ALIGN=3
\r
43 Heap_Mem SPACE Heap_Size
\r
49 ; Vector Table Mapped to Address 0 at Reset
\r
51 AREA RESET, DATA, READONLY
\r
55 Sign_Value EQU 0x5A5A5A5A
\r
57 ; this might be meaningful only for images which require a header
\r
60 ;Signature_Size EQU 0x10
\r
65 ; SPACE Signature_Size
\r
67 ; DCD Reset_Handler ; 1 Reset Handler
\r
72 __Vectors DCD __initial_sp ; 0 Top of Stack
\r
73 DCD Reset_Handler ; 1 Reset Handler
\r
74 DCD NMI_Handler ; 2 NMI Handler
\r
75 DCD HardFault_Handler ; 3 Hard Fault Handler
\r
76 DCD MemManage_Handler ; 4 MPU Fault Handler
\r
77 DCD BusFault_Handler ; 5 Bus Fault Handler
\r
78 DCD UsageFault_Handler ; 6 Usage Fault Handler
\r
79 DCD Sign_Value ; 7 Reserved
\r
83 DCD SVC_Handler ; 11 SVCall Handler
\r
84 DCD DebugMon_Handler ; 12 Debug Monitor Handler
\r
86 DCD PendSV_Handler ; 14 PendSV Handler
\r
87 DCD SysTick_Handler ; 15 SysTick Handler
\r
89 ; External Interrupts
\r
90 DCD DAC_IRQHandler ; 16 D/A Converter
\r
91 DCD M0_IRQHandler ; 17 M0
\r
92 DCD DMA_IRQHandler ; 18 General Purpose DMA
\r
94 DCD FLASH_EEPROM_IRQHandler ; 20 Reserved for Typhoon
\r
95 DCD ETH_IRQHandler ; 21 Ethernet
\r
96 DCD SDIO_IRQHandler ; 22 SD/MMC
\r
97 DCD LCD_IRQHandler ; 23 LCD
\r
98 DCD USB0_IRQHandler ; 24 USB0
\r
99 DCD USB1_IRQHandler ; 25 USB1
\r
100 DCD SCT_IRQHandler ; 26 State Configurable Timer
\r
101 DCD RIT_IRQHandler ; 27 Repetitive Interrupt Timer
\r
102 DCD TIMER0_IRQHandler ; 28 Timer0
\r
103 DCD TIMER1_IRQHandler ; 29 Timer1
\r
104 DCD TIMER2_IRQHandler ; 30 Timer2
\r
105 DCD TIMER3_IRQHandler ; 31 Timer3
\r
106 DCD MCPWM_IRQHandler ; 32 Motor Control PWM
\r
107 DCD ADC0_IRQHandler ; 33 A/D Converter 0
\r
108 DCD I2C0_IRQHandler ; 34 I2C0
\r
109 DCD I2C1_IRQHandler ; 35 I2C1
\r
110 DCD SPI_IRQHandler ; 36 SPI
\r
111 DCD ADC1_IRQHandler ; 37 A/D Converter 1
\r
112 DCD SSP0_IRQHandler ; 38 SSP0
\r
113 DCD SSP1_IRQHandler ; 39 SSP1
\r
114 DCD UART0_IRQHandler ; 40 UART0
\r
115 DCD UART1_IRQHandler ; 41 UART1
\r
116 DCD UART2_IRQHandler ; 42 UART2
\r
117 DCD UART3_IRQHandler ; 43 UART3
\r
118 DCD I2S0_IRQHandler ; 44 I2S0
\r
119 DCD I2S1_IRQHandler ; 45 I2S1
\r
120 DCD SPIFI_IRQHandler ; 46 SPI Flash Interface
\r
121 DCD SGPIO_IRQHandler ; 47 SGPIO
\r
122 DCD GPIO0_IRQHandler ; 48 GPIO0
\r
123 DCD GPIO1_IRQHandler ; 49 GPIO1
\r
124 DCD GPIO2_IRQHandler ; 50 GPIO2
\r
125 DCD GPIO3_IRQHandler ; 51 GPIO3
\r
126 DCD GPIO4_IRQHandler ; 52 GPIO4
\r
127 DCD GPIO5_IRQHandler ; 53 GPIO5
\r
128 DCD GPIO6_IRQHandler ; 54 GPIO6
\r
129 DCD GPIO7_IRQHandler ; 55 GPIO7
\r
130 DCD GINT0_IRQHandler ; 56 GINT0
\r
131 DCD GINT1_IRQHandler ; 57 GINT1
\r
132 DCD EVRT_IRQHandler ; 58 Event Router
\r
133 DCD CAN1_IRQHandler ; 59 C_CAN1
\r
134 DCD 0 ; 60 Reserved
\r
135 DCD VADC_IRQHandler ; 61 VADC
\r
136 DCD ATIMER_IRQHandler ; 62 ATIMER
\r
137 DCD RTC_IRQHandler ; 63 RTC
\r
138 DCD 0 ; 64 Reserved
\r
139 DCD WDT_IRQHandler ; 65 WDT
\r
140 DCD 0 ; 66 Reserved
\r
141 DCD CAN0_IRQHandler ; 67 C_CAN0
\r
142 DCD QEI_IRQHandler ; 68 QEI
\r
146 IF :LNOT::DEF:NO_CRP
\r
147 AREA |.ARM.__at_0x02FC|, CODE, READONLY
\r
148 CRP_Key DCD 0xFFFFFFFF
\r
151 AREA |.text|, CODE, READONLY
\r
156 EXPORT Reset_Handler [WEAK]
\r
161 ; Extend the address bus, as the bootloader configured only [A13:0]
\r
162 ; *(uint32_t*)(0x40086320) = 0x000000F1;
\r
163 ; P6_8: A14 (function 1)
\r
164 LDR R0, =0x40086320
\r
165 LDR R1, =0x000000F1
\r
167 ; *(uint32_t*)(0x4008631C) = 0x000000F1;
\r
168 ; P6_7: A15 (function 1)
\r
169 LDR R0, =0x4008631C
\r
170 LDR R1, =0x000000F1
\r
172 ; *(uint32_t*)(0x400866C0) = 0x000000F2;
\r
173 ; PD_16: A16 (function 2)
\r
174 LDR R0, =0x400866C0
\r
175 LDR R1, =0x000000F2
\r
177 ; *(uint32_t*)(0x400866BC) = 0x000000F2;
\r
178 ; PD_15: A17 (function 2)
\r
179 LDR R0, =0x400866BC
\r
180 LDR R1, =0x000000F2
\r
182 ; *(uint32_t*)(0x40086700) = 0x000000F3;
\r
183 ; PE_0: A18 (function 3)
\r
184 LDR R0, =0x40086700
\r
185 LDR R1, =0x000000F3
\r
187 ; *(uint32_t*)(0x40086704) = 0x000000F3;
\r
188 ; PE_1: A19 (function 3)
\r
189 LDR R0, =0x40086704
\r
190 LDR R1, =0x000000F3
\r
192 ; *(uint32_t*)(0x40086708) = 0x000000F3;
\r
193 ; PE_2: A20 (function 3)
\r
194 LDR R0, =0x40086708
\r
195 LDR R1, =0x000000F3
\r
197 ; *(uint32_t*)(0x4008670C) = 0x000000F3;
\r
198 ; PE_3: A21 (function 3)
\r
199 LDR R0, =0x4008670C
\r
200 LDR R1, =0x000000F3
\r
202 ; *(uint32_t*)(0x40086710) = 0x000000F3;
\r
203 ; PE_4: A22 (function 3)
\r
204 LDR R0, =0x40086710
\r
205 LDR R1, =0x000000F3
\r
214 ; Dummy Exception Handlers (infinite loops which can be modified)
\r
217 EXPORT NMI_Handler [WEAK]
\r
222 EXPORT HardFault_Handler [WEAK]
\r
227 EXPORT MemManage_Handler [WEAK]
\r
232 EXPORT BusFault_Handler [WEAK]
\r
235 UsageFault_Handler\
\r
237 EXPORT UsageFault_Handler [WEAK]
\r
243 EXPORT vPortSVCHandler [WEAK]
\r
248 EXPORT SVC_Handler [WEAK]
\r
253 EXPORT DebugMon_Handler [WEAK]
\r
258 xPortPendSVHandler\
\r
260 EXPORT xPortPendSVHandler [WEAK]
\r
264 PendSV_Handler PROC
\r
265 EXPORT PendSV_Handler [WEAK]
\r
270 xPortSysTickHandler\
\r
272 EXPORT xPortSysTickHandler [WEAK]
\r
276 SysTick_Handler PROC
\r
277 EXPORT SysTick_Handler [WEAK]
\r
281 Default_Handler PROC
\r
283 EXPORT DAC_IRQHandler [WEAK]
\r
284 EXPORT M0_IRQHandler [WEAK]
\r
285 EXPORT DMA_IRQHandler [WEAK]
\r
286 EXPORT FLASH_EEPROM_IRQHandler [WEAK]
\r
287 EXPORT ETH_IRQHandler [WEAK]
\r
288 EXPORT SDIO_IRQHandler [WEAK]
\r
289 EXPORT LCD_IRQHandler [WEAK]
\r
290 EXPORT USB0_IRQHandler [WEAK]
\r
291 EXPORT USB1_IRQHandler [WEAK]
\r
292 EXPORT SCT_IRQHandler [WEAK]
\r
293 EXPORT RIT_IRQHandler [WEAK]
\r
294 EXPORT TIMER0_IRQHandler [WEAK]
\r
295 EXPORT TIMER1_IRQHandler [WEAK]
\r
296 EXPORT TIMER2_IRQHandler [WEAK]
\r
297 EXPORT TIMER3_IRQHandler [WEAK]
\r
298 EXPORT MCPWM_IRQHandler [WEAK]
\r
299 EXPORT ADC0_IRQHandler [WEAK]
\r
300 EXPORT I2C0_IRQHandler [WEAK]
\r
301 EXPORT I2C1_IRQHandler [WEAK]
\r
302 EXPORT SPI_IRQHandler [WEAK]
\r
303 EXPORT ADC1_IRQHandler [WEAK]
\r
304 EXPORT SSP0_IRQHandler [WEAK]
\r
305 EXPORT SSP1_IRQHandler [WEAK]
\r
306 EXPORT UART0_IRQHandler [WEAK]
\r
307 EXPORT UART1_IRQHandler [WEAK]
\r
308 EXPORT UART2_IRQHandler [WEAK]
\r
309 EXPORT UART3_IRQHandler [WEAK]
\r
310 EXPORT I2S0_IRQHandler [WEAK]
\r
311 EXPORT I2S1_IRQHandler [WEAK]
\r
312 EXPORT SPIFI_IRQHandler [WEAK]
\r
313 EXPORT SGPIO_IRQHandler [WEAK]
\r
314 EXPORT GPIO0_IRQHandler [WEAK]
\r
315 EXPORT GPIO1_IRQHandler [WEAK]
\r
316 EXPORT GPIO2_IRQHandler [WEAK]
\r
317 EXPORT GPIO3_IRQHandler [WEAK]
\r
318 EXPORT GPIO4_IRQHandler [WEAK]
\r
319 EXPORT GPIO5_IRQHandler [WEAK]
\r
320 EXPORT GPIO6_IRQHandler [WEAK]
\r
321 EXPORT GPIO7_IRQHandler [WEAK]
\r
322 EXPORT GINT0_IRQHandler [WEAK]
\r
323 EXPORT GINT1_IRQHandler [WEAK]
\r
324 EXPORT EVRT_IRQHandler [WEAK]
\r
325 EXPORT CAN1_IRQHandler [WEAK]
\r
326 EXPORT VADC_IRQHandler [WEAK]
\r
327 EXPORT ATIMER_IRQHandler [WEAK]
\r
328 EXPORT RTC_IRQHandler [WEAK]
\r
329 EXPORT WDT_IRQHandler [WEAK]
\r
330 EXPORT CAN0_IRQHandler [WEAK]
\r
331 EXPORT QEI_IRQHandler [WEAK]
\r
339 FLASH_EEPROM_IRQHandler
\r
392 ; User Initial Stack & Heap
\r
396 EXPORT __initial_sp
\r
398 EXPORT __heap_limit
\r
402 IMPORT __use_two_region_memory
\r
403 EXPORT __user_initial_stackheap
\r
404 __user_initial_stackheap
\r
407 LDR R1, =(Stack_Mem + Stack_Size)
\r
408 LDR R2, = (Heap_Mem + Heap_Size)
\r
409 LDR R3, = Stack_Mem
\r