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-02-23 Bernard first implementation 9; */ 10 11;* <<< Use Configuration Wizard in Context Menu >>> 12 13; Amount of memory (in bytes) allocated for Stack 14; Tailor this value to your application needs 15; <h> Stack Configuration 16; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> 17; </h> 18 19Stack_Size EQU 0x00000200 20 21 AREA STACK, NOINIT, READWRITE, ALIGN=3 22Stack_Mem SPACE Stack_Size 23__initial_sp 24 25; Note: RT-Thread not use malloc/free in Keil MDK, therefore the heap size is 0. 26Heap_Size EQU 0x00000000 27 28 AREA HEAP, NOINIT, READWRITE, ALIGN=3 29__heap_base 30Heap_Mem SPACE Heap_Size 31__heap_limit 32 33 PRESERVE8 34 THUMB 35 36; Vector Table Mapped to Address 0 at Reset 37 AREA RESET, DATA, READONLY 38 EXPORT __Vectors 39 EXPORT __Vectors_End 40 EXPORT __Vectors_Size 41 42__Vectors DCD __initial_sp ; Top of Stack 43 DCD Reset_Handler ; Reset Handler 44 DCD NMI_Handler ; NMI Handler 45 DCD HardFault_Handler ; Hard Fault Handler 46 DCD MemManage_Handler ; MPU Fault Handler 47 DCD BusFault_Handler ; Bus Fault Handler 48 DCD UsageFault_Handler ; Usage Fault Handler 49 DCD 0 ; Reserved 50 DCD 0 ; Reserved 51 DCD 0 ; Reserved 52 DCD 0 ; Reserved 53 DCD SVC_Handler ; SVCall Handler 54 DCD DebugMon_Handler ; Debug Monitor Handler 55 DCD 0 ; Reserved 56 DCD PendSV_Handler ; PendSV Handler 57 DCD SysTick_Handler ; SysTick Handler 58 59 DCD CSV_Handler ; 0: Clock Super Visor 60 DCD SWDT_Handler ; 1: Software Watchdog Timer 61 DCD LVD_Handler ; 2: Low Voltage Detector 62 DCD MFT_WG_IRQHandler ; 3: Wave Form Generator / DTIF 63 DCD INT0_7_Handler ; 4: External Interrupt Request ch.0 to ch.7 64 DCD INT8_15_Handler ; 5: External Interrupt Request ch.8 to ch.15 65 DCD DT_Handler ; 6: Dual Timer / Quad Decoder 66 DCD MFS0RX_IRQHandler ; 7: MultiFunction Serial ch.0 67 DCD MFS0TX_IRQHandler ; 8: MultiFunction Serial ch.0 68 DCD MFS1RX_IRQHandler ; 9: MultiFunction Serial ch.1 69 DCD MFS1TX_IRQHandler ; 10: MultiFunction Serial ch.1 70 DCD MFS2RX_IRQHandler ; 11: MultiFunction Serial ch.2 71 DCD MFS2TX_IRQHandler ; 12: MultiFunction Serial ch.2 72 DCD MFS3RX_IRQHandler ; 13: MultiFunction Serial ch.3 73 DCD MFS3TX_IRQHandler ; 14: MultiFunction Serial ch.3 74 DCD MFS4RX_IRQHandler ; 15: MultiFunction Serial ch.4 75 DCD MFS4TX_IRQHandler ; 16: MultiFunction Serial ch.4 76 DCD MFS5RX_IRQHandler ; 17: MultiFunction Serial ch.5 77 DCD MFS5TX_IRQHandler ; 18: MultiFunction Serial ch.5 78 DCD MFS6RX_IRQHandler ; 19: MultiFunction Serial ch.6 79 DCD MFS6TX_IRQHandler ; 20: MultiFunction Serial ch.6 80 DCD MFS7RX_IRQHandler ; 21: MultiFunction Serial ch.7 81 DCD MFS7TX_IRQHandler ; 22: MultiFunction Serial ch.7 82 DCD PPG_Handler ; 23: PPG 83 DCD TIM_IRQHandler ; 24: OSC / PLL / Watch Counter 84 DCD ADC0_IRQHandler ; 25: ADC0 85 DCD ADC1_IRQHandler ; 26: ADC1 86 DCD ADC2_IRQHandler ; 27: ADC2 87 DCD MFT_FRT_IRQHandler ; 28: Free-run Timer 88 DCD MFT_IPC_IRQHandler ; 29: Input Capture 89 DCD MFT_OPC_IRQHandler ; 30: Output Compare 90 DCD BT_IRQHandler ; 31: Base Timer ch.0 to ch.7 91 DCD CAN0_IRQHandler ; 32: CAN ch.0 92 DCD CAN1_IRQHandler ; 33: CAN ch.1 93 DCD USBF_Handler ; 34: USB Function 94 DCD USB_Handler ; 35: USB Function / USB HOST 95 DCD DummyHandler ; 36: Reserved 96 DCD DummyHandler ; 37: Reserved 97 DCD DMAC0_Handler ; 38: DMAC ch.0 98 DCD DMAC1_Handler ; 39: DMAC ch.1 99 DCD DMAC2_Handler ; 40: DMAC ch.2 100 DCD DMAC3_Handler ; 41: DMAC ch.3 101 DCD DMAC4_Handler ; 42: DMAC ch.4 102 DCD DMAC5_Handler ; 43: DMAC ch.5 103 DCD DMAC6_Handler ; 44: DMAC ch.6 104 DCD DMAC7_Handler ; 45: DMAC ch.7 105 DCD DummyHandler ; 46: Reserved 106 DCD DummyHandler ; 47: Reserved 107__Vectors_End 108 109__Vectors_Size EQU __Vectors_End - __Vectors 110 111 AREA |.text|, CODE, READONLY 112 113; Reset handler routine 114Reset_Handler PROC 115 EXPORT Reset_Handler [WEAK] 116 IMPORT __main 117 IMPORT SystemInit 118 LDR R1, = __initial_sp ; restore original stack pointer 119 MSR MSP, R1 120 LDR R0, =SystemInit 121 BLX R0 122 LDR R0, =__main 123 BX R0 124 ENDP 125 126; Dummy Exception Handlers (infinite loops which can be modified) 127 128NMI_Handler PROC 129 EXPORT NMI_Handler [WEAK] 130 B . 131 ENDP 132HardFault_Handler\ 133 PROC 134 EXPORT HardFault_Handler [WEAK] 135 B . 136 ENDP 137MemManage_Handler\ 138 PROC 139 EXPORT MemManage_Handler [WEAK] 140 B . 141 ENDP 142BusFault_Handler\ 143 PROC 144 EXPORT BusFault_Handler [WEAK] 145 B . 146 ENDP 147UsageFault_Handler\ 148 PROC 149 EXPORT UsageFault_Handler [WEAK] 150 B . 151 ENDP 152SVC_Handler PROC 153 EXPORT SVC_Handler [WEAK] 154 B . 155 ENDP 156DebugMon_Handler\ 157 PROC 158 EXPORT DebugMon_Handler [WEAK] 159 B . 160 ENDP 161PendSV_Handler PROC 162 EXPORT PendSV_Handler [WEAK] 163 B . 164 ENDP 165SysTick_Handler PROC 166 EXPORT SysTick_Handler [WEAK] 167 B . 168 ENDP 169 170Default_Handler PROC 171 172 EXPORT CSV_Handler [WEAK] 173 EXPORT SWDT_Handler [WEAK] 174 EXPORT LVD_Handler [WEAK] 175 EXPORT MFT_WG_IRQHandler [WEAK] 176 EXPORT INT0_7_Handler [WEAK] 177 EXPORT INT8_15_Handler [WEAK] 178 EXPORT DT_Handler [WEAK] 179 EXPORT MFS0RX_IRQHandler [WEAK] 180 EXPORT MFS0TX_IRQHandler [WEAK] 181 EXPORT MFS1RX_IRQHandler [WEAK] 182 EXPORT MFS1TX_IRQHandler [WEAK] 183 EXPORT MFS2RX_IRQHandler [WEAK] 184 EXPORT MFS2TX_IRQHandler [WEAK] 185 EXPORT MFS3RX_IRQHandler [WEAK] 186 EXPORT MFS3TX_IRQHandler [WEAK] 187 EXPORT MFS4RX_IRQHandler [WEAK] 188 EXPORT MFS4TX_IRQHandler [WEAK] 189 EXPORT MFS5RX_IRQHandler [WEAK] 190 EXPORT MFS5TX_IRQHandler [WEAK] 191 EXPORT MFS6RX_IRQHandler [WEAK] 192 EXPORT MFS6TX_IRQHandler [WEAK] 193 EXPORT MFS7RX_IRQHandler [WEAK] 194 EXPORT MFS7TX_IRQHandler [WEAK] 195 EXPORT PPG_Handler [WEAK] 196 EXPORT TIM_IRQHandler [WEAK] 197 EXPORT ADC0_IRQHandler [WEAK] 198 EXPORT ADC1_IRQHandler [WEAK] 199 EXPORT ADC2_IRQHandler [WEAK] 200 EXPORT MFT_FRT_IRQHandler [WEAK] 201 EXPORT MFT_IPC_IRQHandler [WEAK] 202 EXPORT MFT_OPC_IRQHandler [WEAK] 203 EXPORT BT_IRQHandler [WEAK] 204 EXPORT CAN0_IRQHandler [WEAK] 205 EXPORT CAN1_IRQHandler [WEAK] 206 EXPORT USBF_Handler [WEAK] 207 EXPORT USB_Handler [WEAK] 208 EXPORT DMAC0_Handler [WEAK] 209 EXPORT DMAC1_Handler [WEAK] 210 EXPORT DMAC2_Handler [WEAK] 211 EXPORT DMAC3_Handler [WEAK] 212 EXPORT DMAC4_Handler [WEAK] 213 EXPORT DMAC5_Handler [WEAK] 214 EXPORT DMAC6_Handler [WEAK] 215 EXPORT DMAC7_Handler [WEAK] 216 EXPORT DummyHandler [WEAK] 217 218CSV_Handler 219SWDT_Handler 220LVD_Handler 221MFT_WG_IRQHandler 222INT0_7_Handler 223INT8_15_Handler 224DT_Handler 225MFS0RX_IRQHandler 226MFS0TX_IRQHandler 227MFS1RX_IRQHandler 228MFS1TX_IRQHandler 229MFS2RX_IRQHandler 230MFS2TX_IRQHandler 231MFS3RX_IRQHandler 232MFS3TX_IRQHandler 233MFS4RX_IRQHandler 234MFS4TX_IRQHandler 235MFS5RX_IRQHandler 236MFS5TX_IRQHandler 237MFS6RX_IRQHandler 238MFS6TX_IRQHandler 239MFS7RX_IRQHandler 240MFS7TX_IRQHandler 241PPG_Handler 242TIM_IRQHandler 243ADC0_IRQHandler 244ADC1_IRQHandler 245ADC2_IRQHandler 246MFT_FRT_IRQHandler 247MFT_IPC_IRQHandler 248MFT_OPC_IRQHandler 249BT_IRQHandler 250CAN0_IRQHandler 251CAN1_IRQHandler 252USBF_Handler 253USB_Handler 254DMAC0_Handler 255DMAC1_Handler 256DMAC2_Handler 257DMAC3_Handler 258DMAC4_Handler 259DMAC5_Handler 260DMAC6_Handler 261DMAC7_Handler 262DummyHandler 263 B . 264 ENDP 265 ALIGN 266 267; User Initial Stack & Heap 268 269 IF :DEF:__MICROLIB 270 EXPORT __initial_sp 271 EXPORT __heap_base 272 EXPORT __heap_limit 273 ELSE 274 IMPORT __use_two_region_memory 275 EXPORT __user_initial_stackheap 276__user_initial_stackheap 277 278 LDR R0, = Heap_Mem 279 LDR R1, =(Stack_Mem + Stack_Size) 280 LDR R2, = (Heap_Mem + Heap_Size) 281 LDR R3, = Stack_Mem 282 BX LR 283 284 ALIGN 285 ENDIF 286 287 END 288