]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_M4F_M0_LPC43xx_Keil/platform/startup_LPC43xx.s
Add FreeRTOS-Plus directory.
[freertos] / FreeRTOS / Demo / CORTEX_M4F_M0_LPC43xx_Keil / platform / startup_LPC43xx.s
1 ;/***********************************************************************\r
2 ; * $Id: startup_LPC43xx.s 8389 2011-10-19 13:53:14Z nxp28536 $\r
3 ; *\r
4 ; * Project: LPC43xx CMSIS Package\r
5 ; *\r
6 ; * Description: Cortex-M4 Core Device Startup File for the NXP LPC18xx \r
7 ; *              Device Series.\r
8 ; *\r
9 ; * Copyright(C) 2011, NXP Semiconductor\r
10 ; * All rights reserved.\r
11 ; *\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
24 \r
25 ; <h> Stack Configuration\r
26 ;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\r
27 ; </h>\r
28 \r
29 Stack_Size      EQU     0x00000400\r
30 \r
31                 AREA    STACK, NOINIT, READWRITE, ALIGN=3\r
32 Stack_Mem       SPACE   Stack_Size\r
33 __initial_sp\r
34 \r
35 ; <h> Heap Configuration\r
36 ;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\r
37 ; </h>\r
38 \r
39 Heap_Size       EQU     0x00000000\r
40 \r
41                 AREA    HEAP, NOINIT, READWRITE, ALIGN=3\r
42 __heap_base\r
43 Heap_Mem        SPACE   Heap_Size\r
44 __heap_limit\r
45 \r
46                 PRESERVE8\r
47                 THUMB\r
48 \r
49 ; Vector Table Mapped to Address 0 at Reset\r
50 \r
51                 AREA    RESET, DATA, READONLY\r
52                 EXPORT  __Vectors\r
53                 EXPORT  __endVectors\r
54 \r
55 Sign_Value              EQU             0x5A5A5A5A\r
56 \r
57 ; this might be meaningful only for images which require a header\r
58 ;                IF :DEF:EXT_FLASH\r
59 ;\r
60 ;Signature_Size  EQU     0x10\r
61 ;                                DCD     0x000200DA\r
62 ;                DCD     0x00000000\r
63 ;                DCD     0x00000000\r
64 ;                DCD     0x00000000\r
65 ;                               SPACE  Signature_Size \r
66 ;                DCD     __initial_sp\r
67 ;                DCD     Reset_Handler             ; 1 Reset Handler\r
68 ;                FILL    256 - 8 - 16\r
69 ;                ENDIF\r
70 \r
71 \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
80                 DCD     0                               ; 8 Reserved\r
81                 DCD     0                               ; 9 Reserved\r
82                 DCD     0                               ; 10 Reserved\r
83                 DCD     SVC_Handler                     ; 11 SVCall Handler \r
84                 DCD     DebugMon_Handler                ; 12 Debug Monitor Handler\r
85                 DCD     0                               ; 13 Reserved\r
86                 DCD     PendSV_Handler                  ; 14 PendSV Handler     \r
87                 DCD     SysTick_Handler                 ; 15 SysTick Handler \r
88 \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
93                                 DCD             0                                                       ; 19 Reserved\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
143 \r
144 __endVectors\r
145                                                                                                 \r
146                 IF      :LNOT::DEF:NO_CRP\r
147                 AREA    |.ARM.__at_0x02FC|, CODE, READONLY\r
148 CRP_Key         DCD     0xFFFFFFFF\r
149                 ENDIF\r
150 \r
151                 AREA    |.text|, CODE, READONLY\r
152 \r
153 ; Reset Handler\r
154 \r
155 Reset_Handler   PROC\r
156                 EXPORT  Reset_Handler             [WEAK]\r
157                 IMPORT  __main\r
158 \r
159                 IF      :DEF:EXT_FLASH\r
160 \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
166                                 STR     R1, [R0,#0]\r
167                                 ; *(uint32_t*)(0x4008631C) = 0x000000F1;  \r
168                                 ; P6_7: A15 (function 1) \r
169                         LDR     R0, =0x4008631C\r
170                         LDR     R1, =0x000000F1\r
171                             STR     R1, [R0,#0]                 \r
172                                 ; *(uint32_t*)(0x400866C0) = 0x000000F2;  \r
173                                 ; PD_16: A16 (function 2) \r
174                                 LDR     R0, =0x400866C0\r
175                                 LDR     R1, =0x000000F2\r
176                                 STR     R1, [R0,#0]                     \r
177                             ; *(uint32_t*)(0x400866BC) = 0x000000F2;  \r
178                                 ; PD_15: A17 (function 2) \r
179                                 LDR     R0, =0x400866BC\r
180                                 LDR     R1, =0x000000F2\r
181                                 STR     R1, [R0,#0]                     \r
182                             ; *(uint32_t*)(0x40086700) = 0x000000F3;  \r
183                                 ; PE_0: A18 (function 3) \r
184                                 LDR     R0, =0x40086700\r
185                                 LDR     R1, =0x000000F3\r
186                                 STR     R1, [R0,#0]                     \r
187                             ; *(uint32_t*)(0x40086704) = 0x000000F3;  \r
188                                 ; PE_1: A19 (function 3) \r
189                                 LDR     R0, =0x40086704\r
190                                 LDR     R1, =0x000000F3\r
191                                 STR     R1, [R0,#0]                     \r
192                             ; *(uint32_t*)(0x40086708) = 0x000000F3;  \r
193                                 ; PE_2: A20 (function 3) \r
194                                 LDR     R0, =0x40086708\r
195                                 LDR     R1, =0x000000F3\r
196                                 STR     R1, [R0,#0]                     \r
197                             ; *(uint32_t*)(0x4008670C) = 0x000000F3;  \r
198                                 ; PE_3: A21 (function 3) \r
199                                 LDR     R0, =0x4008670C\r
200                                 LDR     R1, =0x000000F3\r
201                                 STR     R1, [R0,#0]                     \r
202                             ; *(uint32_t*)(0x40086710) = 0x000000F3;  \r
203                                 ; PE_4: A22 (function 3) \r
204                                 LDR     R0, =0x40086710\r
205                                 LDR     R1, =0x000000F3\r
206                                 STR     R1, [R0,#0]\r
207 \r
208                                 ENDIF\r
209 \r
210                 LDR     R0, =__main\r
211                 BX      R0\r
212                 ENDP\r
213 \r
214 ; Dummy Exception Handlers (infinite loops which can be modified)                \r
215 \r
216 NMI_Handler     PROC\r
217                 EXPORT  NMI_Handler               [WEAK]\r
218                 B       .\r
219                 ENDP\r
220 HardFault_Handler\\r
221                 PROC\r
222                 EXPORT  HardFault_Handler         [WEAK]\r
223                 B       .\r
224                 ENDP\r
225 MemManage_Handler\\r
226                 PROC\r
227                 EXPORT  MemManage_Handler         [WEAK]\r
228                 B       .\r
229                 ENDP\r
230 BusFault_Handler\\r
231                 PROC\r
232                 EXPORT  BusFault_Handler          [WEAK]\r
233                 B       .\r
234                 ENDP\r
235 UsageFault_Handler\\r
236                 PROC\r
237                 EXPORT  UsageFault_Handler        [WEAK]\r
238                 B       .\r
239                 ENDP\r
240 ; FreeRTOS handler\r
241 vPortSVCHandler\\r
242                         PROC\r
243                                 EXPORT  vPortSVCHandler         [WEAK]\r
244                 B       .\r
245                 ENDP\r
246 \r
247 SVC_Handler     PROC\r
248                 EXPORT  SVC_Handler               [WEAK]\r
249                 B       .\r
250                 ENDP\r
251 DebugMon_Handler\\r
252                 PROC\r
253                 EXPORT  DebugMon_Handler          [WEAK]\r
254                 B       .\r
255                 ENDP\r
256 \r
257 ; FreeRTOS handler\r
258 xPortPendSVHandler\\r
259                                 PROC\r
260                 EXPORT  xPortPendSVHandler      [WEAK]\r
261                 B       .\r
262                 ENDP\r
263 \r
264 PendSV_Handler  PROC\r
265                 EXPORT  PendSV_Handler      [WEAK]\r
266                 B       .\r
267                 ENDP\r
268 \r
269 ; FreeRTOS handler\r
270 xPortSysTickHandler\\r
271                                 PROC\r
272                 EXPORT  xPortSysTickHandler             [WEAK]\r
273                 B       .\r
274                 ENDP\r
275 \r
276 SysTick_Handler PROC\r
277                 EXPORT  SysTick_Handler           [WEAK]\r
278                 B       .\r
279                 ENDP\r
280 \r
281 Default_Handler PROC\r
282 \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
332 \r
333 \r
334 \r
335 \r
336 DAC_IRQHandler\r
337 M0_IRQHandler\r
338 DMA_IRQHandler\r
339 FLASH_EEPROM_IRQHandler\r
340 ETH_IRQHandler\r
341 SDIO_IRQHandler\r
342 LCD_IRQHandler\r
343 USB0_IRQHandler\r
344 USB1_IRQHandler\r
345 SCT_IRQHandler\r
346 RIT_IRQHandler\r
347 TIMER0_IRQHandler\r
348 TIMER1_IRQHandler\r
349 TIMER2_IRQHandler\r
350 TIMER3_IRQHandler\r
351 MCPWM_IRQHandler\r
352 ADC0_IRQHandler\r
353 I2C0_IRQHandler\r
354 I2C1_IRQHandler\r
355 SPI_IRQHandler\r
356 ADC1_IRQHandler\r
357 SSP0_IRQHandler\r
358 SSP1_IRQHandler\r
359 UART0_IRQHandler\r
360 UART1_IRQHandler\r
361 UART2_IRQHandler\r
362 UART3_IRQHandler\r
363 I2S0_IRQHandler\r
364 I2S1_IRQHandler\r
365 SPIFI_IRQHandler\r
366 SGPIO_IRQHandler\r
367 GPIO0_IRQHandler\r
368 GPIO1_IRQHandler\r
369 GPIO2_IRQHandler\r
370 GPIO3_IRQHandler\r
371 GPIO4_IRQHandler\r
372 GPIO5_IRQHandler\r
373 GPIO6_IRQHandler\r
374 GPIO7_IRQHandler\r
375 GINT0_IRQHandler\r
376 GINT1_IRQHandler\r
377 EVRT_IRQHandler\r
378 CAN1_IRQHandler\r
379 VADC_IRQHandler\r
380 ATIMER_IRQHandler\r
381 RTC_IRQHandler\r
382 WDT_IRQHandler\r
383 CAN0_IRQHandler\r
384 QEI_IRQHandler\r
385 \r
386                 B       .\r
387 \r
388                 ENDP\r
389 \r
390                 ALIGN\r
391 \r
392 ; User Initial Stack & Heap\r
393 \r
394                 IF      :DEF:__MICROLIB\r
395                 \r
396                 EXPORT  __initial_sp\r
397                 EXPORT  __heap_base\r
398                 EXPORT  __heap_limit\r
399                 \r
400                 ELSE\r
401                 \r
402                 IMPORT  __use_two_region_memory\r
403                 EXPORT  __user_initial_stackheap\r
404 __user_initial_stackheap\r
405 \r
406                 LDR     R0, =  Heap_Mem\r
407                 LDR     R1, =(Stack_Mem + Stack_Size)\r
408                 LDR     R2, = (Heap_Mem +  Heap_Size)\r
409                 LDR     R3, = Stack_Mem\r
410                 BX      LR\r
411 \r
412                 ALIGN\r
413 \r
414                 ENDIF\r
415 \r
416                 END\r