![]() |
Energy Micro IEC60355 Library Example Project 1.0 (internal use only!) GCC-Version
Example project demonstrating POST and BIST library functions
|
00001 ;/***************************************************************************** 00002 ; * @file: startup_efm32.s 00003 ; * @purpose: CMSIS Cortex-M3 Core Device Startup File 00004 ; * for the Energy Micro EFM32 device series 00005 ; * @version 1.3.0 00006 ; * @date: 7. September 2010 00007 ; *------- <<< Use Configuration Wizard in Context Menu >>> ------------------ 00008 ; * 00009 ; * Copyright (C) 2008 ARM Limited. All rights reserved. 00010 ; * ARM Limited (ARM) is supplying this software for use with Cortex-M3 00011 ; * processor based microcontrollers. This file can be freely distributed 00012 ; * within development tools that are supporting such ARM based processors. 00013 ; * 00014 ; * THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED 00015 ; * OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF 00016 ; * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. 00017 ; * ARM SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR 00018 ; * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. 00019 ; * 00020 ; *****************************************************************************/ 00021 00022 ; <h> Stack Configuration 00023 ; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> 00024 ; </h> 00025 00026 Stack_Size EQU 0x00000200 00027 00028 AREA STACK, NOINIT, READWRITE, ALIGN=3 00029 Stack_Mem SPACE Stack_Size 00030 __initial_sp 00031 00032 00033 ; <h> Heap Configuration 00034 ; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> 00035 ; </h> 00036 00037 Heap_Size EQU 0x00000000 00038 00039 AREA HEAP, NOINIT, READWRITE, ALIGN=3 00040 __heap_base 00041 Heap_Mem SPACE Heap_Size 00042 __heap_limit 00043 00044 PRESERVE8 00045 THUMB 00046 00047 00048 ; Vector Table Mapped to Address 0 at Reset 00049 00050 AREA RESET, DATA, READONLY 00051 EXPORT __Vectors 00052 00053 __Vectors DCD __initial_sp ; Top of Stack 00054 DCD Reset_Handler ; Reset Handler 00055 DCD NMI_Handler ; NMI Handler 00056 DCD HardFault_Handler ; Hard Fault Handler 00057 DCD MemManage_Handler ; MPU Fault Handler 00058 DCD BusFault_Handler ; Bus Fault Handler 00059 DCD UsageFault_Handler ; Usage Fault Handler 00060 DCD 0 ; Reserved 00061 DCD 0 ; Reserved 00062 DCD 0 ; Reserved 00063 DCD 0 ; Reserved 00064 DCD SVC_Handler ; SVCall Handler 00065 DCD DebugMon_Handler ; Debug Monitor Handler 00066 DCD 0 ; Reserved 00067 DCD PendSV_Handler ; PendSV Handler 00068 DCD SysTick_Handler ; SysTick Handler 00069 00070 ; External Interrupts 00071 DCD DMA_IRQHandler ; 0: DMA Interrupt 00072 DCD GPIO_EVEN_IRQHandler ; 1: GPIO_EVEN Interrupt 00073 DCD TIMER0_IRQHandler ; 2: TIMER0 Interrupt 00074 DCD USART0_RX_IRQHandler ; 3: USART0_RX Interrupt 00075 DCD USART0_TX_IRQHandler ; 4: USART0_TX Interrupt 00076 DCD ACMP0_IRQHandler ; 5: ACMP0 Interrupt 00077 DCD ADC0_IRQHandler ; 6: ADC0 Interrupt 00078 DCD DAC0_IRQHandler ; 7: DAC0 Interrupt 00079 DCD I2C0_IRQHandler ; 8: I2C0 Interrupt 00080 DCD GPIO_ODD_IRQHandler ; 9: GPIO_ODD Interrupt 00081 DCD TIMER1_IRQHandler ; 10: TIMER1 Interrupt 00082 DCD TIMER2_IRQHandler ; 11: TIMER2 Interrupt 00083 DCD USART1_RX_IRQHandler ; 12: USART1_RX Interrupt 00084 DCD USART1_TX_IRQHandler ; 13: USART1_TX Interrupt 00085 DCD USART2_RX_IRQHandler ; 14: USART2_RX Interrupt 00086 DCD USART2_TX_IRQHandler ; 15: USART2_TX Interrupt 00087 DCD UART0_RX_IRQHandler ; 16: UART0_RX Interrupt 00088 DCD UART0_TX_IRQHandler ; 17: UART0_TX Interrupt 00089 DCD LEUART0_IRQHandler ; 18: LEUART0 Interrupt 00090 DCD LEUART1_IRQHandler ; 19: LEUART1 Interrupt 00091 DCD LETIMER0_IRQHandler ; 20: LETIMER0 Interrupt 00092 DCD PCNT0_IRQHandler ; 21: PCNT0 Interrupt 00093 DCD PCNT1_IRQHandler ; 22: PCNT1 Interrupt 00094 DCD PCNT2_IRQHandler ; 23: PCNT2 Interrupt 00095 DCD RTC_IRQHandler ; 24: RTC Interrupt 00096 DCD CMU_IRQHandler ; 25: CMU Interrupt 00097 DCD VCMP_IRQHandler ; 26: VCMP Interrupt 00098 DCD LCD_IRQHandler ; 27: LCD Interrupt 00099 DCD MSC_IRQHandler ; 28: MSC Interrupt 00100 DCD AES_IRQHandler ; 29: AES Interrupt 00101 00102 DCD 0 00103 DCD 0 00104 DCD 0 00105 DCD 0 00106 DCD 0 00107 DCD 0 00108 DCD 0 00109 DCD 0 00110 DCD 0 00111 DCD 0 00112 00113 00114 00115 AREA |.text|, CODE, READONLY 00116 00117 ; Reset Handler 00118 00119 Reset_Handler PROC 00120 EXPORT Reset_Handler [WEAK] 00121 IMPORT SystemInit 00122 IMPORT IEC60335_ClassB_POST 00123 IMPORT __main 00124 LDR R0, =SystemInit 00125 BLX R0 00126 LDR R0, =IEC60335_ClassB_POST 00127 BLX R0 00128 LDR R0, =__main 00129 BX R0 00130 ENDP 00131 00132 ; Dummy Exception Handlers (infinite loops which can be modified) 00133 NMI_Handler PROC 00134 EXPORT NMI_Handler [WEAK] 00135 B . 00136 ENDP 00137 HardFault_Handler\ 00138 PROC 00139 EXPORT HardFault_Handler [WEAK] 00140 B . 00141 ENDP 00142 MemManage_Handler\ 00143 PROC 00144 EXPORT MemManage_Handler [WEAK] 00145 B . 00146 ENDP 00147 BusFault_Handler\ 00148 PROC 00149 EXPORT BusFault_Handler [WEAK] 00150 B . 00151 ENDP 00152 UsageFault_Handler\ 00153 PROC 00154 EXPORT UsageFault_Handler [WEAK] 00155 B . 00156 ENDP 00157 SVC_Handler PROC 00158 EXPORT SVC_Handler [WEAK] 00159 B . 00160 ENDP 00161 DebugMon_Handler\ 00162 PROC 00163 EXPORT DebugMon_Handler [WEAK] 00164 B . 00165 ENDP 00166 PendSV_Handler PROC 00167 EXPORT PendSV_Handler [WEAK] 00168 B . 00169 ENDP 00170 SysTick_Handler PROC 00171 EXPORT SysTick_Handler [WEAK] 00172 B . 00173 ENDP 00174 00175 Default_Handler PROC 00176 00177 00178 EXPORT DMA_IRQHandler [WEAK] 00179 EXPORT GPIO_EVEN_IRQHandler [WEAK] 00180 EXPORT TIMER0_IRQHandler [WEAK] 00181 EXPORT USART0_RX_IRQHandler [WEAK] 00182 EXPORT USART0_TX_IRQHandler [WEAK] 00183 EXPORT ACMP0_IRQHandler [WEAK] 00184 EXPORT ADC0_IRQHandler [WEAK] 00185 EXPORT DAC0_IRQHandler [WEAK] 00186 EXPORT I2C0_IRQHandler [WEAK] 00187 EXPORT GPIO_ODD_IRQHandler [WEAK] 00188 EXPORT TIMER1_IRQHandler [WEAK] 00189 EXPORT TIMER2_IRQHandler [WEAK] 00190 EXPORT USART1_RX_IRQHandler [WEAK] 00191 EXPORT USART1_TX_IRQHandler [WEAK] 00192 EXPORT USART2_RX_IRQHandler [WEAK] 00193 EXPORT USART2_TX_IRQHandler [WEAK] 00194 EXPORT UART0_RX_IRQHandler [WEAK] 00195 EXPORT UART0_TX_IRQHandler [WEAK] 00196 EXPORT LEUART0_IRQHandler [WEAK] 00197 EXPORT LEUART1_IRQHandler [WEAK] 00198 EXPORT LETIMER0_IRQHandler [WEAK] 00199 EXPORT PCNT0_IRQHandler [WEAK] 00200 EXPORT PCNT1_IRQHandler [WEAK] 00201 EXPORT PCNT2_IRQHandler [WEAK] 00202 EXPORT RTC_IRQHandler [WEAK] 00203 EXPORT CMU_IRQHandler [WEAK] 00204 EXPORT VCMP_IRQHandler [WEAK] 00205 EXPORT LCD_IRQHandler [WEAK] 00206 EXPORT MSC_IRQHandler [WEAK] 00207 EXPORT AES_IRQHandler [WEAK] 00208 00209 00210 DMA_IRQHandler 00211 GPIO_EVEN_IRQHandler 00212 TIMER0_IRQHandler 00213 USART0_RX_IRQHandler 00214 USART0_TX_IRQHandler 00215 ACMP0_IRQHandler 00216 ADC0_IRQHandler 00217 DAC0_IRQHandler 00218 I2C0_IRQHandler 00219 GPIO_ODD_IRQHandler 00220 TIMER1_IRQHandler 00221 TIMER2_IRQHandler 00222 USART1_RX_IRQHandler 00223 USART1_TX_IRQHandler 00224 USART2_RX_IRQHandler 00225 USART2_TX_IRQHandler 00226 UART0_RX_IRQHandler 00227 UART0_TX_IRQHandler 00228 LEUART0_IRQHandler 00229 LEUART1_IRQHandler 00230 LETIMER0_IRQHandler 00231 PCNT0_IRQHandler 00232 PCNT1_IRQHandler 00233 PCNT2_IRQHandler 00234 RTC_IRQHandler 00235 CMU_IRQHandler 00236 VCMP_IRQHandler 00237 LCD_IRQHandler 00238 MSC_IRQHandler 00239 AES_IRQHandler 00240 00241 B . 00242 00243 ENDP 00244 00245 ALIGN 00246 00247 ; User Initial Stack & Heap 00248 00249 IF :DEF:__MICROLIB 00250 00251 EXPORT __initial_sp 00252 EXPORT __heap_base 00253 EXPORT __heap_limit 00254 00255 ELSE 00256 00257 IMPORT __use_two_region_memory 00258 EXPORT __user_initial_stackheap 00259 __user_initial_stackheap 00260 00261 LDR R0, = Heap_Mem 00262 LDR R1, =(Stack_Mem + Stack_Size) 00263 LDR R2, = (Heap_Mem + Heap_Size) 00264 LDR R3, = Stack_Mem 00265 BX LR 00266 00267 ALIGN 00268 00269 ENDIF 00270 00271 END