1*150812a8SEvalZero/*********************************************************************************** 2*150812a8SEvalZero * SEGGER Microcontroller GmbH * 3*150812a8SEvalZero * The Embedded Experts * 4*150812a8SEvalZero *********************************************************************************** 5*150812a8SEvalZero * * 6*150812a8SEvalZero * (c) 2014 - 2018 SEGGER Microcontroller GmbH * 7*150812a8SEvalZero * * 8*150812a8SEvalZero * www.segger.com Support: [email protected] * 9*150812a8SEvalZero * * 10*150812a8SEvalZero *********************************************************************************** 11*150812a8SEvalZero * * 12*150812a8SEvalZero * All rights reserved. * 13*150812a8SEvalZero * * 14*150812a8SEvalZero * Redistribution and use in source and binary forms, with or * 15*150812a8SEvalZero * without modification, are permitted provided that the following * 16*150812a8SEvalZero * conditions are met: * 17*150812a8SEvalZero * * 18*150812a8SEvalZero * - Redistributions of source code must retain the above copyright * 19*150812a8SEvalZero * notice, this list of conditions and the following disclaimer. * 20*150812a8SEvalZero * * 21*150812a8SEvalZero * - Neither the name of SEGGER Microcontroller GmbH * 22*150812a8SEvalZero * nor the names of its contributors may be used to endorse or * 23*150812a8SEvalZero * promote products derived from this software without specific * 24*150812a8SEvalZero * prior written permission. * 25*150812a8SEvalZero * * 26*150812a8SEvalZero * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND * 27*150812a8SEvalZero * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, * 28*150812a8SEvalZero * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * 29*150812a8SEvalZero * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * 30*150812a8SEvalZero * DISCLAIMED. * 31*150812a8SEvalZero * IN NO EVENT SHALL SEGGER Microcontroller GmbH BE LIABLE FOR * 32*150812a8SEvalZero * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * 33*150812a8SEvalZero * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * 34*150812a8SEvalZero * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * 35*150812a8SEvalZero * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * 36*150812a8SEvalZero * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * 37*150812a8SEvalZero * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * 38*150812a8SEvalZero * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * 39*150812a8SEvalZero * DAMAGE. * 40*150812a8SEvalZero * * 41*150812a8SEvalZero ***********************************************************************************/ 42*150812a8SEvalZero 43*150812a8SEvalZero/************************************************************************************ 44*150812a8SEvalZero * Preprocessor Definitions * 45*150812a8SEvalZero * ------------------------ * 46*150812a8SEvalZero * VECTORS_IN_RAM * 47*150812a8SEvalZero * * 48*150812a8SEvalZero * If defined, an area of RAM will large enough to store the vector table * 49*150812a8SEvalZero * will be reserved. * 50*150812a8SEvalZero * * 51*150812a8SEvalZero ************************************************************************************/ 52*150812a8SEvalZero 53*150812a8SEvalZero .syntax unified 54*150812a8SEvalZero .code 16 55*150812a8SEvalZero 56*150812a8SEvalZero .section .init, "ax" 57*150812a8SEvalZero .align 0 58*150812a8SEvalZero 59*150812a8SEvalZero/************************************************************************************ 60*150812a8SEvalZero * Default Exception Handlers * 61*150812a8SEvalZero ************************************************************************************/ 62*150812a8SEvalZero 63*150812a8SEvalZero 64*150812a8SEvalZero .thumb_func 65*150812a8SEvalZero .weak NMI_Handler 66*150812a8SEvalZeroNMI_Handler: 67*150812a8SEvalZero b . 68*150812a8SEvalZero 69*150812a8SEvalZero .thumb_func 70*150812a8SEvalZero .weak HardFault_Handler 71*150812a8SEvalZeroHardFault_Handler: 72*150812a8SEvalZero b . 73*150812a8SEvalZero 74*150812a8SEvalZero .thumb_func 75*150812a8SEvalZero .weak SVC_Handler 76*150812a8SEvalZeroSVC_Handler: 77*150812a8SEvalZero b . 78*150812a8SEvalZero 79*150812a8SEvalZero .thumb_func 80*150812a8SEvalZero .weak PendSV_Handler 81*150812a8SEvalZeroPendSV_Handler: 82*150812a8SEvalZero b . 83*150812a8SEvalZero 84*150812a8SEvalZero .thumb_func 85*150812a8SEvalZero .weak SysTick_Handler 86*150812a8SEvalZeroSysTick_Handler: 87*150812a8SEvalZero b . 88*150812a8SEvalZero 89*150812a8SEvalZero .thumb_func 90*150812a8SEvalZero .weak Dummy_Handler 91*150812a8SEvalZeroDummy_Handler: 92*150812a8SEvalZero b . 93*150812a8SEvalZero 94*150812a8SEvalZero/************************************************************************************ 95*150812a8SEvalZero * Default Interrupt Handlers * 96*150812a8SEvalZero ************************************************************************************/ 97*150812a8SEvalZero 98*150812a8SEvalZero.weak POWER_CLOCK_IRQHandler 99*150812a8SEvalZero.thumb_set POWER_CLOCK_IRQHandler, Dummy_Handler 100*150812a8SEvalZero 101*150812a8SEvalZero.weak RADIO_IRQHandler 102*150812a8SEvalZero.thumb_set RADIO_IRQHandler, Dummy_Handler 103*150812a8SEvalZero 104*150812a8SEvalZero.weak UART0_IRQHandler 105*150812a8SEvalZero.thumb_set UART0_IRQHandler, Dummy_Handler 106*150812a8SEvalZero 107*150812a8SEvalZero.weak SPI0_TWI0_IRQHandler 108*150812a8SEvalZero.thumb_set SPI0_TWI0_IRQHandler, Dummy_Handler 109*150812a8SEvalZero 110*150812a8SEvalZero.weak SPI1_TWI1_IRQHandler 111*150812a8SEvalZero.thumb_set SPI1_TWI1_IRQHandler, Dummy_Handler 112*150812a8SEvalZero 113*150812a8SEvalZero.weak GPIOTE_IRQHandler 114*150812a8SEvalZero.thumb_set GPIOTE_IRQHandler, Dummy_Handler 115*150812a8SEvalZero 116*150812a8SEvalZero.weak ADC_IRQHandler 117*150812a8SEvalZero.thumb_set ADC_IRQHandler, Dummy_Handler 118*150812a8SEvalZero 119*150812a8SEvalZero.weak TIMER0_IRQHandler 120*150812a8SEvalZero.thumb_set TIMER0_IRQHandler, Dummy_Handler 121*150812a8SEvalZero 122*150812a8SEvalZero.weak TIMER1_IRQHandler 123*150812a8SEvalZero.thumb_set TIMER1_IRQHandler, Dummy_Handler 124*150812a8SEvalZero 125*150812a8SEvalZero.weak TIMER2_IRQHandler 126*150812a8SEvalZero.thumb_set TIMER2_IRQHandler, Dummy_Handler 127*150812a8SEvalZero 128*150812a8SEvalZero.weak RTC0_IRQHandler 129*150812a8SEvalZero.thumb_set RTC0_IRQHandler, Dummy_Handler 130*150812a8SEvalZero 131*150812a8SEvalZero.weak TEMP_IRQHandler 132*150812a8SEvalZero.thumb_set TEMP_IRQHandler, Dummy_Handler 133*150812a8SEvalZero 134*150812a8SEvalZero.weak RNG_IRQHandler 135*150812a8SEvalZero.thumb_set RNG_IRQHandler, Dummy_Handler 136*150812a8SEvalZero 137*150812a8SEvalZero.weak ECB_IRQHandler 138*150812a8SEvalZero.thumb_set ECB_IRQHandler, Dummy_Handler 139*150812a8SEvalZero 140*150812a8SEvalZero.weak CCM_AAR_IRQHandler 141*150812a8SEvalZero.thumb_set CCM_AAR_IRQHandler, Dummy_Handler 142*150812a8SEvalZero 143*150812a8SEvalZero.weak WDT_IRQHandler 144*150812a8SEvalZero.thumb_set WDT_IRQHandler, Dummy_Handler 145*150812a8SEvalZero 146*150812a8SEvalZero.weak RTC1_IRQHandler 147*150812a8SEvalZero.thumb_set RTC1_IRQHandler, Dummy_Handler 148*150812a8SEvalZero 149*150812a8SEvalZero.weak QDEC_IRQHandler 150*150812a8SEvalZero.thumb_set QDEC_IRQHandler, Dummy_Handler 151*150812a8SEvalZero 152*150812a8SEvalZero.weak LPCOMP_IRQHandler 153*150812a8SEvalZero.thumb_set LPCOMP_IRQHandler, Dummy_Handler 154*150812a8SEvalZero 155*150812a8SEvalZero.weak SWI0_IRQHandler 156*150812a8SEvalZero.thumb_set SWI0_IRQHandler, Dummy_Handler 157*150812a8SEvalZero 158*150812a8SEvalZero.weak SWI1_IRQHandler 159*150812a8SEvalZero.thumb_set SWI1_IRQHandler, Dummy_Handler 160*150812a8SEvalZero 161*150812a8SEvalZero.weak SWI2_IRQHandler 162*150812a8SEvalZero.thumb_set SWI2_IRQHandler, Dummy_Handler 163*150812a8SEvalZero 164*150812a8SEvalZero.weak SWI3_IRQHandler 165*150812a8SEvalZero.thumb_set SWI3_IRQHandler, Dummy_Handler 166*150812a8SEvalZero 167*150812a8SEvalZero.weak SWI4_IRQHandler 168*150812a8SEvalZero.thumb_set SWI4_IRQHandler, Dummy_Handler 169*150812a8SEvalZero 170*150812a8SEvalZero.weak SWI5_IRQHandler 171*150812a8SEvalZero.thumb_set SWI5_IRQHandler, Dummy_Handler 172*150812a8SEvalZero 173*150812a8SEvalZero/************************************************************************************ 174*150812a8SEvalZero * Reset Handler Extensions * 175*150812a8SEvalZero ************************************************************************************/ 176*150812a8SEvalZero 177*150812a8SEvalZero .extern Reset_Handler 178*150812a8SEvalZero .global nRFInitialize 179*150812a8SEvalZero .equ NRF_POWER_RAMON_ADDRESS, 0x40000524 180*150812a8SEvalZero .equ NRF_POWER_RAMONB_ADDRESS, 0x40000554 181*150812a8SEvalZero .equ NRF_POWER_RAMONx_RAMxON_ONMODE_Msk, 0x3 182*150812a8SEvalZero 183*150812a8SEvalZero .thumb_func 184*150812a8SEvalZeronRFInitialize: 185*150812a8SEvalZero MOVS R1, #NRF_POWER_RAMONx_RAMxON_ONMODE_Msk 186*150812a8SEvalZero 187*150812a8SEvalZero LDR R0, =NRF_POWER_RAMON_ADDRESS 188*150812a8SEvalZero LDR R2, [R0] 189*150812a8SEvalZero ORRS R2, R1 190*150812a8SEvalZero STR R2, [R0] 191*150812a8SEvalZero 192*150812a8SEvalZero LDR R0, =NRF_POWER_RAMONB_ADDRESS 193*150812a8SEvalZero LDR R2, [R0] 194*150812a8SEvalZero ORRS R2, R1 195*150812a8SEvalZero STR R2, [R0] 196*150812a8SEvalZero bx lr 197*150812a8SEvalZero 198*150812a8SEvalZero 199*150812a8SEvalZero/************************************************************************************ 200*150812a8SEvalZero * Vector Table * 201*150812a8SEvalZero ************************************************************************************/ 202*150812a8SEvalZero 203*150812a8SEvalZero .section .vectors, "ax" 204*150812a8SEvalZero .align 0 205*150812a8SEvalZero .global _vectors 206*150812a8SEvalZero .extern __stack_end__ 207*150812a8SEvalZero 208*150812a8SEvalZero_vectors: 209*150812a8SEvalZero .word __stack_end__ 210*150812a8SEvalZero .word Reset_Handler 211*150812a8SEvalZero .word NMI_Handler 212*150812a8SEvalZero .word HardFault_Handler 213*150812a8SEvalZero .word 0 /*Reserved */ 214*150812a8SEvalZero .word 0 /*Reserved */ 215*150812a8SEvalZero .word 0 /*Reserved */ 216*150812a8SEvalZero .word 0 /*Reserved */ 217*150812a8SEvalZero .word 0 /*Reserved */ 218*150812a8SEvalZero .word 0 /*Reserved */ 219*150812a8SEvalZero .word 0 /*Reserved */ 220*150812a8SEvalZero .word SVC_Handler 221*150812a8SEvalZero .word 0 /*Reserved */ 222*150812a8SEvalZero .word 0 /*Reserved */ 223*150812a8SEvalZero .word PendSV_Handler 224*150812a8SEvalZero .word SysTick_Handler 225*150812a8SEvalZero 226*150812a8SEvalZero/* External Interrupts */ 227*150812a8SEvalZero .word POWER_CLOCK_IRQHandler 228*150812a8SEvalZero .word RADIO_IRQHandler 229*150812a8SEvalZero .word UART0_IRQHandler 230*150812a8SEvalZero .word SPI0_TWI0_IRQHandler 231*150812a8SEvalZero .word SPI1_TWI1_IRQHandler 232*150812a8SEvalZero .word 0 /*Reserved */ 233*150812a8SEvalZero .word GPIOTE_IRQHandler 234*150812a8SEvalZero .word ADC_IRQHandler 235*150812a8SEvalZero .word TIMER0_IRQHandler 236*150812a8SEvalZero .word TIMER1_IRQHandler 237*150812a8SEvalZero .word TIMER2_IRQHandler 238*150812a8SEvalZero .word RTC0_IRQHandler 239*150812a8SEvalZero .word TEMP_IRQHandler 240*150812a8SEvalZero .word RNG_IRQHandler 241*150812a8SEvalZero .word ECB_IRQHandler 242*150812a8SEvalZero .word CCM_AAR_IRQHandler 243*150812a8SEvalZero .word WDT_IRQHandler 244*150812a8SEvalZero .word RTC1_IRQHandler 245*150812a8SEvalZero .word QDEC_IRQHandler 246*150812a8SEvalZero .word LPCOMP_IRQHandler 247*150812a8SEvalZero .word SWI0_IRQHandler 248*150812a8SEvalZero .word SWI1_IRQHandler 249*150812a8SEvalZero .word SWI2_IRQHandler 250*150812a8SEvalZero .word SWI3_IRQHandler 251*150812a8SEvalZero .word SWI4_IRQHandler 252*150812a8SEvalZero .word SWI5_IRQHandler 253*150812a8SEvalZero .word 0 /*Reserved */ 254*150812a8SEvalZero .word 0 /*Reserved */ 255*150812a8SEvalZero .word 0 /*Reserved */ 256*150812a8SEvalZero .word 0 /*Reserved */ 257*150812a8SEvalZero .word 0 /*Reserved */ 258*150812a8SEvalZero .word 0 /*Reserved */ 259*150812a8SEvalZero_vectors_end: 260*150812a8SEvalZero 261*150812a8SEvalZero#ifdef VECTORS_IN_RAM 262*150812a8SEvalZero .section .vectors_ram, "ax" 263*150812a8SEvalZero .align 0 264*150812a8SEvalZero .global _vectors_ram 265*150812a8SEvalZero 266*150812a8SEvalZero_vectors_ram: 267*150812a8SEvalZero .space _vectors_end - _vectors, 0 268*150812a8SEvalZero#endif 269