123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- ;/**************************************************************************//**
- ; * @file startup_ARMCM0.s
- ; * @brief CMSIS Core Device Startup File for
- ; * ARMCM0 Device
- ; * @version V1.0.1
- ; * @date 23. July 2019
- ; ******************************************************************************/
- ;/*
- ; * Copyright (c) 2009-2019 Arm Limited. All rights reserved.
- ; *
- ; * SPDX-License-Identifier: Apache-2.0
- ; *
- ; * Licensed under the Apache License, Version 2.0 (the License); you may
- ; * not use this file except in compliance with the License.
- ; * You may obtain a copy of the License at
- ; *
- ; * www.apache.org/licenses/LICENSE-2.0
- ; *
- ; * Unless required by applicable law or agreed to in writing, software
- ; * distributed under the License is distributed on an AS IS BASIS, WITHOUT
- ; * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ; * See the License for the specific language governing permissions and
- ; * limitations under the License.
- ; */
- ;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------
- ;<h> Stack Configuration
- ; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
- ;</h>
- Stack_Size EQU 0x00000400
- AREA STACK, NOINIT, READWRITE, ALIGN=3
- __stack_limit
- Stack_Mem SPACE Stack_Size
- __initial_sp
- ;<h> Heap Configuration
- ; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
- ;</h>
- Heap_Size EQU 0x00000C00
- IF Heap_Size != 0 ; Heap is provided
- AREA HEAP, NOINIT, READWRITE, ALIGN=3
- __heap_base
- Heap_Mem SPACE Heap_Size
- __heap_limit
- ENDIF
- 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 ; -14 NMI Handler
- DCD HardFault_Handler ; -13 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 ; -5 SVCall Handler
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD PendSV_Handler ; -2 PendSV Handler
- DCD SysTick_Handler ; -1 SysTick Handler
- ; Interrupts
- DCD Interrupt0_Handler ; 0 Interrupt 0
- DCD Interrupt1_Handler ; 1 Interrupt 1
- DCD Interrupt2_Handler ; 2 Interrupt 2
- DCD Interrupt3_Handler ; 3 Interrupt 3
- DCD Interrupt4_Handler ; 4 Interrupt 4
- DCD Interrupt5_Handler ; 5 Interrupt 5
- DCD Interrupt6_Handler ; 6 Interrupt 6
- DCD Interrupt7_Handler ; 7 Interrupt 7
- DCD Interrupt8_Handler ; 8 Interrupt 8
- DCD Interrupt9_Handler ; 9 Interrupt 9
- SPACE ( 22 * 4) ; Interrupts 10 .. 31 are left out
- __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
- ; The default macro is not used for HardFault_Handler
- ; because this results in a poor debug illusion.
- HardFault_Handler PROC
- EXPORT HardFault_Handler [WEAK]
- B .
- ENDP
- ; Macro to define default exception/interrupt handlers.
- ; Default handler are weak symbols with an endless loop.
- ; They can be overwritten by real handlers.
- MACRO
- Set_Default_Handler $Handler_Name
- $Handler_Name PROC
- EXPORT $Handler_Name [WEAK]
- B .
- ENDP
- MEND
- ; Default exception/interrupt handler
- Set_Default_Handler NMI_Handler
- Set_Default_Handler SVC_Handler
- Set_Default_Handler PendSV_Handler
- Set_Default_Handler SysTick_Handler
- Set_Default_Handler Interrupt0_Handler
- Set_Default_Handler Interrupt1_Handler
- Set_Default_Handler Interrupt2_Handler
- Set_Default_Handler Interrupt3_Handler
- Set_Default_Handler Interrupt4_Handler
- Set_Default_Handler Interrupt5_Handler
- Set_Default_Handler Interrupt6_Handler
- Set_Default_Handler Interrupt7_Handler
- Set_Default_Handler Interrupt8_Handler
- Set_Default_Handler Interrupt9_Handler
- ALIGN
- ; User setup Stack & Heap
- IF :LNOT::DEF:__MICROLIB
- IMPORT __use_two_region_memory
- ENDIF
- EXPORT __stack_limit
- EXPORT __initial_sp
- IF Heap_Size != 0 ; Heap is provided
- EXPORT __heap_base
- EXPORT __heap_limit
- ENDIF
- END
|