www.pudn.com > ARM-Cortex-M3.zip > Startup.s, change:2007-07-13,size:9147b


; <<< Use Configuration Wizard in Context Menu >>> 
;****************************************************************************** 
; 
; Startup.s - Startup code for Stellaris. 
; 
; Copyright (c) 2006 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 Stellaris Family of 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 852 of the Stellaris Driver Library. 
; 
;****************************************************************************** 
 
;****************************************************************************** 
; 
; <h> Stack Configuration 
;   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> 
; </h> 
; 
;****************************************************************************** 
Stack   EQU     0x00000100 
 
;****************************************************************************** 
; 
; <h> Heap Configuration 
;   <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> 
; </h> 
; 
;****************************************************************************** 
Heap    EQU     0x00000000 
 
;****************************************************************************** 
; 
; Allocate space for the stack. 
; 
;****************************************************************************** 
        AREA    STACK, NOINIT, READWRITE, ALIGN=3 
StackMem 
        SPACE   Stack 
 
;****************************************************************************** 
; 
; Allocate space for the heap. 
; 
;****************************************************************************** 
        AREA    HEAP, NOINIT, READWRITE, ALIGN=3 
HeapMem 
        SPACE   Heap 
 
;****************************************************************************** 
; 
; 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 
        DCD     IntDefaultHandler           ; SVCall Handler 
        DCD     IntDefaultHandler           ; Debug Monitor Handler 
        DCD     0                           ; Reserved 
        DCD     IntDefaultHandler           ; PendSV Handler 
        DCD     IntDefaultHandler           ; 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 
        DCD     IntDefaultHandler           ; Timer 0A 
        DCD     IntDefaultHandler           ; Timer 0B 
        DCD     IntDefaultHandler           ; Timer 1A 
        DCD     IntDefaultHandler           ; Timer 1B 
        DCD     IntDefaultHandler           ; 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 
 
;****************************************************************************** 
; 
; This is the code that gets called when the processor first starts execution 
; following a reset event. 
; 
;****************************************************************************** 
        EXPORT  Reset_Handler 
Reset_Handler 
        ; 
        ; Call __main() in the C library, which will call the application 
        ; supplied main(). 
        ; 
        IMPORT  __main 
        LDR     R0, =__main 
        BX      R0 
 
;****************************************************************************** 
; 
; 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. 
; 
;****************************************************************************** 
        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 
 
;****************************************************************************** 
; 
; Make sure the end of this section is aligned. 
; 
;****************************************************************************** 
        ALIGN 
 
;****************************************************************************** 
; 
; Tell the assembler that we're done. 
; 
;****************************************************************************** 
        END