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