1 .syntax unified 2 .cpu cortex-m0plus 3 .fpu softvfp 4 .thumb 5 6.global Default_Handler 7 8/* start address for the initialization values of the .data section. 9defined in linker script */ 10.word _sidata 11/* start address for the .data section. defined in linker script */ 12.word _sdata 13/* end address for the .data section. defined in linker script */ 14.word _edata 15/* start address for the .bss section. defined in linker script */ 16.word _sbss 17/* end address for the .bss section. defined in linker script */ 18.word _ebss 19 20 .section .text.Reset_Handler 21 .weak Reset_Handler 22 .type Reset_Handler, %function 23Reset_Handler: 24 ldr r0, =_estack 25 mov sp, r0 /* set stack pointer */ 26 27/* Copy the data segment initializers from flash to SRAM */ 28 movs r1, #0 29 b LoopCopyDataInit 30 31CopyDataInit: 32 ldr r3, =_sidata 33 ldr r3, [r3, r1] 34 str r3, [r0, r1] 35 adds r1, r1, #4 36 37LoopCopyDataInit: 38 ldr r0, =_sdata 39 ldr r3, =_edata 40 adds r2, r0, r1 41 cmp r2, r3 42 bcc CopyDataInit 43 ldr r2, =_sbss 44 b LoopFillZerobss 45/* Zero fill the bss segment. */ 46FillZerobss: 47 movs r3, #0 48 str r3, [r2] 49 adds r2, r2, #4 50 51LoopFillZerobss: 52 ldr r3, = _ebss 53 cmp r2, r3 54 bcc FillZerobss 55 56/* Call the clock system intitialization function.*/ 57 bl SystemInit 58/* Call static constructors */ 59// bl __libc_init_array 60/* Call the application's entry point.*/ 61 bl main 62 63LoopForever: 64 b LoopForever 65 66 .size Reset_Handler, .-Reset_Handler 67 .section .text.Default_Handler,"ax",%progbits 68Default_Handler: 69Infinite_Loop: 70 b Infinite_Loop 71 .size Default_Handler, .-Default_Handler 72 73/****************************************************************************** 74* 75* The minimal vector table for a Cortex M0. Note that the proper constructs 76* must be placed on this to ensure that it ends up at physical address 77* 0x0000.0000. 78* 79******************************************************************************/ 80 .section .isr_vector,"a",%progbits 81 .global g_pfnVectors 82g_pfnVectors: 83 .word _estack 84 .word Reset_Handler 85 .word NMI_Handler 86 .word HardFault_Handler 87 .word 0 88 .word 0 89 .word 0 90 .word 0 91 .word 0 92 .word 0 93 .word 0 94 .word SVC_Handler 95 .word 0 96 .word 0 97 .word PendSV_Handler 98 .word SysTick_Handler 99 /* External Interrupts */ 100 .word WWDT_IRQHandler /* 0: WWDT */ 101 .word SVD_IRQHandler /* 1: SVD */ 102 .word RTC_IRQHandler /* 2: RTC */ 103 .word FLASH_IRQHandler /* 3: FLASH */ 104 .word LFDET_IRQHandler /* 4: LFDET */ 105 .word ADC_IRQHandler /* 5: ADC */ 106 .word IWDT_IRQHandler /* 6: IWDT */ 107 .word SPI1_IRQHandler /* 7: SPI1 */ 108 .word SPI2_IRQHandler /* 8: SPI2 */ 109 .word LCD_IRQHandler /* 9: LCD */ 110 .word UART0_IRQHandler /* 10: UART0 */ 111 .word UART1_IRQHandler /* 11: UART1 */ 112 .word UART4_IRQHandler /* 12: UART4 */ 113 .word UART5_IRQHandler /* 13: UART5 */ 114 .word HFDET_IRQHandler /* 14: HFDET */ 115 .word U7816_IRQHandler /* 15: U7816 */ 116 .word LPUART1_IRQHandler /* 16: LPUART1 */ 117 .word I2C_IRQHandler /* 17: I2C */ 118 .word USB_IRQHandler /* 18: USB */ 119 .word AES_IRQHandler /* 19: AES */ 120 .word LPTIM_IRQHandler /* 20: LPTIM */ 121 .word DMA_IRQHandler /* 21: DMA */ 122 .word WKUP_IRQHandler /* 22: WKUP */ 123 .word OPAx_IRQHandler /* 23: OPAx */ 124 .word BSTIM_IRQHandler /* 24: BSTIM */ 125 .word COMPx_IRQHandler /* 25: COMPx */ 126 .word GPTIM0_IRQHandler /* 26: GPTIM0 */ 127 .word GPTIM1_IRQHandler /* 27: GPTIM1 */ 128 .word ATIM_IRQHandler /* 28: ATIM */ 129 .word VREF_IRQHandler /* 39: VREF */ 130 .word GPIO_IRQHandler /* 30: GPIO */ 131 .word LPUART0_IRQHandler /* 31: LPUART0 */ 132 133/******************************************************************************* 134* 135* Provide weak aliases for each Exception handler to the Default_Handler. 136* As they are weak aliases, any function with the same name will override 137* this definition. 138* 139*******************************************************************************/ 140 .weak NMI_Handler 141 .thumb_set NMI_Handler,Default_Handler 142 143 .weak HardFault_Handler 144 .thumb_set HardFault_Handler,Default_Handler 145 146 .weak SVC_Handler 147 .thumb_set SVC_Handler,Default_Handler 148 149 .weak PendSV_Handler 150 .thumb_set PendSV_Handler,Default_Handler 151 152 .weak SysTick_Handler 153 .thumb_set SysTick_Handler,Default_Handler 154 155 .weak WWDT_IRQHandler 156 .thumb_set WWDT_IRQHandler,Default_Handler 157 158 .weak SVD_IRQHandler 159 .thumb_set SVD_IRQHandler,Default_Handler 160 161 .weak RTC_IRQHandler 162 .thumb_set RTC_IRQHandler,Default_Handler 163 164 .weak FLASH_IRQHandler 165 .thumb_set FLASH_IRQHandler,Default_Handler 166 167 .weak LFDET_IRQHandler 168 .thumb_set LFDET_IRQHandler,Default_Handler 169 170 .weak ADC_IRQHandler 171 .thumb_set ADC_IRQHandler,Default_Handler 172 173 .weak IWDT_IRQHandler 174 .thumb_set IWDT_IRQHandler,Default_Handler 175 176 .weak SPI1_IRQHandler 177 .thumb_set SPI1_IRQHandler,Default_Handler 178 179 .weak SPI2_IRQHandler 180 .thumb_set SPI2_IRQHandler,Default_Handler 181 182 .weak LCD_IRQHandler 183 .thumb_set LCD_IRQHandler,Default_Handler 184 185 .weak UART0_IRQHandler 186 .thumb_set UART0_IRQHandler,Default_Handler 187 188 .weak UART1_IRQHandler 189 .thumb_set UART1_IRQHandler,Default_Handler 190 191 .weak UART4_IRQHandler 192 .thumb_set UART4_IRQHandler,Default_Handler 193 194 .weak UART5_IRQHandler 195 .thumb_set UART5_IRQHandler,Default_Handler 196 197 .weak HFDET_IRQHandler 198 .thumb_set HFDET_IRQHandler,Default_Handler 199 200 .weak U7816_IRQHandler 201 .thumb_set U7816_IRQHandler,Default_Handler 202 203 .weak LPUART1_IRQHandler 204 .thumb_set LPUART1_IRQHandler,Default_Handler 205 206 .weak I2C_IRQHandler 207 .thumb_set I2C_IRQHandler,Default_Handler 208 209 .weak USB_IRQHandler 210 .thumb_set USB_IRQHandler,Default_Handler 211 212 .weak AES_IRQHandler 213 .thumb_set AES_IRQHandler,Default_Handler 214 215 .weak LPTIM_IRQHandler 216 .thumb_set LPTIM_IRQHandler,Default_Handler 217 218 .weak DMA_IRQHandler 219 .thumb_set DMA_IRQHandler,Default_Handler 220 221 .weak WKUP_IRQHandler 222 .thumb_set WKUP_IRQHandler,Default_Handler 223 224 .weak OPAx_IRQHandler 225 .thumb_set OPAx_IRQHandler,Default_Handler 226 227 .weak BSTIM_IRQHandler 228 .thumb_set BSTIM_IRQHandler,Default_Handler 229 230 .weak COMPx_IRQHandler 231 .thumb_set COMPx_IRQHandler,Default_Handler 232 233 .weak GPTIM0_IRQHandler 234 .thumb_set GPTIM0_IRQHandler,Default_Handler 235 236 .weak GPTIM1_IRQHandler 237 .thumb_set GPTIM1_IRQHandler,Default_Handler 238 239 .weak ATIM_IRQHandler 240 .thumb_set ATIM_IRQHandler,Default_Handler 241 242 .weak VREF_IRQHandler 243 .thumb_set VREF_IRQHandler,Default_Handler 244 245 .weak GPIO_IRQHandler 246 .thumb_set GPIO_IRQHandler,Default_Handler 247 248 .weak LPUART0_IRQHandler 249 .thumb_set LPUART0_IRQHandler,Default_Handler 250 251