|
| 1 | +; Copyright (c) 2009 Nordic Semiconductor. All Rights Reserved. |
| 2 | +; |
| 3 | +; The information contained herein is property of Nordic Semiconductor ASA. |
| 4 | +; Terms and conditions of usage are described in detail in NORDIC |
| 5 | +; SEMICONDUCTOR STANDARD SOFTWARE LICENSE AGREEMENT. |
| 6 | +; |
| 7 | +; Licensees are granted free, non-transferable use of the information. NO |
| 8 | +; WARRANTY of ANY KIND is provided. This heading must NOT be removed from |
| 9 | +; the file. |
| 10 | + |
| 11 | +; NOTE: Template files (including this one) are application specific and therefore |
| 12 | +; expected to be copied into the application project folder prior to its use! |
| 13 | + |
| 14 | +; Description message |
| 15 | + |
| 16 | +Stack_Size EQU 2048 |
| 17 | + AREA STACK, NOINIT, READWRITE, ALIGN=3 |
| 18 | +Stack_Mem SPACE Stack_Size |
| 19 | +__initial_sp |
| 20 | + |
| 21 | +Heap_Size EQU 2048 |
| 22 | + |
| 23 | + AREA HEAP, NOINIT, READWRITE, ALIGN=3 |
| 24 | +__heap_base |
| 25 | +Heap_Mem SPACE Heap_Size |
| 26 | +__heap_limit |
| 27 | + |
| 28 | + PRESERVE8 |
| 29 | + THUMB |
| 30 | + |
| 31 | +; Vector Table Mapped to Address 0 at Reset |
| 32 | + |
| 33 | + AREA RESET, DATA, READONLY |
| 34 | + EXPORT __Vectors |
| 35 | + EXPORT __Vectors_End |
| 36 | + EXPORT __Vectors_Size |
| 37 | + |
| 38 | +__Vectors DCD __initial_sp ; Top of Stack |
| 39 | + DCD Reset_Handler ; Reset Handler |
| 40 | + DCD NMI_Handler ; NMI Handler |
| 41 | + DCD HardFault_Handler ; Hard Fault Handler |
| 42 | + DCD 0 ; Reserved |
| 43 | + DCD 0 ; Reserved |
| 44 | + DCD 0 ; Reserved |
| 45 | + DCD 0 ; Reserved |
| 46 | + DCD 0 ; Reserved |
| 47 | + DCD 0 ; Reserved |
| 48 | + DCD 0 ; Reserved |
| 49 | + DCD SVC_Handler ; SVCall Handler |
| 50 | + DCD 0 ; Reserved |
| 51 | + DCD 0 ; Reserved |
| 52 | + DCD PendSV_Handler ; PendSV Handler |
| 53 | + DCD SysTick_Handler ; SysTick Handler |
| 54 | + |
| 55 | + ; External Interrupts |
| 56 | + DCD POWER_CLOCK_IRQHandler ;POWER_CLOCK |
| 57 | + DCD RADIO_IRQHandler ;RADIO |
| 58 | + DCD UART0_IRQHandler ;UART0 |
| 59 | + DCD SPI0_TWI0_IRQHandler ;SPI0_TWI0 |
| 60 | + DCD SPI1_TWI1_IRQHandler ;SPI1_TWI1 |
| 61 | + DCD 0 ;Reserved |
| 62 | + DCD GPIOTE_IRQHandler ;GPIOTE |
| 63 | + DCD ADC_IRQHandler ;ADC |
| 64 | + DCD TIMER0_IRQHandler ;TIMER0 |
| 65 | + DCD TIMER1_IRQHandler ;TIMER1 |
| 66 | + DCD TIMER2_IRQHandler ;TIMER2 |
| 67 | + DCD RTC0_IRQHandler ;RTC0 |
| 68 | + DCD TEMP_IRQHandler ;TEMP |
| 69 | + DCD RNG_IRQHandler ;RNG |
| 70 | + DCD ECB_IRQHandler ;ECB |
| 71 | + DCD CCM_AAR_IRQHandler ;CCM_AAR |
| 72 | + DCD WDT_IRQHandler ;WDT |
| 73 | + DCD RTC1_IRQHandler ;RTC1 |
| 74 | + DCD QDEC_IRQHandler ;QDEC |
| 75 | + DCD LPCOMP_COMP_IRQHandler ;LPCOMP_COMP |
| 76 | + DCD SWI0_IRQHandler ;SWI0 |
| 77 | + DCD SWI1_IRQHandler ;SWI1 |
| 78 | + DCD SWI2_IRQHandler ;SWI2 |
| 79 | + DCD SWI3_IRQHandler ;SWI3 |
| 80 | + DCD SWI4_IRQHandler ;SWI4 |
| 81 | + DCD SWI5_IRQHandler ;SWI5 |
| 82 | + DCD 0 ;Reserved |
| 83 | + DCD 0 ;Reserved |
| 84 | + DCD 0 ;Reserved |
| 85 | + DCD 0 ;Reserved |
| 86 | + DCD 0 ;Reserved |
| 87 | + DCD 0 ;Reserved |
| 88 | + |
| 89 | + |
| 90 | +__Vectors_End |
| 91 | + |
| 92 | +__Vectors_Size EQU __Vectors_End - __Vectors |
| 93 | + |
| 94 | + AREA |.text|, CODE, READONLY |
| 95 | + |
| 96 | +; Reset Handler |
| 97 | + |
| 98 | +NRF_POWER_RAMON_ADDRESS EQU 0x40000524 ; NRF_POWER->RAMON address |
| 99 | +NRF_POWER_RAMON_RAMxON_ONMODE_Msk EQU 0xF ; All RAM blocks on in onmode bit mask |
| 100 | + |
| 101 | +Reset_Handler PROC |
| 102 | + EXPORT Reset_Handler [WEAK] |
| 103 | + IMPORT SystemInit |
| 104 | + IMPORT __main |
| 105 | + LDR R0, =NRF_POWER_RAMON_ADDRESS |
| 106 | + LDR R2, [R0] |
| 107 | + MOVS R1, #NRF_POWER_RAMON_RAMxON_ONMODE_Msk |
| 108 | + ORRS R2, R2, R1 |
| 109 | + STR R2, [R0] |
| 110 | + LDR R0, =SystemInit |
| 111 | + BLX R0 |
| 112 | + LDR R0, =__main |
| 113 | + BX R0 |
| 114 | + ENDP |
| 115 | + |
| 116 | +; Dummy Exception Handlers (infinite loops which can be modified) |
| 117 | + |
| 118 | +NMI_Handler PROC |
| 119 | + EXPORT NMI_Handler [WEAK] |
| 120 | + B . |
| 121 | + ENDP |
| 122 | +HardFault_Handler\ |
| 123 | + PROC |
| 124 | + EXPORT HardFault_Handler [WEAK] |
| 125 | + B . |
| 126 | + ENDP |
| 127 | +SVC_Handler PROC |
| 128 | + EXPORT SVC_Handler [WEAK] |
| 129 | + B . |
| 130 | + ENDP |
| 131 | +PendSV_Handler PROC |
| 132 | + EXPORT PendSV_Handler [WEAK] |
| 133 | + B . |
| 134 | + ENDP |
| 135 | +SysTick_Handler PROC |
| 136 | + EXPORT SysTick_Handler [WEAK] |
| 137 | + B . |
| 138 | + ENDP |
| 139 | + |
| 140 | +Default_Handler PROC |
| 141 | + |
| 142 | + EXPORT POWER_CLOCK_IRQHandler [WEAK] |
| 143 | + EXPORT RADIO_IRQHandler [WEAK] |
| 144 | + EXPORT UART0_IRQHandler [WEAK] |
| 145 | + EXPORT SPI0_TWI0_IRQHandler [WEAK] |
| 146 | + EXPORT SPI1_TWI1_IRQHandler [WEAK] |
| 147 | + EXPORT GPIOTE_IRQHandler [WEAK] |
| 148 | + EXPORT ADC_IRQHandler [WEAK] |
| 149 | + EXPORT TIMER0_IRQHandler [WEAK] |
| 150 | + EXPORT TIMER1_IRQHandler [WEAK] |
| 151 | + EXPORT TIMER2_IRQHandler [WEAK] |
| 152 | + EXPORT RTC0_IRQHandler [WEAK] |
| 153 | + EXPORT TEMP_IRQHandler [WEAK] |
| 154 | + EXPORT RNG_IRQHandler [WEAK] |
| 155 | + EXPORT ECB_IRQHandler [WEAK] |
| 156 | + EXPORT CCM_AAR_IRQHandler [WEAK] |
| 157 | + EXPORT WDT_IRQHandler [WEAK] |
| 158 | + EXPORT RTC1_IRQHandler [WEAK] |
| 159 | + EXPORT QDEC_IRQHandler [WEAK] |
| 160 | + EXPORT LPCOMP_COMP_IRQHandler [WEAK] |
| 161 | + EXPORT SWI0_IRQHandler [WEAK] |
| 162 | + EXPORT SWI1_IRQHandler [WEAK] |
| 163 | + EXPORT SWI2_IRQHandler [WEAK] |
| 164 | + EXPORT SWI3_IRQHandler [WEAK] |
| 165 | + EXPORT SWI4_IRQHandler [WEAK] |
| 166 | + EXPORT SWI5_IRQHandler [WEAK] |
| 167 | +POWER_CLOCK_IRQHandler |
| 168 | +RADIO_IRQHandler |
| 169 | +UART0_IRQHandler |
| 170 | +SPI0_TWI0_IRQHandler |
| 171 | +SPI1_TWI1_IRQHandler |
| 172 | +GPIOTE_IRQHandler |
| 173 | +ADC_IRQHandler |
| 174 | +TIMER0_IRQHandler |
| 175 | +TIMER1_IRQHandler |
| 176 | +TIMER2_IRQHandler |
| 177 | +RTC0_IRQHandler |
| 178 | +TEMP_IRQHandler |
| 179 | +RNG_IRQHandler |
| 180 | +ECB_IRQHandler |
| 181 | +CCM_AAR_IRQHandler |
| 182 | +WDT_IRQHandler |
| 183 | +RTC1_IRQHandler |
| 184 | +QDEC_IRQHandler |
| 185 | +LPCOMP_COMP_IRQHandler |
| 186 | +SWI0_IRQHandler |
| 187 | +SWI1_IRQHandler |
| 188 | +SWI2_IRQHandler |
| 189 | +SWI3_IRQHandler |
| 190 | +SWI4_IRQHandler |
| 191 | +SWI5_IRQHandler |
| 192 | + |
| 193 | + B . |
| 194 | + ENDP |
| 195 | + ALIGN |
| 196 | + |
| 197 | +; User Initial Stack & Heap |
| 198 | + |
| 199 | + IF :DEF:__MICROLIB |
| 200 | + |
| 201 | + EXPORT __initial_sp |
| 202 | + EXPORT __heap_base |
| 203 | + EXPORT __heap_limit |
| 204 | + |
| 205 | + ELSE |
| 206 | + |
| 207 | + IMPORT __use_two_region_memory |
| 208 | + EXPORT __user_initial_stackheap |
| 209 | +__user_initial_stackheap |
| 210 | + |
| 211 | + LDR R0, = Heap_Mem |
| 212 | + LDR R1, = (Stack_Mem + Stack_Size) |
| 213 | + LDR R2, = (Heap_Mem + Heap_Size) |
| 214 | + LDR R3, = Stack_Mem |
| 215 | + BX LR |
| 216 | + |
| 217 | + ALIGN |
| 218 | + |
| 219 | + ENDIF |
| 220 | + |
| 221 | + END |
| 222 | + |
0 commit comments