| ; <<< 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 |