1 ;/*****************************************************************************
\r
2 ; * @file: startup_MPS_CM4.s
\r
3 ; * @purpose: CMSIS Cortex-M4 Core Device Startup File
\r
4 ; * for the ARM 'Microcontroller Prototyping System'
\r
6 ; * @date: 1. Jun. 2010
\r
7 ; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------
\r
9 ; * Copyright (C) 2008-2010 ARM Limited. All rights reserved.
\r
10 ; * ARM Limited (ARM) is supplying this software for use with Cortex-M4
\r
11 ; * processor based microcontrollers. This file can be freely distributed
\r
12 ; * within development tools that are supporting such ARM based processors.
\r
14 ; * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
\r
15 ; * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
\r
16 ; * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
\r
17 ; * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
\r
18 ; * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
\r
20 ; ****************************************************************************/
\r
23 ; <h> Stack Configuration
\r
24 ; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
\r
26 Stack_Size EQU 0x00000800
\r
28 AREA STACK, NOINIT, READWRITE, ALIGN=3
\r
29 Stack_Mem SPACE Stack_Size
\r
33 ; <h> Heap Configuration
\r
34 ; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
\r
37 Heap_Size EQU 0x00000000
\r
39 AREA HEAP, NOINIT, READWRITE, ALIGN=3
\r
41 Heap_Mem SPACE Heap_Size
\r
49 ; Vector Table Mapped to Address 0 at Reset
\r
51 AREA RESET, DATA, READONLY
\r
54 __Vectors DCD __initial_sp ; Top of Stack
\r
55 DCD Reset_Handler ; Reset Handler
\r
56 DCD NMI_Handler ; NMI Handler
\r
57 DCD HardFault_Handler ; Hard Fault Handler
\r
58 DCD MemManage_Handler ; MPU Fault Handler
\r
59 DCD BusFault_Handler ; Bus Fault Handler
\r
60 DCD UsageFault_Handler ; Usage Fault Handler
\r
65 DCD SVC_Handler ; SVCall Handler
\r
66 DCD DebugMon_Handler ; Debug Monitor Handler
\r
68 DCD PendSV_Handler ; PendSV Handler
\r
69 DCD SysTick_Handler ; SysTick Handler
\r
72 AREA |.text|, CODE, READONLY
\r
73 ; AREA RESET, CODE, READONLY
\r
78 EXPORT Reset_Handler [WEAK]
\r
81 ; Remap vector table
\r
87 IF {CPU} = "Cortex-M4.fp"
\r
88 LDR R0, =0xE000ED88 ; Enable CP10,CP11
\r
90 ORR R1,R1,#(0xF << 20)
\r
99 ; Dummy Exception Handlers (infinite loops which can be modified)
\r
102 EXPORT NMI_Handler [WEAK]
\r
107 EXPORT HardFault_Handler [WEAK]
\r
112 EXPORT MemManage_Handler [WEAK]
\r
117 EXPORT BusFault_Handler [WEAK]
\r
120 UsageFault_Handler\
\r
122 EXPORT UsageFault_Handler [WEAK]
\r
126 EXPORT SVC_Handler [WEAK]
\r
131 EXPORT DebugMon_Handler [WEAK]
\r
134 PendSV_Handler PROC
\r
135 EXPORT PendSV_Handler [WEAK]
\r
138 SysTick_Handler PROC
\r
139 EXPORT SysTick_Handler [WEAK]
\r
147 ; User Initial Stack & Heap
\r
151 EXPORT __initial_sp
\r
153 EXPORT __heap_limit
\r
157 IMPORT __use_two_region_memory
\r
158 EXPORT __user_initial_stackheap
\r
159 __user_initial_stackheap
\r
162 LDR R1, =(Stack_Mem + Stack_Size)
\r
163 LDR R2, = (Heap_Mem + Heap_Size)
\r
164 LDR R3, = Stack_Mem
\r