aboutsummaryrefslogtreecommitdiff
path: root/atmel-samd/asf4/samd21/samd21a/armcc
diff options
context:
space:
mode:
Diffstat (limited to 'atmel-samd/asf4/samd21/samd21a/armcc')
-rw-r--r--atmel-samd/asf4/samd21/samd21a/armcc/Device/SAMD21/Source/ARM/startup_SAMD21.s247
-rw-r--r--atmel-samd/asf4/samd21/samd21a/armcc/Device/SAMD21/Source/system_samd21.c78
2 files changed, 325 insertions, 0 deletions
diff --git a/atmel-samd/asf4/samd21/samd21a/armcc/Device/SAMD21/Source/ARM/startup_SAMD21.s b/atmel-samd/asf4/samd21/samd21a/armcc/Device/SAMD21/Source/ARM/startup_SAMD21.s
new file mode 100644
index 000000000..96ef2cdbb
--- /dev/null
+++ b/atmel-samd/asf4/samd21/samd21a/armcc/Device/SAMD21/Source/ARM/startup_SAMD21.s
@@ -0,0 +1,247 @@
+;/*****************************************************************************
+; * @file startup_SAMD21.s
+; * @brief CMSIS Cortex-M0+ Core Device Startup File for
+; * Atmel SAMD21 Device Series
+; * @version V1.01
+; * @date 25. March 2015
+; *
+; * @note
+; * Copyright (C) 2014 - 2015 ARM Limited. All rights reserved.
+; *
+; * @par
+; * ARM Limited (ARM) is supplying this software for use with Cortex-M
+; * processor based microcontrollers. This file can be freely distributed
+; * within development tools that are supporting such ARM based processors.
+; *
+; * @par
+; * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
+; * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
+; * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
+; * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
+; * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
+; *
+; ******************************************************************************/
+;/*
+;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------
+;*/
+
+
+; <h> Stack Configuration
+; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
+; </h>
+
+Stack_Size EQU 0x00000200
+
+ AREA STACK, NOINIT, READWRITE, ALIGN=3
+Stack_Mem SPACE Stack_Size
+__initial_sp
+
+
+; <h> Heap Configuration
+; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
+; </h>
+
+Heap_Size EQU 0x00000000
+
+ AREA HEAP, NOINIT, READWRITE, ALIGN=3
+__heap_base
+Heap_Mem SPACE Heap_Size
+__heap_limit
+
+
+ PRESERVE8
+ THUMB
+
+
+; Vector Table Mapped to Address 0 at Reset
+
+ AREA RESET, DATA, READONLY
+ EXPORT __Vectors
+ EXPORT __Vectors_End
+ EXPORT __Vectors_Size
+
+__Vectors DCD __initial_sp ; Top of Stack
+ DCD Reset_Handler ; Reset Handler
+ DCD NMI_Handler ; NMI Handler
+ DCD HardFault_Handler ; Hard Fault Handler
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD SVC_Handler ; SVCall Handler
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD PendSV_Handler ; PendSV Handler
+ DCD SysTick_Handler ; SysTick Handler
+
+ ; External Interrupts
+ DCD PM_Handler ; 0 Power Manager
+ DCD SYSCTRL_Handler ; 1 System Control
+ DCD WDT_Handler ; 2 Watchdog Timer
+ DCD RTC_Handler ; 3 Real-Time Counter
+ DCD EIC_Handler ; 4 External Interrupt Controller
+ DCD NVMCTRL_Handler ; 5 Non-Volatile Memory Controller
+ DCD DMAC_Handler ; 6 Direct Memory Access Controller
+ DCD USB_Handler ; 7 Universal Serial Bus
+ DCD EVSYS_Handler ; 8 Event System Interface
+ DCD SERCOM0_Handler ; 9 Serial Communication Interface 0
+ DCD SERCOM1_Handler ; 10 Serial Communication Interface 1
+ DCD SERCOM2_Handler ; 11 Serial Communication Interface 2
+ DCD SERCOM3_Handler ; 12 Serial Communication Interface 3
+ DCD SERCOM4_Handler ; 13 Serial Communication Interface 4
+ DCD SERCOM5_Handler ; 14 Serial Communication Interface 5
+ DCD TCC0_Handler ; 15 Timer Counter Control 0
+ DCD TCC1_Handler ; 16 Timer Counter Control 1
+ DCD TCC2_Handler ; 17 Timer Counter Control 2
+ DCD TC3_Handler ; 18 Basic Timer Counter 0
+ DCD TC4_Handler ; 19 Basic Timer Counter 1
+ DCD TC5_Handler ; 20 Basic Timer Counter 2
+ DCD TC6_Handler ; 21 Basic Timer Counter 3
+ DCD TC7_Handler ; 22 Basic Timer Counter 4
+ DCD ADC_Handler ; 23 Analog Digital Converter
+ DCD AC_Handler ; 24 Analog Comparators
+ DCD DAC_Handler ; 25 Digital Analog Converter
+ DCD PTC_Handler ; 26 Peripheral Touch Controller
+ DCD I2S_Handler ; 27 Inter-IC Sound Interface
+ DCD AC1_Handler ; 28 Analog Comparators 1
+__Vectors_End
+
+__Vectors_Size EQU __Vectors_End - __Vectors
+
+ AREA |.text|, CODE, READONLY
+
+
+; Reset Handler
+
+Reset_Handler PROC
+ EXPORT Reset_Handler [WEAK]
+ IMPORT SystemInit
+ IMPORT __main
+ LDR R0, =SystemInit
+ BLX R0
+ LDR R0, =__main
+ BX R0
+ ENDP
+
+
+; Dummy Exception Handlers (infinite loops which can be modified)
+
+NMI_Handler PROC
+ EXPORT NMI_Handler [WEAK]
+ B .
+ ENDP
+HardFault_Handler\
+ PROC
+ EXPORT HardFault_Handler [WEAK]
+ B .
+ ENDP
+SVC_Handler PROC
+ EXPORT SVC_Handler [WEAK]
+ B .
+ ENDP
+PendSV_Handler PROC
+ EXPORT PendSV_Handler [WEAK]
+ B .
+ ENDP
+SysTick_Handler PROC
+ EXPORT SysTick_Handler [WEAK]
+ B .
+ ENDP
+
+Default_Handler PROC
+ EXPORT PM_Handler [WEAK]
+ EXPORT PM_Handler [WEAK]
+ EXPORT SYSCTRL_Handler [WEAK]
+ EXPORT WDT_Handler [WEAK]
+ EXPORT RTC_Handler [WEAK]
+ EXPORT EIC_Handler [WEAK]
+ EXPORT NVMCTRL_Handler [WEAK]
+ EXPORT DMAC_Handler [WEAK]
+ EXPORT USB_Handler [WEAK]
+ EXPORT EVSYS_Handler [WEAK]
+ EXPORT SERCOM0_Handler [WEAK]
+ EXPORT SERCOM1_Handler [WEAK]
+ EXPORT SERCOM2_Handler [WEAK]
+ EXPORT SERCOM3_Handler [WEAK]
+ EXPORT SERCOM4_Handler [WEAK]
+ EXPORT SERCOM5_Handler [WEAK]
+ EXPORT TCC0_Handler [WEAK]
+ EXPORT TCC1_Handler [WEAK]
+ EXPORT TCC2_Handler [WEAK]
+ EXPORT TC3_Handler [WEAK]
+ EXPORT TC4_Handler [WEAK]
+ EXPORT TC5_Handler [WEAK]
+ EXPORT TC6_Handler [WEAK]
+ EXPORT TC7_Handler [WEAK]
+ EXPORT ADC_Handler [WEAK]
+ EXPORT AC_Handler [WEAK]
+ EXPORT DAC_Handler [WEAK]
+ EXPORT PTC_Handler [WEAK]
+ EXPORT I2S_Handler [WEAK]
+ EXPORT AC1_Handler [WEAK]
+
+PM_Handler
+SYSCTRL_Handler
+WDT_Handler
+RTC_Handler
+EIC_Handler
+NVMCTRL_Handler
+DMAC_Handler
+USB_Handler
+EVSYS_Handler
+SERCOM0_Handler
+SERCOM1_Handler
+SERCOM2_Handler
+SERCOM3_Handler
+SERCOM4_Handler
+SERCOM5_Handler
+TCC0_Handler
+TCC1_Handler
+TCC2_Handler
+TC3_Handler
+TC4_Handler
+TC5_Handler
+TC6_Handler
+TC7_Handler
+ADC_Handler
+AC_Handler
+DAC_Handler
+PTC_Handler
+I2S_Handler
+AC1_Handler
+ B .
+ ENDP
+
+
+ ALIGN
+
+
+; User Initial Stack & Heap
+
+ IF :DEF:__MICROLIB
+
+ EXPORT __initial_sp
+ EXPORT __heap_base
+ EXPORT __heap_limit
+
+ ELSE
+
+ IMPORT __use_two_region_memory
+ EXPORT __user_initial_stackheap
+__user_initial_stackheap
+
+ LDR R0, = Heap_Mem
+ LDR R1, =(Stack_Mem + Stack_Size)
+ LDR R2, = (Heap_Mem + Heap_Size)
+ LDR R3, = Stack_Mem
+ BX LR
+
+ ALIGN
+
+ ENDIF
+
+
+ END
diff --git a/atmel-samd/asf4/samd21/samd21a/armcc/Device/SAMD21/Source/system_samd21.c b/atmel-samd/asf4/samd21/samd21a/armcc/Device/SAMD21/Source/system_samd21.c
new file mode 100644
index 000000000..a4123b4e6
--- /dev/null
+++ b/atmel-samd/asf4/samd21/samd21a/armcc/Device/SAMD21/Source/system_samd21.c
@@ -0,0 +1,78 @@
+/**
+ * \file
+ *
+ * \brief Low-level initialization functions called upon chip startup.
+ *
+ * Copyright (c) 2015 Atmel Corporation. All rights reserved.
+ *
+ * \asf_license_start
+ *
+ * \page License
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * 3. The name of Atmel may not be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * 4. This software may only be redistributed and used in connection with an
+ * Atmel microcontroller product.
+ *
+ * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
+ * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ * \asf_license_stop
+ *
+ */
+
+#include "samd21.h"
+
+/**
+ * Initial system clock frequency. The System RC Oscillator (RCSYS) provides
+ * the source for the main clock at chip startup.
+ */
+#define __SYSTEM_CLOCK (1000000)
+
+uint32_t SystemCoreClock = __SYSTEM_CLOCK; /*!< System Clock Frequency (Core Clock)*/
+
+/**
+ * Initialize the system
+ *
+ * @brief Setup the microcontroller system.
+ * Initialize the System and update the SystemCoreClock variable.
+ */
+void SystemInit(void)
+{
+ // Keep the default device state after reset
+ SystemCoreClock = __SYSTEM_CLOCK;
+ return;
+}
+
+/**
+ * Update SystemCoreClock variable
+ *
+ * @brief Updates the SystemCoreClock with current core Clock
+ * retrieved from cpu registers.
+ */
+void SystemCoreClockUpdate(void)
+{
+ // Not implemented
+ SystemCoreClock = __SYSTEM_CLOCK;
+ return;
+}