]> git.sur5r.net Git - freertos/blob - Demo/CORTEX_LM3S102_KEIL/init/Startup.s
First version under SVN is V4.0.1
[freertos] / Demo / CORTEX_LM3S102_KEIL / init / Startup.s
1 ;/*****************************************************************************/\r
2 ;/* STARTUP.S: Startup file for Luminary Micro LM3Sxxx                        */\r
3 ;/*****************************************************************************/\r
4 ;/* <<< Use Configuration Wizard in Context Menu >>>                          */ \r
5 ;/*****************************************************************************/\r
6 ;/* This file is part of the uVision/ARM development tools.                   */\r
7 ;/* Copyright (c) 2005-2006 Keil Software. All rights reserved.               */\r
8 ;/* This software may only be used under the terms of a valid, current,       */\r
9 ;/* end user licence from KEIL for a compatible version of KEIL software      */\r
10 ;/* development tools. Nothing else gives you the right to use this software. */\r
11 ;/*****************************************************************************/\r
12 \r
13 \r
14 ;/*\r
15 ; *  The STARTUP.S code is executed after CPU Reset. \r
16 ; */\r
17 \r
18 \r
19 ;// <h> Stack Configuration\r
20 ;//   <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>\r
21 ;// </h>\r
22 \r
23 Stack_Size      EQU     51\r
24 \r
25                 AREA    STACK, NOINIT, READWRITE, ALIGN=3\r
26 Stack_Mem       SPACE   Stack_Size\r
27 \r
28 \r
29 ;// <h> Heap Configuration\r
30 ;//   <o>  Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>\r
31 ;// </h>\r
32 \r
33 Heap_Size       EQU     0x00000000\r
34 \r
35                 AREA    HEAP, NOINIT, READWRITE, ALIGN=3\r
36 Heap_Mem        SPACE   Heap_Size\r
37 \r
38 \r
39 ; System Control Register Addresses\r
40 SYSCTL_BASE     EQU     0x400FE000      ; System Control Base Address\r
41 PBORCTL_OFS     EQU     0x0030          ; Power-On & Brown-Out Reset Control\r
42 LDOPC_OFS       EQU     0x0034          ; LDO Power\r
43 SRCR0_OFS       EQU     0x0040          ; Software Reset Control 0\r
44 SRCR1_OFS       EQU     0x0044          ; Software Reset Control 1\r
45 SRCR2_OFS       EQU     0x0048          ; Software Reset Control 2\r
46 RCC_OFS         EQU     0x0060          ; Run-Mode Clock Control\r
47 RCGC0_OFS       EQU     0x0100          ; Run-Mode Clock Gating Control 0\r
48 RCGC1_OFS       EQU     0x0104          ; Run-Mode Clock Gating Control 1\r
49 RCGC2_OFS       EQU     0x0108          ; Run-Mode Clock Gating Control 2\r
50 SCGC0_OFS       EQU     0x0110          ; Sleep-Mode Clock Gating Control 0\r
51 SCGC1_OFS       EQU     0x0114          ; Sleep-Mode Clock Gating Control 1\r
52 SCGC2_OFS       EQU     0x0118          ; Sleep-Mode Clock Gating Control 2\r
53 DCGC0_OFS       EQU     0x0120          ; Deep-Sleep-Mode Clock Gating Control 0\r
54 DCGC1_OFS       EQU     0x0124          ; Deep-Sleep-Mode Clock Gating Control 1\r
55 DCGC2_OFS       EQU     0x0128          ; Deep-Sleep-Mode Clock Gating Control 2\r
56 \r
57 \r
58                 PRESERVE8\r
59                 \r
60 \r
61 ; Area Definition and Entry Point\r
62 ;  Startup Code must be linked first at Address 0.\r
63 \r
64                 AREA    RESET, CODE, READONLY\r
65                 THUMB\r
66 \r
67                                 IMPORT  xPortPendSVHandler\r
68                                 IMPORT  xPortSysTickHandler\r
69                                 IMPORT  vUART_ISR\r
70 \r
71 ; Vector Table\r
72 Vectors         DCD     Stack_Mem + Stack_Size  ; Top of Stack\r
73                 DCD     Reset_Handler                   ; Reset Handler\r
74                 DCD     NmiSR                           ; NMI Handler\r
75                 DCD     DefaultISR                      ; Hard Fault Handler\r
76                 DCD     DefaultISR                      ; MPU Fault Handler\r
77                 DCD     DefaultISR                      ; Bus Fault Handler\r
78                 DCD     DefaultISR                      ; Usage Fault Handler\r
79                 DCD     0                       ; Reserved\r
80                 DCD     0                       ; Reserved\r
81                 DCD     0                       ; Reserved\r
82                 DCD     0                       ; Reserved\r
83                 DCD     0                                       ; SVCall Handler\r
84                 DCD     DefaultISR                      ; Debug Monitor Handler\r
85                 DCD     0                       ; Reserved\r
86                 DCD     xPortPendSVHandler      ; PendSV Handler\r
87                 DCD     xPortSysTickHandler     ; SysTick Handler\r
88                 DCD     DefaultISR              ; GPIO Port A Handler\r
89                 DCD     DefaultISR              ; GPIO Port B Handler\r
90                 DCD     DefaultISR              ; GPIO Port C Handler\r
91                 DCD     DefaultISR              ; GPIO Port D Handler\r
92                 DCD     DefaultISR              ; GPIO Port E Handler\r
93                 DCD     vUART_ISR                       ; UART0 Rx/Tx Handler\r
94                 DCD     DefaultISR              ; UART1 Rx/Tx Handler\r
95                 DCD     DefaultISR              ; SSI Rx/Tx Handler\r
96                 DCD     DefaultISR              ; I2C Master/Slave Handler\r
97                 DCD     DefaultISR         ; PWM Fault Handler\r
98                 DCD     DefaultISR         ; PWM Generator 0 Handler\r
99                 DCD     DefaultISR         ; PWM Generator 1 Handler\r
100                 DCD     DefaultISR         ; PWM Generator 2 Handler\r
101                 DCD     DefaultISR         ; Quadrature Encoder Handler\r
102                 DCD     DefaultISR         ; ADC Sequence 0 Handler\r
103                 DCD     DefaultISR         ; ADC Sequence 1 Handler\r
104                 DCD     DefaultISR         ; ADC Sequence 2 Handler\r
105                 DCD     DefaultISR         ; ADC Sequence 3 Handler\r
106                 DCD     DefaultISR         ; Watchdog Timer Handler\r
107                 DCD     DefaultISR         ; Timer 0 Subtimer A Handler\r
108                 DCD     DefaultISR         ; Timer 0 Subtimer B Handler\r
109                 DCD     DefaultISR         ; Timer 1 Subtimer A Handler\r
110                 DCD     DefaultISR         ; Timer 1 Subtimer B Handler\r
111                 DCD     DefaultISR         ; Timer 2 Subtimer A Handler\r
112                 DCD     DefaultISR         ; Timer 2 Subtimer B Handler\r
113                 DCD     DefaultISR         ; Analog Comparator 0 Handler\r
114                 DCD     DefaultISR         ; Analog Comparator 1 Handler\r
115                 DCD     DefaultISR         ; Analog Comparator 2 Handler\r
116                 DCD     DefaultISR         ; System Control Handler\r
117                 DCD     DefaultISR         ; Flash Control Handler\r
118 \r
119 ; Dummy Handlers are implemented as infinite loops which can be modified.\r
120 \r
121 NmiSR                   B       NmiSR\r
122 FaultISR                B               FaultISR\r
123                                 EXPORT FaultISR\r
124 DefaultISR              B       DefaultISR\r
125 \r
126 \r
127 ; Reset Handler\r
128 \r
129                 EXPORT  Reset_Handler\r
130 Reset_Handler   \r
131 \r
132 ; Enable Clock Gating for Peripherals\r
133 ;                LDR     R0, =SYSCTL_BASE        ; System Control Base Address\r
134 ;                MVN     R1, #0                  ; Value 0xFFFFFFFF\r
135 ;                STR     R1, [R0,#RCGC0_OFS]     ; Run-Mode Clock Gating Ctrl 0\r
136 ;                STR     R1, [R0,#RCGC1_OFS]     ; Run-Mode Clock Gating Ctrl 1\r
137 ;                STR     R1, [R0,#RCGC2_OFS]     ; Run-Mode Clock Gating Ctrl 2\r
138 \r
139 ; Enter the C code\r
140 \r
141                 IMPORT  __main\r
142                 LDR     R0, =__main\r
143                 BX      R0\r
144 \r
145 \r
146 ; User Initial Stack & Heap\r
147                 AREA    |.text|, CODE, READONLY\r
148 \r
149                 IMPORT  __use_two_region_memory\r
150                 EXPORT  __user_initial_stackheap\r
151 __user_initial_stackheap\r
152 \r
153                 LDR     R0, =  Heap_Mem\r
154                 LDR     R1, =(Stack_Mem + Stack_Size)\r
155                 LDR     R2, = (Heap_Mem +  Heap_Size)\r
156                 LDR     R3, = Stack_Mem\r
157                 BX      LR\r
158 \r
159                 ALIGN\r
160 \r
161 \r
162                 END\r