1;/****************************************************************************** 2; * @file startup_M480.s 3; * @version V1.00 4; * @brief CMSIS Cortex-M4 Core Device Startup File for M480 5; * 6; * SPDX-License-Identifier: Apache-2.0 7; * @copyright (C) 2017-2020 Nuvoton Technology Corp. All rights reserved. 8;*****************************************************************************/ 9 10 MODULE ?cstartup 11 12 ;; Forward declaration of sections. 13 SECTION CSTACK:DATA:NOROOT(3) 14 15 SECTION .intvec:CODE:NOROOT(2) 16 17 EXTERN __iar_program_start 18 EXTERN HardFault_Handler 19 EXTERN SystemInit 20 PUBLIC __vector_table 21 PUBLIC __vector_table_0x1c 22 PUBLIC __Vectors 23 PUBLIC __Vectors_End 24 PUBLIC __Vectors_Size 25 26 DATA 27 28__vector_table 29 DCD sfe(CSTACK) 30 DCD Reset_Handler 31 32 DCD NMI_Handler 33 DCD HardFault_Handler 34 DCD MemManage_Handler 35 DCD BusFault_Handler 36 DCD UsageFault_Handler 37__vector_table_0x1c 38 DCD 0 39 DCD 0 40 DCD 0 41 DCD 0 42 DCD SVC_Handler 43 DCD DebugMon_Handler 44 DCD 0 45 DCD PendSV_Handler 46 DCD SysTick_Handler 47 48 ; External Interrupts 49 DCD BOD_IRQHandler ; 0: Brown Out detection 50 DCD IRC_IRQHandler ; 1: Internal RC 51 DCD PWRWU_IRQHandler ; 2: Power down wake up 52 DCD RAMPE_IRQHandler ; 3: RAM parity error 53 DCD CKFAIL_IRQHandler ; 4: Clock detection fail 54 DCD Default_Handler ; 5: Reserved 55 DCD RTC_IRQHandler ; 6: Real Time Clock 56 DCD TAMPER_IRQHandler ; 7: Tamper detection 57 DCD WDT_IRQHandler ; 8: Watchdog timer 58 DCD WWDT_IRQHandler ; 9: Window watchdog timer 59 DCD EINT0_IRQHandler ; 10: External Input 0 60 DCD EINT1_IRQHandler ; 11: External Input 1 61 DCD EINT2_IRQHandler ; 12: External Input 2 62 DCD EINT3_IRQHandler ; 13: External Input 3 63 DCD EINT4_IRQHandler ; 14: External Input 4 64 DCD EINT5_IRQHandler ; 15: External Input 5 65 DCD GPA_IRQHandler ; 16: GPIO Port A 66 DCD GPB_IRQHandler ; 17: GPIO Port B 67 DCD GPC_IRQHandler ; 18: GPIO Port C 68 DCD GPD_IRQHandler ; 19: GPIO Port D 69 DCD GPE_IRQHandler ; 20: GPIO Port E 70 DCD GPF_IRQHandler ; 21: GPIO Port F 71 DCD QSPI0_IRQHandler ; 22: QSPI0 72 DCD SPI0_IRQHandler ; 23: SPI0 73 DCD BRAKE0_IRQHandler ; 24: 74 DCD PWM0P0_IRQHandler ; 25: 75 DCD PWM0P1_IRQHandler ; 26: 76 DCD PWM0P2_IRQHandler ; 27: 77 DCD BRAKE1_IRQHandler ; 28: 78 DCD PWM1P0_IRQHandler ; 29: 79 DCD PWM1P1_IRQHandler ; 30: 80 DCD PWM1P2_IRQHandler ; 31: 81 DCD TMR0_IRQHandler ; 32: Timer 0 82 DCD TMR1_IRQHandler ; 33: Timer 1 83 DCD TMR2_IRQHandler ; 34: Timer 2 84 DCD TMR3_IRQHandler ; 35: Timer 3 85 DCD UART0_IRQHandler ; 36: UART0 86 DCD UART1_IRQHandler ; 37: UART1 87 DCD I2C0_IRQHandler ; 38: I2C0 88 DCD I2C1_IRQHandler ; 39: I2C1 89 DCD PDMA_IRQHandler ; 40: Peripheral DMA 90 DCD DAC_IRQHandler ; 41: DAC 91 DCD EADC00_IRQHandler ; 42: EADC0 interrupt source 0 92 DCD EADC01_IRQHandler ; 43: EADC0 interrupt source 1 93 DCD ACMP01_IRQHandler ; 44: ACMP0 and ACMP1 94 DCD Default_Handler ; 45: Reserved 95 DCD EADC02_IRQHandler ; 46: EADC0 interrupt source 2 96 DCD EADC03_IRQHandler ; 47: EADC0 interrupt source 3 97 DCD UART2_IRQHandler ; 48: UART2 98 DCD UART3_IRQHandler ; 49: UART3 99 DCD QSPI1_IRQHandler ; 50: QSPI1 100 DCD SPI1_IRQHandler ; 51: SPI1 101 DCD SPI2_IRQHandler ; 52: SPI2 102 DCD USBD_IRQHandler ; 53: USB device 103 DCD OHCI_IRQHandler ; 54: OHCI 104 DCD USBOTG_IRQHandler ; 55: USB OTG 105 DCD CAN0_IRQHandler ; 56: CAN0 106 DCD CAN1_IRQHandler ; 57: CAN1 107 DCD SC0_IRQHandler ; 58: 108 DCD SC1_IRQHandler ; 59: 109 DCD SC2_IRQHandler ; 60: 110 DCD Default_Handler ; 61: 111 DCD SPI3_IRQHandler ; 62: SPI3 112 DCD Default_Handler ; 63: 113 DCD SDH0_IRQHandler ; 64: SDH0 114 DCD USBD20_IRQHandler ; 65: USBD20 115 DCD EMAC_TX_IRQHandler ; 66: EMAC_TX 116 DCD EMAC_RX_IRQHandler ; 67: EMAX_RX 117 DCD I2S0_IRQHandler ; 68: I2S0 118 DCD Default_Handler ; 69: ToDo: Add description to this Interrupt 119 DCD OPA0_IRQHandler ; 70: OPA0 120 DCD CRYPTO_IRQHandler ; 71: CRYPTO 121 DCD GPG_IRQHandler ; 72: 122 DCD EINT6_IRQHandler ; 73: 123 DCD UART4_IRQHandler ; 74: UART4 124 DCD UART5_IRQHandler ; 75: UART5 125 DCD USCI0_IRQHandler ; 76: USCI0 126 DCD USCI1_IRQHandler ; 77: USCI1 127 DCD BPWM0_IRQHandler ; 78: BPWM0 128 DCD BPWM1_IRQHandler ; 79: BPWM1 129 DCD SPIM_IRQHandler ; 80: SPIM 130 DCD CCAP_IRQHandler ; 81: CCAP 131 DCD I2C2_IRQHandler ; 82: I2C2 132 DCD Default_Handler ; 83: 133 DCD QEI0_IRQHandler ; 84: QEI0 134 DCD QEI1_IRQHandler ; 85: QEI1 135 DCD ECAP0_IRQHandler ; 86: ECAP0 136 DCD ECAP1_IRQHandler ; 87: ECAP1 137 DCD GPH_IRQHandler ; 88: 138 DCD EINT7_IRQHandler ; 89: 139 DCD SDH1_IRQHandler ; 90: SDH1 140 DCD Default_Handler ; 91: 141 DCD EHCI_IRQHandler ; 92: EHCI 142 DCD USBOTG20_IRQHandler ; 93: 143 DCD Default_Handler ; 94: 144 DCD Default_Handler ; 95: 145 DCD Default_Handler ; 96: 146 DCD Default_Handler ; 97: 147 DCD Default_Handler ; 98: 148 DCD Default_Handler ; 99: 149 DCD Default_Handler ; 100: 150 DCD TRNG_IRQHandler ; 101: TRNG 151 DCD UART6_IRQHandler ; 102: UART6 152 DCD UART7_IRQHandler ; 103: UART7 153 DCD EADC10_IRQHandler ; 104: EADC1 interrupt source 0 154 DCD EADC11_IRQHandler ; 105: EADC1 interrupt source 1 155 DCD EADC12_IRQHandler ; 106: EADC1 interrupt source 2 156 DCD EADC13_IRQHandler ; 107: EADC1 interrupt source 3 157 DCD CAN2_IRQHandler ; 108: CAN2 158__Vectors_End 159 160__Vectors EQU __vector_table 161__Vectors_Size EQU __Vectors_End - __Vectors 162 163 164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 165;; 166;; Default interrupt handlers. 167;; 168 THUMB 169 170 PUBWEAK Reset_Handler 171 SECTION .text:CODE:REORDER:NOROOT(2) 172Reset_Handler 173 ; Unlock Register 174 LDR R0, =0x40000100 175 LDR R1, =0x59 176 STR R1, [R0] 177 LDR R1, =0x16 178 STR R1, [R0] 179 LDR R1, =0x88 180 STR R1, [R0] 181 182 #ifndef ENABLE_SPIM_CACHE 183 LDR R0, =0x40000200 ; R0 = Clock Controller Register Base Address 184 LDR R1, [R0,#0x4] ; R1 = 0x40000204 (AHBCLK) 185 ORR R1, R1, #0x4000 186 STR R1, [R0,#0x4] ; CLK->AHBCLK |= CLK_AHBCLK_SPIMCKEN_Msk; 187 188 LDR R0, =0x40007000 ; R0 = SPIM Register Base Address 189 LDR R1, [R0,#4] ; R1 = SPIM->CTL1 190 ORR R1, R1,#2 ; R1 |= SPIM_CTL1_CACHEOFF_Msk 191 STR R1, [R0,#4] ; _SPIM_DISABLE_CACHE() 192 LDR R1, [R0,#4] ; R1 = SPIM->CTL1 193 ORR R1, R1, #4 ; R1 |= SPIM_CTL1_CCMEN_Msk 194 STR R1, [R0,#4] ; _SPIM_ENABLE_CCM() 195 #endif 196 197 LDR R0, =SystemInit 198 BLX R0 199 200 ; Init POR 201 ; LDR R2, =0x40000024 202 ; LDR R1, =0x00005AA5 203 ; STR R1, [R2] 204 205 ; Lock register 206 LDR R0, =0x40000100 207 MOVS R1, #0 208 STR R1, [R0] 209 210 LDR R0, =__iar_program_start 211 BX R0 212 213 PUBWEAK NMI_Handler 214 SECTION .text:CODE:REORDER:NOROOT(1) 215NMI_Handler 216 B NMI_Handler 217 218 PUBWEAK MemManage_Handler 219 SECTION .text:CODE:REORDER:NOROOT(1) 220MemManage_Handler 221 B MemManage_Handler 222 223 PUBWEAK BusFault_Handler 224 SECTION .text:CODE:REORDER:NOROOT(1) 225BusFault_Handler 226 B BusFault_Handler 227 228 PUBWEAK UsageFault_Handler 229 SECTION .text:CODE:REORDER:NOROOT(1) 230UsageFault_Handler 231 B UsageFault_Handler 232 233 PUBWEAK SVC_Handler 234 SECTION .text:CODE:REORDER:NOROOT(1) 235SVC_Handler 236 B SVC_Handler 237 238 PUBWEAK DebugMon_Handler 239 SECTION .text:CODE:REORDER:NOROOT(1) 240DebugMon_Handler 241 B DebugMon_Handler 242 243 PUBWEAK PendSV_Handler 244 SECTION .text:CODE:REORDER:NOROOT(1) 245PendSV_Handler 246 B PendSV_Handler 247 248 PUBWEAK SysTick_Handler 249 SECTION .text:CODE:REORDER:NOROOT(1) 250SysTick_Handler 251 B SysTick_Handler 252 253 PUBWEAK BOD_IRQHandler 254 PUBWEAK IRC_IRQHandler 255 PUBWEAK PWRWU_IRQHandler 256 PUBWEAK RAMPE_IRQHandler 257 PUBWEAK CKFAIL_IRQHandler 258 PUBWEAK RTC_IRQHandler 259 PUBWEAK TAMPER_IRQHandler 260 PUBWEAK WDT_IRQHandler 261 PUBWEAK WWDT_IRQHandler 262 PUBWEAK EINT0_IRQHandler 263 PUBWEAK EINT1_IRQHandler 264 PUBWEAK EINT2_IRQHandler 265 PUBWEAK EINT3_IRQHandler 266 PUBWEAK EINT4_IRQHandler 267 PUBWEAK EINT5_IRQHandler 268 PUBWEAK GPA_IRQHandler 269 PUBWEAK GPB_IRQHandler 270 PUBWEAK GPC_IRQHandler 271 PUBWEAK GPD_IRQHandler 272 PUBWEAK GPE_IRQHandler 273 PUBWEAK GPF_IRQHandler 274 PUBWEAK QSPI0_IRQHandler 275 PUBWEAK SPI0_IRQHandler 276 PUBWEAK BRAKE0_IRQHandler 277 PUBWEAK PWM0P0_IRQHandler 278 PUBWEAK PWM0P1_IRQHandler 279 PUBWEAK PWM0P2_IRQHandler 280 PUBWEAK BRAKE1_IRQHandler 281 PUBWEAK PWM1P0_IRQHandler 282 PUBWEAK PWM1P1_IRQHandler 283 PUBWEAK PWM1P2_IRQHandler 284 PUBWEAK TMR0_IRQHandler 285 PUBWEAK TMR1_IRQHandler 286 PUBWEAK TMR2_IRQHandler 287 PUBWEAK TMR3_IRQHandler 288 PUBWEAK UART0_IRQHandler 289 PUBWEAK UART1_IRQHandler 290 PUBWEAK I2C0_IRQHandler 291 PUBWEAK I2C1_IRQHandler 292 PUBWEAK PDMA_IRQHandler 293 PUBWEAK DAC_IRQHandler 294 PUBWEAK EADC00_IRQHandler 295 PUBWEAK EADC01_IRQHandler 296 PUBWEAK ACMP01_IRQHandler 297 PUBWEAK EADC02_IRQHandler 298 PUBWEAK EADC03_IRQHandler 299 PUBWEAK UART2_IRQHandler 300 PUBWEAK UART3_IRQHandler 301 PUBWEAK QSPI1_IRQHandler 302 PUBWEAK SPI1_IRQHandler 303 PUBWEAK SPI2_IRQHandler 304 PUBWEAK USBD_IRQHandler 305 PUBWEAK OHCI_IRQHandler 306 PUBWEAK USBOTG_IRQHandler 307 PUBWEAK CAN0_IRQHandler 308 PUBWEAK CAN1_IRQHandler 309 PUBWEAK SC0_IRQHandler 310 PUBWEAK SC1_IRQHandler 311 PUBWEAK SC2_IRQHandler 312 PUBWEAK SPI3_IRQHandler 313 PUBWEAK SDH0_IRQHandler 314 PUBWEAK USBD20_IRQHandler 315 PUBWEAK EMAC_TX_IRQHandler 316 PUBWEAK EMAC_RX_IRQHandler 317 PUBWEAK I2S0_IRQHandler 318 PUBWEAK OPA0_IRQHandler 319 PUBWEAK CRYPTO_IRQHandler 320 PUBWEAK GPG_IRQHandler 321 PUBWEAK EINT6_IRQHandler 322 PUBWEAK UART4_IRQHandler 323 PUBWEAK UART5_IRQHandler 324 PUBWEAK USCI0_IRQHandler 325 PUBWEAK USCI1_IRQHandler 326 PUBWEAK BPWM0_IRQHandler 327 PUBWEAK BPWM1_IRQHandler 328 PUBWEAK SPIM_IRQHandler 329 PUBWEAK CCAP_IRQHandler 330 PUBWEAK I2C2_IRQHandler 331 PUBWEAK QEI0_IRQHandler 332 PUBWEAK QEI1_IRQHandler 333 PUBWEAK ECAP0_IRQHandler 334 PUBWEAK ECAP1_IRQHandler 335 PUBWEAK GPH_IRQHandler 336 PUBWEAK EINT7_IRQHandler 337 PUBWEAK SDH1_IRQHandler 338 PUBWEAK EHCI_IRQHandler 339 PUBWEAK USBOTG20_IRQHandler 340 PUBWEAK TRNG_IRQHandler 341 PUBWEAK UART6_IRQHandler 342 PUBWEAK UART7_IRQHandler 343 PUBWEAK EADC10_IRQHandler 344 PUBWEAK EADC11_IRQHandler 345 PUBWEAK EADC12_IRQHandler 346 PUBWEAK EADC13_IRQHandler 347 PUBWEAK CAN2_IRQHandler 348 SECTION .text:CODE:REORDER:NOROOT(1) 349 350BOD_IRQHandler 351IRC_IRQHandler 352PWRWU_IRQHandler 353RAMPE_IRQHandler 354CKFAIL_IRQHandler 355RTC_IRQHandler 356TAMPER_IRQHandler 357WDT_IRQHandler 358WWDT_IRQHandler 359EINT0_IRQHandler 360EINT1_IRQHandler 361EINT2_IRQHandler 362EINT3_IRQHandler 363EINT4_IRQHandler 364EINT5_IRQHandler 365GPA_IRQHandler 366GPB_IRQHandler 367GPC_IRQHandler 368GPD_IRQHandler 369GPE_IRQHandler 370GPF_IRQHandler 371QSPI0_IRQHandler 372SPI0_IRQHandler 373BRAKE0_IRQHandler 374PWM0P0_IRQHandler 375PWM0P1_IRQHandler 376PWM0P2_IRQHandler 377BRAKE1_IRQHandler 378PWM1P0_IRQHandler 379PWM1P1_IRQHandler 380PWM1P2_IRQHandler 381TMR0_IRQHandler 382TMR1_IRQHandler 383TMR2_IRQHandler 384TMR3_IRQHandler 385UART0_IRQHandler 386UART1_IRQHandler 387I2C0_IRQHandler 388I2C1_IRQHandler 389PDMA_IRQHandler 390DAC_IRQHandler 391EADC00_IRQHandler 392EADC01_IRQHandler 393ACMP01_IRQHandler 394EADC02_IRQHandler 395EADC03_IRQHandler 396UART2_IRQHandler 397UART3_IRQHandler 398QSPI1_IRQHandler 399SPI1_IRQHandler 400SPI2_IRQHandler 401USBD_IRQHandler 402OHCI_IRQHandler 403USBOTG_IRQHandler 404CAN0_IRQHandler 405CAN1_IRQHandler 406SC0_IRQHandler 407SC1_IRQHandler 408SC2_IRQHandler 409SPI3_IRQHandler 410SDH0_IRQHandler 411USBD20_IRQHandler 412EMAC_TX_IRQHandler 413EMAC_RX_IRQHandler 414I2S0_IRQHandler 415OPA0_IRQHandler 416CRYPTO_IRQHandler 417GPG_IRQHandler 418EINT6_IRQHandler 419UART4_IRQHandler 420UART5_IRQHandler 421USCI0_IRQHandler 422USCI1_IRQHandler 423BPWM0_IRQHandler 424BPWM1_IRQHandler 425SPIM_IRQHandler 426CCAP_IRQHandler 427I2C2_IRQHandler 428QEI0_IRQHandler 429QEI1_IRQHandler 430ECAP0_IRQHandler 431ECAP1_IRQHandler 432GPH_IRQHandler 433EINT7_IRQHandler 434SDH1_IRQHandler 435EHCI_IRQHandler 436USBOTG20_IRQHandler 437TRNG_IRQHandler 438UART6_IRQHandler 439UART7_IRQHandler 440EADC10_IRQHandler 441EADC11_IRQHandler 442EADC12_IRQHandler 443EADC13_IRQHandler 444CAN2_IRQHandler 445Default_Handler 446 B Default_Handler 447 448 449 450 451 END 452;/*** (C) COPYRIGHT 2016 Nuvoton Technology Corp. ***/ 453