1/* 2 * Copyright (c) 2022 FuZhou Lockzhiner Electronic Co., Ltd. All rights reserved. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16/* 17;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------ 18*/ 19 20 .syntax unified 21 .arch armv7e-m 22 23 .extern _shdf_text 24 .extern _hdf_text_start 25 .extern _hdf_text_end 26 27 .extern _sdata 28 .extern _data_start 29 .extern _data_end 30 31 .extern _bss_start 32 .extern _bss_end 33 34 .extern IntDefaultHandler 35 .extern SystemInit 36 .extern Main 37 38 .section .isr_vector 39 .align 2 40 .globl __Vectors 41 .globl __Vectors_End 42 .globl __Vectors_Size 43__Vectors: 44 .long _StackTop /* Top of Stack */ 45 .long Reset_Handler /* Reset Handler */ 46 .long NMI_Handler /* -14 NMI Handler */ 47 .long HardFault_Handler /* -13 Hard Fault Handler */ 48 .long MemManage_Handler /* -12 MPU Fault Handler */ 49 .long BusFault_Handler /* -11 Bus Fault Handler */ 50 .long UsageFault_Handler /* -10 Usage Fault Handler */ 51 .long 0 /* Reserved */ 52 .long 0 /* Reserved */ 53 .long 0 /* Reserved */ 54 .long 0 /* Reserved */ 55 .long SVC_Handler /* -5 SVCall Handler */ 56 .long DebugMon_Handler /* -4 Debug Monitor Handler */ 57 .long 0 /* Reserved */ 58 .long PendSV_Handler /* -2 PendSV Handler */ 59 .long SysTick_Handler /* -1 SysTick Handler */ 60 61 /* Interrupts */ 62 .space (64 * 4) /* Interrupts 0 .. 63 are left out */ 63__Vectors_End: 64 .equ __Vectors_Size, __Vectors_End - __Vectors 65 .size __Vectors, . - __Vectors 66 67 .thumb 68 .section .text 69 .align 2 70 71 .thumb_func 72 .type Reset_Handler, %function 73 .globl Reset_Handler 74 .fnstart 75Reset_Handler: 76 ldr sp, =_StackTop /* set stack pointer */ 77 78/* Single HDF_TEXT section scheme. 79 * 80 * All addresses must be aligned to 4 bytes boundary. 81 */ 82 ldr r1, =_shdf_text 83 ldr r2, =_hdf_text_start 84 ldr r3, =_hdf_text_end 85 86.L_loop_hdf: 87 cmp r2, r3 88 ittt lt 89 ldrlt r0, [r1], #4 90 strlt r0, [r2], #4 91 blt .L_loop_hdf 92 93/* Single DATA section scheme. 94 * 95 * All addresses must be aligned to 4 bytes boundary. 96 */ 97 ldr r1, =_sdata 98 ldr r2, =_data_start 99 ldr r3, =_data_end 100 101.L_loop_data: 102 cmp r2, r3 103 ittt lt 104 ldrlt r0, [r1], #4 105 strlt r0, [r2], #4 106 blt .L_loop_data 107 108/* Single BSS section scheme. 109 * 110 * Both addresses must be aligned to 4 bytes boundary. 111 */ 112 ldr r1, =_bss_start 113 ldr r2, =_bss_end 114 115 movs r0, 0 116.L_loop_bss: 117 cmp r1, r2 118 itt lt 119 strlt r0, [r1], #4 120 blt .L_loop_bss 121 122 bl SystemInit 123 bl Main 124 125 .fnend 126 .size Reset_Handler, . - Reset_Handler 127 128 129 .thumb_func 130 .type Default_Handler, %function 131 .weak Default_Handler 132 .fnstart 133Default_Handler: 134 b . 135 .fnend 136 .size Default_Handler, . - Default_Handler 137 138/* Macro to define default exception/interrupt handlers. 139 * Default handler are weak symbols with an endless loop. 140 * They can be overwritten by real handlers. 141 */ 142 .macro Set_Default_Handler Handler_Name 143 .weak \Handler_Name 144 .set \Handler_Name, Default_Handler 145 .endm 146 147/* Default exception/interrupt handler */ 148 149 Set_Default_Handler NMI_Handler 150 Set_Default_Handler HardFault_Handler 151 Set_Default_Handler MemManage_Handler 152 Set_Default_Handler BusFault_Handler 153 Set_Default_Handler UsageFault_Handler 154 Set_Default_Handler SVC_Handler 155 Set_Default_Handler DebugMon_Handler 156 Set_Default_Handler PendSV_Handler 157 Set_Default_Handler SysTick_Handler 158 159 .end 160