1 # 0 "deps//hal/stm32f3/stm32f3_startup.S" 2 # 0 "" 3 # 0 "" 4 # 1 "deps//hal/stm32f3/stm32f3_startup.S" 1 /** 2 ****************************************************************************** 3 * @file startup_stm32.s 4 * @author Ac6 5 * @version V1.0.0 6 * @date 12-June-2014 7 ****************************************************************************** 8 */ 9 10 .syntax unified 11 .cpu cortex-m4 12 .thumb 13 14 .global g_pfnVectors 15 .global Default_Handler 16 17 /* start address for the initialization values of the .data section. 18 defined in linker script */ 19 0000 00000000 .word _sidata 20 /* start address for the .data section. defined in linker script */ 21 0004 00000000 .word _sdata 22 /* end address for the .data section. defined in linker script */ 23 0008 00000000 .word _edata 24 /* start address for the .bss section. defined in linker script */ 25 000c 00000000 .word _sbss 26 /* end address for the .bss section. defined in linker script */ 27 0010 00000000 .word _ebss 28 29 .equ BootRAM, 0xF1E0F85F 30 /** 31 * @brief This is the code that gets called when the processor first 32 * starts execution following a reset event. Only the absolutely 33 * necessary set is performed, after which the application 34 * supplied main() routine is called. 35 * @param None 36 * @retval : None 37 */ 38 39 .section .text.Reset_Handler 40 .weak Reset_Handler 42 Reset_Handler: 43 44 /* Copy the data segment initializers from flash to SRAM */ 45:deps//hal/stm32f3/stm32f3_startup.S **** movs r1, #0 46:deps//hal/stm32f3/stm32f3_startup.S **** b LoopCopyDataInit 47 48 CopyDataInit: 49:deps//hal/stm32f3/stm32f3_startup.S **** ldr r3, =_sidata 50:deps//hal/stm32f3/stm32f3_startup.S **** ldr r3, [r3, r1] 51:deps//hal/stm32f3/stm32f3_startup.S **** str r3, [r0, r1] 52:deps//hal/stm32f3/stm32f3_startup.S **** adds r1, r1, #4 53 54 LoopCopyDataInit: 55:deps//hal/stm32f3/stm32f3_startup.S **** ldr r0, =_sdata 56:deps//hal/stm32f3/stm32f3_startup.S **** ldr r3, =_edata 57:deps//hal/stm32f3/stm32f3_startup.S **** adds r2, r0, r1 58:deps//hal/stm32f3/stm32f3_startup.S **** cmp r2, r3 59:deps//hal/stm32f3/stm32f3_startup.S **** bcc CopyDataInit 60:deps//hal/stm32f3/stm32f3_startup.S **** ldr r2, =_sbss 61:deps//hal/stm32f3/stm32f3_startup.S **** b LoopFillZerobss 62 /* Zero fill the bss segment. */ 63 FillZerobss: 64:deps//hal/stm32f3/stm32f3_startup.S **** movs r3, #0 65:deps//hal/stm32f3/stm32f3_startup.S **** str r3, [r2] 66:deps//hal/stm32f3/stm32f3_startup.S **** adds r2, r2, #4 67 68 LoopFillZerobss: 69:deps//hal/stm32f3/stm32f3_startup.S **** ldr r3, = _ebss 70:deps//hal/stm32f3/stm32f3_startup.S **** cmp r2, r3 71:deps//hal/stm32f3/stm32f3_startup.S **** bcc FillZerobss 72 73 /* Call the clock system intitialization function.*/ 74:deps//hal/stm32f3/stm32f3_startup.S **** bl SystemInit 75 /* Call static constructors */ 76:deps//hal/stm32f3/stm32f3_startup.S **** bl __libc_init_array 77 /* Call the application's entry point.*/ 78:deps//hal/stm32f3/stm32f3_startup.S **** bl main 79 80 81 82 LoopForever: 83:deps//hal/stm32f3/stm32f3_startup.S **** b LoopForever 84 86 87 /** 88 * @brief This is the code that gets called when the processor receives an 89 * unexpected interrupt. This simply enters an infinite loop, preserving 90 * the system state for examination by a debugger. 91 * 92 * @param None 93 * @retval : None 94 */ 95 .section .text.Default_Handler,"ax",%progbits 96 Default_Handler: 97 Infinite_Loop: 98:deps//hal/stm32f3/stm32f3_startup.S **** b Infinite_Loop 100 /****************************************************************************** 101 * 102 * The minimal vector table for a Cortex-M. Note that the proper constructs 103 * must be placed on this to ensure that it ends up at physical address 104 * 0x0000.0000. 105 * 106 ******************************************************************************/ 107 .section .isr_vector,"a",%progbits 110 111 g_pfnVectors: 112 0000 00000000 .word _estack 113 0004 00000000 .word Reset_Handler 114 0008 00000000 .word NMI_Handler 115 000c 00000000 .word HardFault_Handler 116 0010 00000000 .word MemManage_Handler 117 0014 00000000 .word BusFault_Handler 118 0018 00000000 .word UsageFault_Handler 119 001c 00000000 .word 0 120 0020 00000000 .word 0 121 0024 00000000 .word 0 122 0028 00000000 .word 0 123 002c 00000000 .word SVC_Handler 124 0030 00000000 .word DebugMon_Handler 125 0034 00000000 .word 0 126 0038 00000000 .word PendSV_Handler 127 003c 00000000 .word SysTick_Handler 128 0040 00000000 .word 0 129 0044 00000000 .word 0 130 0048 00000000 .word 0 131 004c 00000000 .word 0 132 0050 00000000 .word 0 133 0054 00000000 .word 0 134 0058 00000000 .word 0 135 005c 00000000 .word 0 136 0060 00000000 .word 0 137 0064 00000000 .word 0 138 0068 00000000 .word 0 139 006c 00000000 .word 0 140 0070 00000000 .word 0 141 0074 00000000 .word 0 142 0078 00000000 .word 0 143 007c 00000000 .word 0 144 0080 00000000 .word 0 145 0084 00000000 .word 0 146 0088 00000000 .word 0 147 008c 00000000 .word 0 148 0090 00000000 .word 0 149 0094 00000000 .word 0 150 0098 00000000 .word 0 151 009c 00000000 .word 0 152 00a0 00000000 .word 0 153 00a4 00000000 .word 0 154 00a8 00000000 .word 0 155 00ac 00000000 .word 0 156 00b0 00000000 .word 0 157 00b4 00000000 .word 0 158 00b8 00000000 .word 0 159 00bc 00000000 .word 0 160 00c0 00000000 .word 0 161 00c4 00000000 .word 0 162 00c8 00000000 .word 0 163 00cc 00000000 .word 0 164 00d0 00000000 .word 0 165 00d4 00000000 .word 0 166 00d8 00000000 .word 0 167 00dc 00000000 .word 0 168 00e0 00000000 .word 0 169 00e4 00000000 .word 0 170 00e8 00000000 .word 0 171 00ec 00000000 .word 0 172 00f0 00000000 .word 0 173 00f4 00000000 .word 0 174 00f8 00000000 .word 0 175 00fc 00000000 .word 0 176 0100 00000000 .word 0 177 0104 00000000 .word 0 178 0108 00000000 .word 0 179 010c 00000000 .word 0 180 0110 00000000 .word 0 181 0114 00000000 .word 0 182 0118 00000000 .word 0 183 011c 00000000 .word 0 184 0120 00000000 .word 0 185 0124 00000000 .word 0 186 0128 00000000 .word 0 187 012c 00000000 .word 0 188 0130 00000000 .word 0 189 0134 00000000 .word 0 190 0138 00000000 .word 0 191 013c 00000000 .word 0 192 0140 00000000 .word 0 193 0144 00000000 .word 0 194 0148 00000000 .word 0 195 014c 00000000 .word 0 196 0150 00000000 .word 0 197 0154 00000000 .word 0 198 0158 00000000 .word 0 199 015c 00000000 .word 0 200 0160 00000000 .word 0 201 0164 00000000 .word 0 202 0168 00000000 .word 0 203 016c 00000000 .word 0 204 0170 00000000 .word 0 205 0174 00000000 .word 0 206 0178 00000000 .word 0 207 017c 00000000 .word 0 208 0180 00000000 .word 0 209 0184 00000000 .word 0 210 211 /******************************************************************************* 212 * 213 * Provide weak aliases for each Exception handler to the Default_Handler. 214 * As they are weak aliases, any function with the same name will override 215 * this definition. 216 * 217 *******************************************************************************/ 218 219 .weak NMI_Handler 220 .thumb_set NMI_Handler,Default_Handler 221 222 .weak HardFault_Handler 223 .thumb_set HardFault_Handler,Default_Handler 224 225 .weak MemManage_Handler 226 .thumb_set MemManage_Handler,Default_Handler 227 228 .weak BusFault_Handler 229 .thumb_set BusFault_Handler,Default_Handler 230 231 .weak UsageFault_Handler 232 .thumb_set UsageFault_Handler,Default_Handler 233 234 .weak SVC_Handler 235 .thumb_set SVC_Handler,Default_Handler 236 237 .weak DebugMon_Handler 238 .thumb_set DebugMon_Handler,Default_Handler 239 240 .weak PendSV_Handler 241 .thumb_set PendSV_Handler,Default_Handler 242 243 .weak SysTick_Handler 244 .thumb_set SysTick_Handler,Default_Handler 245 246 .weak SystemInit DEFINED SYMBOLS deps//hal/stm32f3/stm32f3_startup.S:111 .isr_vector:0000000000000000 g_pfnVectors deps//hal/stm32f3/stm32f3_startup.S:96 .text.Default_Handler:0000000000000000 Default_Handler deps//hal/stm32f3/stm32f3_startup.S:29 *ABS*:00000000f1e0f85f BootRAM deps//hal/stm32f3/stm32f3_startup.S:42 .text.Reset_Handler:0000000000000000 Reset_Handler deps//hal/stm32f3/stm32f3_startup.S:45 .text.Reset_Handler:0000000000000000 $t deps//hal/stm32f3/stm32f3_startup.S:54 .text.Reset_Handler:000000000000000c LoopCopyDataInit deps//hal/stm32f3/stm32f3_startup.S:48 .text.Reset_Handler:0000000000000004 CopyDataInit deps//hal/stm32f3/stm32f3_startup.S:68 .text.Reset_Handler:0000000000000020 LoopFillZerobss deps//hal/stm32f3/stm32f3_startup.S:63 .text.Reset_Handler:000000000000001a FillZerobss deps//hal/stm32f3/stm32f3_startup.S:82 .text.Reset_Handler:0000000000000032 LoopForever deps//hal/stm32f3/stm32f3_startup.S:97 .text.Default_Handler:0000000000000000 Infinite_Loop deps//hal/stm32f3/stm32f3_startup.S:98 .text.Default_Handler:0000000000000000 $t deps//hal/stm32f3/stm32f3_startup.S:96 .text.Default_Handler:0000000000000000 NMI_Handler deps//hal/stm32f3/stm32f3_startup.S:96 .text.Default_Handler:0000000000000000 HardFault_Handler deps//hal/stm32f3/stm32f3_startup.S:96 .text.Default_Handler:0000000000000000 MemManage_Handler deps//hal/stm32f3/stm32f3_startup.S:96 .text.Default_Handler:0000000000000000 BusFault_Handler deps//hal/stm32f3/stm32f3_startup.S:96 .text.Default_Handler:0000000000000000 UsageFault_Handler deps//hal/stm32f3/stm32f3_startup.S:96 .text.Default_Handler:0000000000000000 SVC_Handler deps//hal/stm32f3/stm32f3_startup.S:96 .text.Default_Handler:0000000000000000 DebugMon_Handler deps//hal/stm32f3/stm32f3_startup.S:96 .text.Default_Handler:0000000000000000 PendSV_Handler deps//hal/stm32f3/stm32f3_startup.S:96 .text.Default_Handler:0000000000000000 SysTick_Handler deps//hal/stm32f3/stm32f3_startup.S:246 .text.Reset_Handler:0000000000000034 $d .text:0000000000000000 $d UNDEFINED SYMBOLS _sidata _sdata _edata _sbss _ebss SystemInit __libc_init_array main _estack