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; * 2009-01-17 Bernard first version 9; * 2009-09-27 Bernard add protect when contex switch occurs 10; */ 11 12#include "rtconfig.h" 13 14 MODULE ?cstartup 15 16;; ICODE is the same segment as cstartup. By placing __low_level_init 17;; in the same segment, we make sure it can be reached with BL. */ 18 19 SECTION CSTACK:DATA:NOROOT(3) 20 SECTION .icode:CODE:NOROOT(2) 21 22#ifdef RT_USING_UART2 23 IMPORT MFS2RX_IRQHandler 24#endif 25 PUBLIC __low_level_init 26 27 PUBWEAK SystemInit_ExtMemCtl 28 SECTION .text:CODE:REORDER(2) 29 THUMB 30SystemInit_ExtMemCtl 31 BX LR 32 33__low_level_init: 34 ;; Initialize hardware. 35 LDR R0, = SystemInit_ExtMemCtl ; initialize external memory controller 36 MOV R11, LR 37 BLX R0 38 LDR R1, =sfe(CSTACK) ; restore original stack pointer 39 MSR MSP, R1 40 MOV R0,#1 41 ;; Return with BX to be independent of mode of caller 42 BX R11 43 44 ;; Forward declaration of sections. 45 SECTION .intvec:CODE:NOROOT(2) 46 47 EXTERN __iar_program_start 48 PUBLIC __vector_table 49 50 DATA 51__vector_table 52 DCD sfe(CSTACK) 53 DCD __iar_program_start 54 55 DCD NMI_Handler ; NMI Handler 56 DCD HardFault_Handler ; Hard Fault Handler 57 DCD MemManage_Handler ; MPU Fault Handler 58 DCD BusFault_Handler ; Bus Fault Handler 59 DCD UsageFault_Handler ; Usage Fault Handler 60 DCD 0 ; Reserved 61 DCD 0 ; Reserved 62 DCD 0 ; Reserved 63 DCD 0 ; Reserved 64 DCD SVC_Handler ; SVCall Handler 65 DCD DebugMon_Handler ; Debug Monitor Handler 66 DCD 0 ; Reserved 67 DCD PendSV_Handler ; PendSV Handler 68 DCD SysTick_Handler ; SysTick Handler 69 70 ; External Interrupts 71 DCD CSV_IRQHandler ; Clock Super Visor 72 DCD SWDT_IRQHandler ; Software Watchdog Timer 73 DCD LVD_IRQHandler ; Low Voltage Detector 74 DCD WFG_IRQHandler ; Wave Form Generator 75 DCD EXINT0_7_IRQHandler ; External Interrupt Request ch.0 to ch.7 76 DCD EXINT8_15_IRQHandler ; External Interrupt Request ch.8 to ch.15 77 DCD DTIM_QDU_IRQHandler ; Dual Timer / Quad Decoder 78 DCD MFS0RX_IRQHandler ; MultiFunction Serial ch.0 79 DCD MFS0TX_IRQHandler ; MultiFunction Serial ch.0 80 DCD MFS1RX_IRQHandler ; MultiFunction Serial ch.1 81 DCD MFS1TX_IRQHandler ; MultiFunction Serial ch.1 82#ifdef RT_USING_UART2 83 DCD MFS2RX_IRQHandler ; MultiFunction Serial ch.2 84#else 85 DCD NULL_IRQHandler ; MultiFunction Serial ch.2 86#endif 87 DCD MFS2TX_IRQHandler ; MultiFunction Serial ch.2 88 DCD MFS3RX_IRQHandler ; MultiFunction Serial ch.3 89 DCD MFS3TX_IRQHandler ; MultiFunction Serial ch.3 90 DCD MFS4RX_IRQHandler ; MultiFunction Serial ch.4 91 DCD MFS4TX_IRQHandler ; MultiFunction Serial ch.4 92 DCD MFS5RX_IRQHandler ; MultiFunction Serial ch.5 93 DCD MFS5TX_IRQHandler ; MultiFunction Serial ch.5 94 DCD MFS6RX_IRQHandler ; MultiFunction Serial ch.6 95 DCD MFS6TX_IRQHandler ; MultiFunction Serial ch.6 96 DCD MFS7RX_IRQHandler ; MultiFunction Serial ch.7 97 DCD MFS7TX_IRQHandler ; MultiFunction Serial ch.7 98 DCD PPG_IRQHandler ; PPG 99 DCD OSC_PLL_WC_IRQHandler ; OSC / PLL / Watch Counter 100 DCD ADC0_IRQHandler ; ADC0 101 DCD ADC1_IRQHandler ; ADC1 102 DCD ADC2_IRQHandler ; ADC2 103 DCD FRTIM_IRQHandler ; Free-run Timer 104 DCD INCAP_IRQHandler ; Input Capture 105 DCD OUTCOMP_IRQHandler ; Output Compare 106 DCD BTIM_IRQHandler ; Base Timer ch.0 to ch.7 107 DCD CAN0_IRQHandler ; CAN ch.0 108 DCD CAN1_IRQHandler ; CAN ch.1 109 DCD USBF_IRQHandler ; USB Function 110 DCD USBF_USBH_IRQHandler ; USB Function / USB HOST 111 DCD RESERVED_1_IRQHandler ; Reserved_1 112 DCD RESERVED_2_IRQHandler ; Reserved_2 113 DCD DMAC0_IRQHandler ; DMAC ch.0 114 DCD DMAC1_IRQHandler ; DMAC ch.1 115 DCD DMAC2_IRQHandler ; DMAC ch.2 116 DCD DMAC3_IRQHandler ; DMAC ch.3 117 DCD DMAC4_IRQHandler ; DMAC ch.4 118 DCD DMAC5_IRQHandler ; DMAC ch.5 119 DCD DMAC6_IRQHandler ; DMAC ch.6 120 DCD DMAC7_IRQHandler ; DMAC ch.7 121 DCD RESERVED_3_IRQHandler ; Reserved_3 122 DCD RESERVED_4_IRQHandler ; Reserved_4 123 124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 125;; 126;; Default interrupt handlers. 127;; 128 THUMB 129 130 PUBWEAK NMI_Handler 131 SECTION .text:CODE:REORDER(1) 132NMI_Handler 133 B NMI_Handler 134 PUBWEAK HardFault_Handler 135 SECTION .text:CODE:REORDER(1) 136HardFault_Handler 137 B HardFault_Handler 138 PUBWEAK MemManage_Handler 139 SECTION .text:CODE:REORDER(1) 140MemManage_Handler 141 B MemManage_Handler 142 PUBWEAK BusFault_Handler 143 SECTION .text:CODE:REORDER(1) 144BusFault_Handler 145 B BusFault_Handler 146 PUBWEAK UsageFault_Handler 147 SECTION .text:CODE:REORDER(1) 148UsageFault_Handler 149 B UsageFault_Handler 150 PUBWEAK SVC_Handler 151 SECTION .text:CODE:REORDER(1) 152SVC_Handler 153 B SVC_Handler 154 PUBWEAK DebugMon_Handler 155 SECTION .text:CODE:REORDER(1) 156DebugMon_Handler 157 B DebugMon_Handler 158 PUBWEAK PendSV_Handler 159 SECTION .text:CODE:REORDER(1) 160PendSV_Handler 161 B PendSV_Handler 162 PUBWEAK SysTick_Handler 163 SECTION .text:CODE:REORDER(1) 164SysTick_Handler 165 B SysTick_Handler 166 PUBWEAK CSV_IRQHandler 167 SECTION .text:CODE:REORDER(1) 168CSV_IRQHandler 169 B CSV_IRQHandler 170 PUBWEAK SWDT_IRQHandler 171 SECTION .text:CODE:REORDER(1) 172SWDT_IRQHandler 173 B SWDT_IRQHandler 174 PUBWEAK LVD_IRQHandler 175 SECTION .text:CODE:REORDER(1) 176LVD_IRQHandler 177 B LVD_IRQHandler 178 PUBWEAK WFG_IRQHandler 179 SECTION .text:CODE:REORDER(1) 180WFG_IRQHandler 181 B WFG_IRQHandler 182 PUBWEAK EXINT0_7_IRQHandler 183 SECTION .text:CODE:REORDER(1) 184EXINT0_7_IRQHandler 185 B EXINT0_7_IRQHandler 186 PUBWEAK EXINT8_15_IRQHandler 187 SECTION .text:CODE:REORDER(1) 188EXINT8_15_IRQHandler 189 B EXINT8_15_IRQHandler 190 PUBWEAK DTIM_QDU_IRQHandler 191 SECTION .text:CODE:REORDER(1) 192DTIM_QDU_IRQHandler 193 B DTIM_QDU_IRQHandler 194 PUBWEAK MFS0RX_IRQHandler 195 SECTION .text:CODE:REORDER(1) 196MFS0RX_IRQHandler 197 B MFS0RX_IRQHandler 198 PUBWEAK MFS0TX_IRQHandler 199 SECTION .text:CODE:REORDER(1) 200MFS0TX_IRQHandler 201 B MFS0TX_IRQHandler 202 PUBWEAK MFS1RX_IRQHandler 203 SECTION .text:CODE:REORDER(1) 204MFS1RX_IRQHandler 205 B MFS1RX_IRQHandler 206 PUBWEAK MFS1TX_IRQHandler 207 SECTION .text:CODE:REORDER(1) 208MFS1TX_IRQHandler 209 B MFS1TX_IRQHandler 210 PUBWEAK NULL_IRQHandler 211 SECTION .text:CODE:REORDER(1) 212NULL_IRQHandler 213 B NULL_IRQHandler 214 PUBWEAK MFS2TX_IRQHandler 215 SECTION .text:CODE:REORDER(1) 216MFS2TX_IRQHandler 217 B MFS2TX_IRQHandler 218 PUBWEAK MFS3RX_IRQHandler 219 SECTION .text:CODE:REORDER(1) 220MFS3RX_IRQHandler 221 B MFS3RX_IRQHandler 222 PUBWEAK MFS3TX_IRQHandler 223 SECTION .text:CODE:REORDER(1) 224MFS3TX_IRQHandler 225 B MFS3TX_IRQHandler 226 PUBWEAK MFS4RX_IRQHandler 227 SECTION .text:CODE:REORDER(1) 228MFS4RX_IRQHandler 229 B MFS4RX_IRQHandler 230 PUBWEAK MFS4TX_IRQHandler 231 SECTION .text:CODE:REORDER(1) 232MFS4TX_IRQHandler 233 B MFS4TX_IRQHandler 234 PUBWEAK MFS5RX_IRQHandler 235 SECTION .text:CODE:REORDER(1) 236MFS5RX_IRQHandler 237 B MFS5RX_IRQHandler 238 PUBWEAK MFS5TX_IRQHandler 239 SECTION .text:CODE:REORDER(1) 240MFS5TX_IRQHandler 241 B MFS5TX_IRQHandler 242 PUBWEAK MFS6RX_IRQHandler 243 SECTION .text:CODE:REORDER(1) 244MFS6RX_IRQHandler 245 B MFS6RX_IRQHandler 246 PUBWEAK MFS6TX_IRQHandler 247 SECTION .text:CODE:REORDER(1) 248MFS6TX_IRQHandler 249 B MFS6TX_IRQHandler 250 PUBWEAK MFS7RX_IRQHandler 251 SECTION .text:CODE:REORDER(1) 252MFS7RX_IRQHandler 253 B MFS7RX_IRQHandler 254 PUBWEAK MFS7TX_IRQHandler 255 SECTION .text:CODE:REORDER(1) 256MFS7TX_IRQHandler 257 B MFS7TX_IRQHandler 258 PUBWEAK PPG_IRQHandler 259 SECTION .text:CODE:REORDER(1) 260PPG_IRQHandler 261 B PPG_IRQHandler 262 PUBWEAK OSC_PLL_WC_IRQHandler 263 SECTION .text:CODE:REORDER(1) 264OSC_PLL_WC_IRQHandler 265 B OSC_PLL_WC_IRQHandler 266 PUBWEAK ADC0_IRQHandler 267 SECTION .text:CODE:REORDER(1) 268ADC0_IRQHandler 269 B ADC0_IRQHandler 270 PUBWEAK ADC1_IRQHandler 271 SECTION .text:CODE:REORDER(1) 272ADC1_IRQHandler 273 B ADC1_IRQHandler 274 PUBWEAK ADC2_IRQHandler 275 SECTION .text:CODE:REORDER(1) 276ADC2_IRQHandler 277 B ADC2_IRQHandler 278 PUBWEAK FRTIM_IRQHandler 279 SECTION .text:CODE:REORDER(1) 280FRTIM_IRQHandler 281 B FRTIM_IRQHandler 282 PUBWEAK INCAP_IRQHandler 283 SECTION .text:CODE:REORDER(1) 284INCAP_IRQHandler 285 B INCAP_IRQHandler 286 PUBWEAK OUTCOMP_IRQHandler 287 SECTION .text:CODE:REORDER(1) 288OUTCOMP_IRQHandler 289 B OUTCOMP_IRQHandler 290 PUBWEAK BTIM_IRQHandler 291 SECTION .text:CODE:REORDER(1) 292BTIM_IRQHandler 293 B BTIM_IRQHandler 294 PUBWEAK CAN0_IRQHandler 295 SECTION .text:CODE:REORDER(1) 296CAN0_IRQHandler 297 B CAN0_IRQHandler 298 PUBWEAK CAN1_IRQHandler 299 SECTION .text:CODE:REORDER(1) 300CAN1_IRQHandler 301 B CAN1_IRQHandler 302 PUBWEAK USBF_IRQHandler 303 SECTION .text:CODE:REORDER(1) 304USBF_IRQHandler 305 B USBF_IRQHandler 306 PUBWEAK USBF_USBH_IRQHandler 307 SECTION .text:CODE:REORDER(1) 308USBF_USBH_IRQHandler 309 B USBF_USBH_IRQHandler 310 PUBWEAK RESERVED_1_IRQHandler 311 SECTION .text:CODE:REORDER(1) 312RESERVED_1_IRQHandler 313 B RESERVED_1_IRQHandler 314 PUBWEAK RESERVED_2_IRQHandler 315 SECTION .text:CODE:REORDER(1) 316RESERVED_2_IRQHandler 317 B RESERVED_2_IRQHandler 318 PUBWEAK DMAC0_IRQHandler 319 SECTION .text:CODE:REORDER(1) 320DMAC0_IRQHandler 321 B DMAC0_IRQHandler 322 PUBWEAK DMAC1_IRQHandler 323 SECTION .text:CODE:REORDER(1) 324DMAC1_IRQHandler 325 B DMAC1_IRQHandler 326 PUBWEAK DMAC2_IRQHandler 327 SECTION .text:CODE:REORDER(1) 328DMAC2_IRQHandler 329 B DMAC2_IRQHandler 330 PUBWEAK DMAC3_IRQHandler 331 SECTION .text:CODE:REORDER(1) 332DMAC3_IRQHandler 333 B DMAC3_IRQHandler 334 PUBWEAK DMAC4_IRQHandler 335 SECTION .text:CODE:REORDER(1) 336DMAC4_IRQHandler 337 B DMAC4_IRQHandler 338 PUBWEAK DMAC5_IRQHandler 339 SECTION .text:CODE:REORDER(1) 340DMAC5_IRQHandler 341 B DMAC5_IRQHandler 342 PUBWEAK DMAC6_IRQHandler 343 SECTION .text:CODE:REORDER(1) 344DMAC6_IRQHandler 345 B DMAC6_IRQHandler 346 PUBWEAK DMAC7_IRQHandler 347 SECTION .text:CODE:REORDER(1) 348DMAC7_IRQHandler 349 B DMAC7_IRQHandler 350 PUBWEAK RESERVED_3_IRQHandler 351 SECTION .text:CODE:REORDER(1) 352RESERVED_3_IRQHandler 353 B RESERVED_3_IRQHandler 354 PUBWEAK RESERVED_4_IRQHandler 355 SECTION .text:CODE:REORDER(1) 356RESERVED_4_IRQHandler 357 B RESERVED_4_IRQHandler 358 359 END 360