; <<< Use Configuration Wizard in Context Menu >>> | |
;****************************************************************************** | |
; | |
; startup_rvmdk.S - Startup code for use with Keil's uVision. | |
; | |
; Copyright (c) 2007 Luminary Micro, Inc. All rights reserved. | |
; | |
; Software License Agreement | |
; | |
; Luminary Micro, Inc. (LMI) is supplying this software for use solely and | |
; exclusively on LMI's microcontroller products. | |
; | |
; The software is owned by LMI and/or its suppliers, and is protected under | |
; applicable copyright laws. All rights are reserved. Any use in violation | |
; of the foregoing restrictions may subject the user to criminal sanctions | |
; under applicable laws, as well as to civil liability for the breach of the | |
; terms and conditions of this license. | |
; | |
; 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. | |
; LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR | |
; CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. | |
; | |
; This is part of revision 1408 of the Stellaris Peripheral Driver Library. | |
; | |
;****************************************************************************** | |
;****************************************************************************** | |
; | |
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |
; | |
;****************************************************************************** | |
Stack EQU 0x00000800 | |
;****************************************************************************** | |
; | |
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |
; | |
;****************************************************************************** | |
Heap EQU 0x00000000 | |
;****************************************************************************** | |
; | |
; Allocate space for the stack. | |
; | |
;****************************************************************************** | |
AREA STACK, NOINIT, READWRITE, ALIGN=3 | |
StackMem | |
SPACE Stack | |
__initial_sp | |
;****************************************************************************** | |
; | |
; Allocate space for the heap. | |
; | |
;****************************************************************************** | |
AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |
__heap_base | |
HeapMem | |
SPACE Heap | |
__heap_limit | |
;****************************************************************************** | |
; | |
; Indicate that the code in this file preserves 8-byte alignment of the stack. | |
; | |
;****************************************************************************** | |
PRESERVE8 | |
;****************************************************************************** | |
; | |
; Place code into the reset code section. | |
; | |
;****************************************************************************** | |
AREA RESET, CODE, READONLY | |
THUMB | |
;****************************************************************************** | |
; | |
; The vector table. | |
; | |
;****************************************************************************** | |
EXPORT __Vectors | |
__Vectors | |
DCD StackMem + Stack ; Top of Stack | |
DCD Reset_Handler ; Reset Handler | |
DCD NmiSR ; NMI Handler | |
DCD FaultISR ; Hard Fault Handler | |
DCD IntDefaultHandler ; MPU Fault Handler | |
DCD IntDefaultHandler ; Bus Fault Handler | |
DCD IntDefaultHandler ; Usage Fault Handler | |
DCD 0 ; Reserved | |
DCD 0 ; Reserved | |
DCD 0 ; Reserved | |
DCD 0 ; Reserved | |
EXTERN vPortSVCHandler | |
DCD vPortSVCHandler ; SVCall Handler | |
DCD IntDefaultHandler ; Debug Monitor Handler | |
DCD 0 ; Reserved | |
EXTERN xPortPendSVHandler | |
DCD xPortPendSVHandler ; PendSV Handler | |
EXTERN xPortSysTickHandler | |
DCD xPortSysTickHandler ; SysTick Handler | |
DCD IntDefaultHandler ; GPIO Port A | |
DCD IntDefaultHandler ; GPIO Port B | |
DCD IntDefaultHandler ; GPIO Port C | |
DCD IntDefaultHandler ; GPIO Port D | |
DCD IntDefaultHandler ; GPIO Port E | |
DCD IntDefaultHandler ; UART0 | |
DCD IntDefaultHandler ; UART1 | |
DCD IntDefaultHandler ; SSI | |
DCD IntDefaultHandler ; I2C | |
DCD IntDefaultHandler ; PWM Fault | |
DCD IntDefaultHandler ; PWM Generator 0 | |
DCD IntDefaultHandler ; PWM Generator 1 | |
DCD IntDefaultHandler ; PWM Generator 2 | |
DCD IntDefaultHandler ; Quadrature Encoder | |
DCD IntDefaultHandler ; ADC Sequence 0 | |
DCD IntDefaultHandler ; ADC Sequence 1 | |
DCD IntDefaultHandler ; ADC Sequence 2 | |
DCD IntDefaultHandler ; ADC Sequence 3 | |
DCD IntDefaultHandler ; Watchdog | |
EXTERN Timer0IntHandler | |
DCD Timer0IntHandler ; Timer 0A | |
DCD IntDefaultHandler ; Timer 0B | |
DCD IntDefaultHandler ; Timer 1A | |
DCD IntDefaultHandler ; Timer 1B | |
EXTERN vT2InterruptHandler | |
DCD vT2InterruptHandler ; Timer 2A | |
DCD IntDefaultHandler ; Timer 2B | |
DCD IntDefaultHandler ; Comp 0 | |
DCD IntDefaultHandler ; Comp 1 | |
DCD IntDefaultHandler ; Comp 2 | |
DCD IntDefaultHandler ; System Control | |
DCD IntDefaultHandler ; Flash Control | |
DCD IntDefaultHandler ; GPIO Port F | |
DCD IntDefaultHandler ; GPIO Port G | |
DCD IntDefaultHandler ; GPIO Port H | |
DCD IntDefaultHandler ; UART2 Rx and Tx | |
DCD IntDefaultHandler ; SSI1 Rx and Tx | |
EXTERN vT3InterruptHandler | |
DCD vT3InterruptHandler ; Timer 3 subtimer A | |
DCD IntDefaultHandler ; Timer 3 subtimer B | |
DCD IntDefaultHandler ; I2C1 Master and Slave | |
DCD IntDefaultHandler ; Quadrature Encoder 1 | |
DCD IntDefaultHandler ; CAN0 | |
DCD IntDefaultHandler ; CAN1 | |
DCD 0 ; Reserved | |
EXTERN vEMAC_ISR | |
DCD vEMAC_ISR ; Ethernet | |
DCD IntDefaultHandler ; Hibernate | |
;****************************************************************************** | |
; | |
; This is the code that gets called when the processor first starts execution | |
; following a reset event. | |
; | |
;****************************************************************************** | |
EXPORT Reset_Handler | |
Reset_Handler | |
; | |
; Call the C library enty point that handles startup. This will copy | |
; the .data section initializers from flash to SRAM and zero fill the | |
; .bss section. It will then call __rt_entry, which will be either the | |
; C library version or the one supplied here depending on the | |
; configured startup type. | |
; | |
IMPORT __main | |
B __main | |
;****************************************************************************** | |
; | |
; This is the code that gets called when the processor receives a NMI. This | |
; simply enters an infinite loop, preserving the system state for examination | |
; by a debugger. | |
; | |
;****************************************************************************** | |
NmiSR | |
B NmiSR | |
;****************************************************************************** | |
; | |
; This is the code that gets called when the processor receives a fault | |
; interrupt. This simply enters an infinite loop, preserving the system state | |
; for examination by a debugger. | |
; | |
;****************************************************************************** | |
FaultISR | |
B FaultISR | |
;****************************************************************************** | |
; | |
; This is the code that gets called when the processor receives an unexpected | |
; interrupt. This simply enters an infinite loop, preserving the system state | |
; for examination by a debugger. | |
; | |
;****************************************************************************** | |
IntDefaultHandler | |
B IntDefaultHandler | |
;****************************************************************************** | |
; | |
; Make sure the end of this section is aligned. | |
; | |
;****************************************************************************** | |
ALIGN | |
;****************************************************************************** | |
; | |
; Some code in the normal code section for initializing the heap and stack. | |
; | |
;****************************************************************************** | |
AREA |.text|, CODE, READONLY | |
;****************************************************************************** | |
; | |
; The function expected of the C library startup code for defining the stack | |
; and heap memory locations. For the C library version of the startup code, | |
; provide this function so that the C library initialization code can find out | |
; the location of the stack and 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, =HeapMem | |
LDR R1, =(StackMem + Stack) | |
LDR R2, =(HeapMem + Heap) | |
LDR R3, =StackMem | |
BX LR | |
ENDIF | |
;****************************************************************************** | |
; | |
; Make sure the end of this section is aligned. | |
; | |
;****************************************************************************** | |
ALIGN | |
;****************************************************************************** | |
; | |
; Tell the assembler that we're done. | |
; | |
;****************************************************************************** | |
END |