1;/*****************************************************************************
2; * @file     startup_SAMD20.s
3; * @brief    CMSIS Cortex-M0+ Core Device Startup File
4; *           for the Atmel SSAMD20 Device Series
5; * @version  V1.01
6; * @date     26. March 2014
7; *
8; * @note
9; * Copyright (C) 2014 ARM Limited. All rights reserved.
10; *
11; * @par
12; * ARM Limited (ARM) is supplying this software for use with Cortex-M
13; * processor based microcontrollers.  This file can be freely distributed
14; * within development tools that are supporting such ARM based processors.
15; *
16; * @par
17; * THIS SOFTWARE IS PROVIDED "AS IS".  NO WARRANTIES, WHETHER EXPRESS, IMPLIED
18; * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
19; * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
20; * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
21; * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
22; *
23; ******************************************************************************/
24;/*
25;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------
26;*/
27
28
29; <h> Stack Configuration
30;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
31; </h>
32
33Stack_Size      EQU     0x00000200
34
35                AREA    STACK, NOINIT, READWRITE, ALIGN=3
36Stack_Mem       SPACE   Stack_Size
37__initial_sp
38
39
40; <h> Heap Configuration
41;   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
42; </h>
43
44Heap_Size       EQU     0x00000000
45
46                AREA    HEAP, NOINIT, READWRITE, ALIGN=3
47__heap_base
48Heap_Mem        SPACE   Heap_Size
49__heap_limit
50
51
52                PRESERVE8
53                THUMB
54
55
56; Vector Table Mapped to Address 0 at Reset
57
58                AREA    RESET, DATA, READONLY
59                EXPORT  __Vectors
60                EXPORT  __Vectors_End
61                EXPORT  __Vectors_Size
62
63__Vectors       DCD     __initial_sp              ; Top of Stack
64                DCD     Reset_Handler             ; Reset Handler
65                DCD     NMI_Handler               ; NMI Handler
66                DCD     HardFault_Handler         ; Hard Fault Handler
67                DCD     0                         ; Reserved
68                DCD     0                         ; Reserved
69                DCD     0                         ; Reserved
70                DCD     0                         ; Reserved
71                DCD     0                         ; Reserved
72                DCD     0                         ; Reserved
73                DCD     0                         ; Reserved
74                DCD     SVC_Handler               ; SVCall Handler
75                DCD     0                         ; Reserved
76                DCD     0                         ; Reserved
77                DCD     PendSV_Handler            ; PendSV Handler
78                DCD     SysTick_Handler           ; SysTick Handler
79
80                ; External Interrupts
81                DCD     PM_Handler                ;  0 Power Manager
82                DCD     SYSCTRL_Handler           ;  1 System Control
83                DCD     WDT_Handler               ;  2 Watchdog Timer
84                DCD     RTC_Handler               ;  3 Real-Time Counter
85                DCD     EIC_Handler               ;  4 External Interrupt Controller
86                DCD     NVMCTRL_Handler           ;  5 Non-Volatile Memory Controller
87                DCD     EVSYS_Handler             ;  6 Event System Interface
88                DCD     SERCOM0_Handler           ;  7 Serial Communication Interface 0
89                DCD     SERCOM1_Handler           ;  8 Serial Communication Interface 1
90                DCD     SERCOM2_Handler           ;  9 Serial Communication Interface 2
91                DCD     SERCOM3_Handler           ; 10 Serial Communication Interface 3
92                DCD     SERCOM4_Handler           ; 11 Serial Communication Interface 4
93                DCD     SERCOM5_Handler           ; 12 Serial Communication Interface 5
94                DCD     TC0_Handler               ; 13 Basic Timer Counter 0
95                DCD     TC1_Handler               ; 14 Basic Timer Counter 1
96                DCD     TC2_Handler               ; 15 Basic Timer Counter 2
97                DCD     TC3_Handler               ; 16 Basic Timer Counter 3
98                DCD     TC4_Handler               ; 17 Basic Timer Counter 4
99                DCD     TC5_Handler               ; 18 Basic Timer Counter 5
100                DCD     TC6_Handler               ; 19 Basic Timer Counter 6
101                DCD     TC7_Handler               ; 20 Basic Timer Counter 7
102                DCD     ADC_Handler               ; 21 Analog Digital Converter
103                DCD     AC_Handler                ; 22 Analog Comparators
104                DCD     DAC_Handler               ; 23 Digital Analog Converter
105                DCD     PTC_Handler               ; 24 Peripheral Touch Controller
106__Vectors_End
107
108__Vectors_Size  EQU     __Vectors_End - __Vectors
109
110                AREA    |.text|, CODE, READONLY
111
112
113; Reset Handler
114
115Reset_Handler   PROC
116                EXPORT  Reset_Handler             [WEAK]
117                IMPORT  SystemInit
118                IMPORT  __main
119                LDR     R0, =SystemInit
120                BLX     R0
121                LDR     R0, =__main
122                BX      R0
123                ENDP
124
125
126; Dummy Exception Handlers (infinite loops which can be modified)
127
128NMI_Handler     PROC
129                EXPORT  NMI_Handler               [WEAK]
130                B       .
131                ENDP
132HardFault_Handler\
133                PROC
134                EXPORT  HardFault_Handler         [WEAK]
135                B       .
136                ENDP
137SVC_Handler     PROC
138                EXPORT  SVC_Handler               [WEAK]
139                B       .
140                ENDP
141PendSV_Handler  PROC
142                EXPORT  PendSV_Handler            [WEAK]
143                B       .
144                ENDP
145SysTick_Handler PROC
146                EXPORT  SysTick_Handler           [WEAK]
147                B       .
148                ENDP
149
150Default_Handler PROC
151
152                EXPORT  PM_Handler                [WEAK]
153                EXPORT  SYSCTRL_Handler           [WEAK]
154                EXPORT  WDT_Handler               [WEAK]
155                EXPORT  RTC_Handler               [WEAK]
156                EXPORT  EIC_Handler               [WEAK]
157                EXPORT  NVMCTRL_Handler           [WEAK]
158                EXPORT  EVSYS_Handler             [WEAK]
159                EXPORT  SERCOM0_Handler           [WEAK]
160                EXPORT  SERCOM1_Handler           [WEAK]
161                EXPORT  SERCOM2_Handler           [WEAK]
162                EXPORT  SERCOM3_Handler           [WEAK]
163                EXPORT  SERCOM4_Handler           [WEAK]
164                EXPORT  SERCOM5_Handler           [WEAK]
165                EXPORT  TC0_Handler               [WEAK]
166                EXPORT  TC1_Handler               [WEAK]
167                EXPORT  TC2_Handler               [WEAK]
168                EXPORT  TC3_Handler               [WEAK]
169                EXPORT  TC4_Handler               [WEAK]
170                EXPORT  TC5_Handler               [WEAK]
171                EXPORT  TC6_Handler               [WEAK]
172                EXPORT  TC7_Handler               [WEAK]
173                EXPORT  ADC_Handler               [WEAK]
174                EXPORT  AC_Handler                [WEAK]
175                EXPORT  DAC_Handler               [WEAK]
176                EXPORT  PTC_Handler               [WEAK]
177
178PM_Handler
179SYSCTRL_Handler
180WDT_Handler
181RTC_Handler
182EIC_Handler
183NVMCTRL_Handler
184EVSYS_Handler
185SERCOM0_Handler
186SERCOM1_Handler
187SERCOM2_Handler
188SERCOM3_Handler
189SERCOM4_Handler
190SERCOM5_Handler
191TC0_Handler
192TC1_Handler
193TC2_Handler
194TC3_Handler
195TC4_Handler
196TC5_Handler
197TC6_Handler
198TC7_Handler
199ADC_Handler
200AC_Handler
201DAC_Handler
202PTC_Handler
203                B       .
204                ENDP
205
206
207                ALIGN
208
209
210; User Initial Stack & Heap
211
212                IF      :DEF:__MICROLIB
213
214                EXPORT  __initial_sp
215                EXPORT  __heap_base
216                EXPORT  __heap_limit
217
218                ELSE
219
220                IMPORT  __use_two_region_memory
221                EXPORT  __user_initial_stackheap
222__user_initial_stackheap
223
224                LDR     R0, =  Heap_Mem
225                LDR     R1, =(Stack_Mem + Stack_Size)
226                LDR     R2, = (Heap_Mem +  Heap_Size)
227                LDR     R3, = Stack_Mem
228                BX      LR
229
230                ALIGN
231
232                ENDIF
233
234
235                END
236