| ;/*****************************************************************************/ | |
| ;/* STARTUP.S: Startup file for Luminary Micro LM3Sxxx */ | |
| ;/*****************************************************************************/ | |
| ;/* <<< Use Configuration Wizard in Context Menu >>> */ | |
| ;/*****************************************************************************/ | |
| ;/* This file is part of the uVision/ARM development tools. */ | |
| ;/* Copyright (c) 2005-2006 Keil Software. All rights reserved. */ | |
| ;/* This software may only be used under the terms of a valid, current, */ | |
| ;/* end user licence from KEIL for a compatible version of KEIL software */ | |
| ;/* development tools. Nothing else gives you the right to use this software. */ | |
| ;/*****************************************************************************/ | |
| ;/* | |
| ; * The STARTUP.S code is executed after CPU Reset. | |
| ; */ | |
| ;// <h> Stack Configuration | |
| ;// <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> | |
| ;// </h> | |
| Stack_Size EQU 51 | |
| AREA STACK, NOINIT, READWRITE, ALIGN=3 | |
| Stack_Mem SPACE Stack_Size | |
| ;// <h> Heap Configuration | |
| ;// <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> | |
| ;// </h> | |
| Heap_Size EQU 0x00000000 | |
| AREA HEAP, NOINIT, READWRITE, ALIGN=3 | |
| Heap_Mem SPACE Heap_Size | |
| ; System Control Register Addresses | |
| SYSCTL_BASE EQU 0x400FE000 ; System Control Base Address | |
| PBORCTL_OFS EQU 0x0030 ; Power-On & Brown-Out Reset Control | |
| LDOPC_OFS EQU 0x0034 ; LDO Power | |
| SRCR0_OFS EQU 0x0040 ; Software Reset Control 0 | |
| SRCR1_OFS EQU 0x0044 ; Software Reset Control 1 | |
| SRCR2_OFS EQU 0x0048 ; Software Reset Control 2 | |
| RCC_OFS EQU 0x0060 ; Run-Mode Clock Control | |
| RCGC0_OFS EQU 0x0100 ; Run-Mode Clock Gating Control 0 | |
| RCGC1_OFS EQU 0x0104 ; Run-Mode Clock Gating Control 1 | |
| RCGC2_OFS EQU 0x0108 ; Run-Mode Clock Gating Control 2 | |
| SCGC0_OFS EQU 0x0110 ; Sleep-Mode Clock Gating Control 0 | |
| SCGC1_OFS EQU 0x0114 ; Sleep-Mode Clock Gating Control 1 | |
| SCGC2_OFS EQU 0x0118 ; Sleep-Mode Clock Gating Control 2 | |
| DCGC0_OFS EQU 0x0120 ; Deep-Sleep-Mode Clock Gating Control 0 | |
| DCGC1_OFS EQU 0x0124 ; Deep-Sleep-Mode Clock Gating Control 1 | |
| DCGC2_OFS EQU 0x0128 ; Deep-Sleep-Mode Clock Gating Control 2 | |
| PRESERVE8 | |
| ; Area Definition and Entry Point | |
| ; Startup Code must be linked first at Address 0. | |
| AREA RESET, CODE, READONLY | |
| THUMB | |
| IMPORT xPortPendSVHandler | |
| IMPORT xPortSysTickHandler | |
| IMPORT vUART_ISR | |
| IMPORT vPortSVCHandler | |
| ; Vector Table | |
| EXPORT __Vectors | |
| __Vectors DCD Stack_Mem + Stack_Size ; Top of Stack | |
| DCD Reset_Handler ; Reset Handler | |
| DCD NmiSR ; NMI Handler | |
| DCD DefaultISR ; Hard Fault Handler | |
| DCD DefaultISR ; MPU Fault Handler | |
| DCD DefaultISR ; Bus Fault Handler | |
| DCD DefaultISR ; Usage Fault Handler | |
| DCD 0 ; Reserved | |
| DCD 0 ; Reserved | |
| DCD 0 ; Reserved | |
| DCD 0 ; Reserved | |
| DCD vPortSVCHandler ; SVCall Handler | |
| DCD DefaultISR ; Debug Monitor Handler | |
| DCD 0 ; Reserved | |
| DCD xPortPendSVHandler ; PendSV Handler | |
| DCD xPortSysTickHandler ; SysTick Handler | |
| DCD DefaultISR ; GPIO Port A Handler | |
| DCD DefaultISR ; GPIO Port B Handler | |
| DCD DefaultISR ; GPIO Port C Handler | |
| DCD DefaultISR ; GPIO Port D Handler | |
| DCD DefaultISR ; GPIO Port E Handler | |
| DCD vUART_ISR ; UART0 Rx/Tx Handler | |
| DCD DefaultISR ; UART1 Rx/Tx Handler | |
| DCD DefaultISR ; SSI Rx/Tx Handler | |
| DCD DefaultISR ; I2C Master/Slave Handler | |
| DCD DefaultISR ; PWM Fault Handler | |
| DCD DefaultISR ; PWM Generator 0 Handler | |
| DCD DefaultISR ; PWM Generator 1 Handler | |
| DCD DefaultISR ; PWM Generator 2 Handler | |
| DCD DefaultISR ; Quadrature Encoder Handler | |
| DCD DefaultISR ; ADC Sequence 0 Handler | |
| DCD DefaultISR ; ADC Sequence 1 Handler | |
| DCD DefaultISR ; ADC Sequence 2 Handler | |
| DCD DefaultISR ; ADC Sequence 3 Handler | |
| DCD DefaultISR ; Watchdog Timer Handler | |
| DCD DefaultISR ; Timer 0 Subtimer A Handler | |
| DCD DefaultISR ; Timer 0 Subtimer B Handler | |
| DCD DefaultISR ; Timer 1 Subtimer A Handler | |
| DCD DefaultISR ; Timer 1 Subtimer B Handler | |
| DCD DefaultISR ; Timer 2 Subtimer A Handler | |
| DCD DefaultISR ; Timer 2 Subtimer B Handler | |
| DCD DefaultISR ; Analog Comparator 0 Handler | |
| DCD DefaultISR ; Analog Comparator 1 Handler | |
| DCD DefaultISR ; Analog Comparator 2 Handler | |
| DCD DefaultISR ; System Control Handler | |
| DCD DefaultISR ; Flash Control Handler | |
| ; Dummy Handlers are implemented as infinite loops which can be modified. | |
| NmiSR B NmiSR | |
| FaultISR B FaultISR | |
| EXPORT FaultISR | |
| DefaultISR B DefaultISR | |
| ; Reset Handler | |
| EXPORT Reset_Handler | |
| Reset_Handler | |
| ; Enable Clock Gating for Peripherals | |
| ; LDR R0, =SYSCTL_BASE ; System Control Base Address | |
| ; MVN R1, #0 ; Value 0xFFFFFFFF | |
| ; STR R1, [R0,#RCGC0_OFS] ; Run-Mode Clock Gating Ctrl 0 | |
| ; STR R1, [R0,#RCGC1_OFS] ; Run-Mode Clock Gating Ctrl 1 | |
| ; STR R1, [R0,#RCGC2_OFS] ; Run-Mode Clock Gating Ctrl 2 | |
| ; Enter the C code | |
| IMPORT __main | |
| LDR R0, =__main | |
| BX R0 | |
| ; User Initial Stack & Heap | |
| AREA |.text|, CODE, READONLY | |
| 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 | |
| END |