Energy Micro IEC60355 Library Example Project 1.0 (internal use only!) GCC-Version
Example project demonstrating POST and BIST library functions

arm/startup_efm32.s

Go to the documentation of this file.
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