1/* 2 * Copyright (c) 2006-2021, RT-Thread Development Team 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Change Logs: 7 * Date Author Notes 8 * 2011-07-01 lgnq first version 9 */ 10 11 .syntax unified 12 .cpu cortex-m3 13 .fpu softvfp 14 .thumb 15 16.global g_pfnVectors 17.global Default_Handler 18 19/* start address for the initialization values of the .data section. 20defined in linker script */ 21.word _sidata 22/* start address for the .data section. defined in linker script */ 23.word _sdata 24/* end address for the .data section. defined in linker script */ 25.word _edata 26/* start address for the .bss section. defined in linker script */ 27.word _sbss 28/* end address for the .bss section. defined in linker script */ 29.word _ebss 30 31// .equ Initial_spTop, 0x20000200 32.equ BootRAM, 0xF1E0F85F 33/** 34 * @brief This is the code that gets called when the processor first 35 * starts execution following a reset event. Only the absolutely 36 * necessary set is performed, after which the application 37 * supplied main() routine is called. 38 * @param None 39 * @retval : None 40*/ 41 42 .section .text.Reset_Handler 43 .weak Reset_Handler 44 .type Reset_Handler, %function 45Reset_Handler: 46/* restore original stack pointer */ 47 ldr sp, =_estack /* set stack pointer */ 48 49/* Copy the data segment initializers from flash to SRAM */ 50 movs r1, #0 51 b LoopCopyDataInit 52 53CopyDataInit: 54 ldr r3, =_sidata 55 ldr r3, [r3, r1] 56 str r3, [r0, r1] 57 adds r1, r1, #4 58 59LoopCopyDataInit: 60 ldr r0, =_sdata 61 ldr r3, =_edata 62 adds r2, r0, r1 63 cmp r2, r3 64 bcc CopyDataInit 65 ldr r2, =_sbss 66 b LoopFillZerobss 67/* Zero fill the bss segment. */ 68FillZerobss: 69 movs r3, #0 70 str r3, [r2], #4 71 72LoopFillZerobss: 73 ldr r3, = _ebss 74 cmp r2, r3 75 bcc FillZerobss 76/* Call the application's entry point.*/ 77 bl main 78 bx lr 79.size Reset_Handler, .-Reset_Handler 80 81/** 82 * @brief This is the code that gets called when the processor receives an 83 * unexpected interrupt. This simply enters an infinite loop, preserving 84 * the system state for examination by a debugger. 85 * 86 * @param None 87 * @retval : None 88*/ 89 .section .text.Default_Handler,"ax",%progbits 90Default_Handler: 91Infinite_Loop: 92 b Infinite_Loop 93 .size Default_Handler, .-Default_Handler 94/****************************************************************************** 95* 96* The minimal vector table for a Cortex M3. Note that the proper constructs 97* must be placed on this to ensure that it ends up at physical address 98* 0x0000.0000. 99* 100******************************************************************************/ 101 .section .isr_vector,"a",%progbits 102 .type g_pfnVectors, %object 103 .size g_pfnVectors, .-g_pfnVectors 104 105g_pfnVectors: 106 .word _estack 107 .word Reset_Handler 108 .word NMI_Handler 109 .word HardFault_Handler 110 .word MemManage_Handler 111 .word BusFault_Handler 112 .word UsageFault_Handler 113 .word 0 114 .word 0 115 .word 0 116 .word 0 117 .word SVC_Handler 118 .word DebugMon_Handler 119 .word 0 120 .word PendSV_Handler 121 .word SysTick_Handler 122 123 .word CSV_IRQHandler 124 .word SWDT_IRQHandler 125 .word LVD_IRQHandler 126 .word WFG_IRQHandler 127 .word EXINT0_7_IRQHandler 128 .word EXINT8_15_IRQHandler 129 .word DTIM_QDU_IRQHandler 130 .word MFS0RX_IRQHandler 131 .word MFS0TX_IRQHandler 132 .word MFS1RX_IRQHandler 133 .word MFS1TX_IRQHandler 134 .word MFS2RX_IRQHandler 135 .word MFS2TX_IRQHandler 136 .word MFS3RX_IRQHandler 137 .word MFS3TX_IRQHandler 138 .word MFS4RX_IRQHandler 139 .word MFS4TX_IRQHandler 140 .word MFS5RX_IRQHandler 141 .word MFS5TX_IRQHandler 142 .word MFS6RX_IRQHandler 143 .word MFS6TX_IRQHandler 144 .word MFS7RX_IRQHandler 145 .word MFS7TX_IRQHandler 146 .word PPG_IRQHandler 147 .word OSC_PLL_WC_IRQHandler 148 .word ADC0_IRQHandler 149 .word ADC1_IRQHandler 150 .word ADC2_IRQHandler 151 .word FRTIM_IRQHandler 152 .word INCAP_IRQHandler 153 .word OUTCOMP_IRQHandler 154 .word BTIM_IRQHandler 155 .word CAN0_IRQHandler 156 .word CAN1_IRQHandler 157 .word USBF_IRQHandler 158 .word USBF_USBH_IRQHandler 159 .word RESERVED_1_IRQHandler 160 .word RESERVED_2_IRQHandler 161 .word DMAC0_IRQHandler 162 .word DMAC1_IRQHandler 163 .word DMAC2_IRQHandler 164 .word DMAC3_IRQHandler 165 .word DMAC4_IRQHandler 166 .word DMAC5_IRQHandler 167 .word DMAC6_IRQHandler 168 .word DMAC7_IRQHandler 169 .word RESERVED_3_IRQHandler 170 .word RESERVED_4_IRQHandler 171 172/******************************************************************************* 173* 174* Provide weak aliases for each Exception handler to the Default_Handler. 175* As they are weak aliases, any function with the same name will override 176* this definition. 177* 178*******************************************************************************/ 179 180 .weak NMI_Handler 181 .thumb_set NMI_Handler,Default_Handler 182 183 .weak HardFault_Handler 184 .thumb_set HardFault_Handler,Default_Handler 185 186 .weak MemManage_Handler 187 .thumb_set MemManage_Handler,Default_Handler 188 189 .weak BusFault_Handler 190 .thumb_set BusFault_Handler,Default_Handler 191 192 .weak UsageFault_Handler 193 .thumb_set UsageFault_Handler,Default_Handler 194 195 .weak SVC_Handler 196 .thumb_set SVC_Handler,Default_Handler 197 198 .weak DebugMon_Handler 199 .thumb_set DebugMon_Handler,Default_Handler 200 201 .weak PendSV_Handler 202 .thumb_set PendSV_Handler,Default_Handler 203 204 .weak SysTick_Handler 205 .thumb_set SysTick_Handler,Default_Handler 206 207 .weak CSV_IRQHandler 208 .thumb_set CSV_IRQHandler,Default_Handler 209 210 .weak SWDT_IRQHandler 211 .thumb_set SWDT_IRQHandler,Default_Handler 212 213 .weak LVD_IRQHandler 214 .thumb_set LVD_IRQHandler,Default_Handler 215 216 .weak WFG_IRQHandler 217 .thumb_set WFG_IRQHandler,Default_Handler 218 219 .weak EXINT0_7_IRQHandler 220 .thumb_set EXINT0_7_IRQHandler,Default_Handler 221 222 .weak EXINT8_15_IRQHandler 223 .thumb_set EXINT8_15_IRQHandler,Default_Handler 224 225 .weak DTIM_QDU_IRQHandler 226 .thumb_set DTIM_QDU_IRQHandler,Default_Handler 227 228 .weak MFS0RX_IRQHandler 229 .thumb_set MFS0RX_IRQHandler,Default_Handler 230 231 .weak MFS0TX_IRQHandler 232 .thumb_set MFS0TX_IRQHandler,Default_Handler 233 234 .weak MFS1RX_IRQHandler 235 .thumb_set MFS1RX_IRQHandler,Default_Handler 236 237 .weak MFS1TX_IRQHandler 238 .thumb_set MFS1TX_IRQHandler,Default_Handler 239 240 .weak MFS2RX_IRQHandler 241 .thumb_set MFS2RX_IRQHandler,Default_Handler 242 243 .weak MFS2TX_IRQHandler 244 .thumb_set MFS2TX_IRQHandler,Default_Handler 245 246 .weak MFS3RX_IRQHandler 247 .thumb_set MFS3RX_IRQHandler,Default_Handler 248 249 .weak MFS3TX_IRQHandler 250 .thumb_set MFS3TX_IRQHandler,Default_Handler 251 252 .weak MFS4RX_IRQHandler 253 .thumb_set MFS4RX_IRQHandler,Default_Handler 254 255 .weak MFS4TX_IRQHandler 256 .thumb_set MFS4TX_IRQHandler,Default_Handler 257 258 .weak MFS5RX_IRQHandler 259 .thumb_set MFS5RX_IRQHandler,Default_Handler 260 261 .weak MFS5TX_IRQHandler 262 .thumb_set MFS5TX_IRQHandler,Default_Handler 263 264 .weak MFS6RX_IRQHandler 265 .thumb_set MFS6RX_IRQHandler,Default_Handler 266 267 .weak MFS6TX_IRQHandler 268 .thumb_set MFS6TX_IRQHandler,Default_Handler 269 270 .weak MFS7RX_IRQHandler 271 .thumb_set MFS7RX_IRQHandler,Default_Handler 272 273 .weak MFS7TX_IRQHandler 274 .thumb_set MFS7TX_IRQHandler,Default_Handler 275 276 .weak PPG_IRQHandler 277 .thumb_set PPG_IRQHandler,Default_Handler 278 279 .weak OSC_PLL_WC_IRQHandler 280 .thumb_set OSC_PLL_WC_IRQHandler,Default_Handler 281 282 .weak ADC0_IRQHandler 283 .thumb_set ADC0_IRQHandler,Default_Handler 284 285 .weak ADC1_IRQHandler 286 .thumb_set ADC1_IRQHandler,Default_Handler 287 288 .weak ADC2_IRQHandler 289 .thumb_set ADC2_IRQHandler,Default_Handler 290 291 .weak FRTIM_IRQHandler 292 .thumb_set FRTIM_IRQHandler,Default_Handler 293 294 .weak INCAP_IRQHandler 295 .thumb_set INCAP_IRQHandler,Default_Handler 296 297 .weak OUTCOMP_IRQHandler 298 .thumb_set OUTCOMP_IRQHandler,Default_Handler 299 300 .weak BTIM_IRQHandler 301 .thumb_set BTIM_IRQHandler,Default_Handler 302 303 .weak CAN0_IRQHandler 304 .thumb_set CAN0_IRQHandler,Default_Handler 305 306 .weak CAN1_IRQHandler 307 .thumb_set CAN1_IRQHandler,Default_Handler 308 309 .weak USBF_IRQHandler 310 .thumb_set USBF_IRQHandler,Default_Handler 311 312 .weak USBF_USBH_IRQHandler 313 .thumb_set USBF_USBH_IRQHandler,Default_Handler 314 315 .weak RESERVED_1_IRQHandler 316 .thumb_set RESERVED_1_IRQHandler,Default_Handler 317 318 .weak RESERVED_2_IRQHandler 319 .thumb_set RESERVED_2_IRQHandler,Default_Handler 320 321 .weak DMAC0_IRQHandler 322 .thumb_set DMAC0_IRQHandler,Default_Handler 323 324 .weak DMAC1_IRQHandler 325 .thumb_set DMAC1_IRQHandler,Default_Handler 326 327 .weak DMAC2_IRQHandler 328 .thumb_set DMAC2_IRQHandler,Default_Handler 329 330 .weak DMAC3_IRQHandler 331 .thumb_set DMAC3_IRQHandler,Default_Handler 332 333 .weak DMAC4_IRQHandler 334 .thumb_set DMAC4_IRQHandler,Default_Handler 335 336 .weak DMAC5_IRQHandler 337 .thumb_set DMAC5_IRQHandler,Default_Handler 338 339 .weak DMAC6_IRQHandler 340 .thumb_set DMAC6_IRQHandler,Default_Handler 341 342 .weak DMAC7_IRQHandler 343 .thumb_set DMAC7_IRQHandler,Default_Handler 344 345 .weak RESERVED_3_IRQHandler 346 .thumb_set RESERVED_3_IRQHandler,Default_Handler 347 348 .weak RESERVED_4_IRQHandler 349 .thumb_set RESERVED_4_IRQHandler,Default_Handler 350 351