blob: 52d9473420d43e1b0dcf145fd93acb007967ebb0 [file] [log] [blame]
;/**************************************************************************//**
; * @file startup_TC8234.s
; * @version V2.00
; * $Revision: 9 $
; * $Date: 16/08/27 12:33p $
; * @brief Startup Source File
; *
; * @note
; * Copyright (C) 2016 Nuvoton Technology Corp. All rights reserved.
; *
; ******************************************************************************/
;/*
;//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------
;*/
; <h> Stack Configuration
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
IF :LNOT: :DEF: Stack_Size
Stack_Size EQU 0x00000800
ENDIF
AREA STACK, NOINIT, READWRITE, ALIGN=3
Stack_Mem SPACE Stack_Size
__initial_sp
; <h> Heap Configuration
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
; </h>
IF :LNOT: :DEF: Heap_Size
Heap_Size EQU 0x00000000
ENDIF
AREA HEAP, NOINIT, READWRITE, ALIGN=3
__heap_base
Heap_Mem SPACE Heap_Size
__heap_limit
PRESERVE8
THUMB
; Vector Table Mapped to Address 0 at Reset
AREA RESET, DATA, READONLY
EXPORT __Vectors
EXPORT __Vectors_End
EXPORT __Vectors_Size
IMPORT SendChar_ToUART
__Vectors DCD __initial_sp ; Top of Stack
DCD Reset_Handler ; Reset Handler
DCD NMI_Handler ; NMI Handler
DCD HardFault_Handler ; Hard Fault Handler
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD SVC_Handler ; SVCall Handler
DCD 0 ; Reserved
DCD 0 ; Reserved
DCD PendSV_Handler ; PendSV Handler
DCD SysTick_Handler ; SysTick Handler
; External Interrupts
; maximum of 32 External Interrupts are possible
DCD BOD_IRQHandler ; 0
DCD IRC_IRQHandler ; 1
DCD PWRWU_IRQHandler ; 2
DCD SRAM_IRQHandler ; 3
DCD CLKFAIL_IRQHandler ; 4
DCD DEFAULT_IRQHandler ; 5
DCD RTC_IRQHandler ; 6
DCD TAMPER_IRQHandler ; 7
DCD WDT_IRQHandler ; 8
DCD WWDT_IRQHandler ; 9
DCD EINT0_IRQHandler ; 10
DCD EINT1_IRQHandler ; 11
DCD EINT2_IRQHandler ; 12
DCD EINT3_IRQHandler ; 13
DCD EINT4_IRQHandler ; 14
DCD EINT5_IRQHandler ; 15
DCD GPA_IRQHandler ; 16
DCD GPB_IRQHandler ; 17
DCD GPC_IRQHandler ; 18
DCD GPD_IRQHandler ; 19
DCD GPE_IRQHandler ; 20
DCD GPF_IRQHandler ; 21
DCD QSPI0_IRQHandler ; 22
DCD SPI0_IRQHandler ; 23
DCD BRAKE0_IRQHandler ; 24
DCD EPWM0_P0_IRQHandler ; 25
DCD EPWM0_P1_IRQHandler ; 26
DCD EPWM0_P2_IRQHandler ; 27
DCD BRAKE1_IRQHandler ; 28
DCD EPWM1_P0_IRQHandler ; 29
DCD EPWM1_P1_IRQHandler ; 30
DCD EPWM1_P2_IRQHandler ; 31
DCD TMR0_IRQHandler ; 32
DCD TMR1_IRQHandler ; 33
DCD TMR2_IRQHandler ; 34
DCD TMR3_IRQHandler ; 35
DCD UART0_IRQHandler ; 36
DCD UART1_IRQHandler ; 37
DCD I2C0_IRQHandler ; 38
DCD I2C1_IRQHandler ; 39
DCD PDMA0_IRQHandler ; 40
DCD DAC_IRQHandler ; 41
DCD EADC0_IRQHandler ; 42
DCD EADC1_IRQHandler ; 43
DCD ACMP01_IRQHandler ; 44
DCD DEFAULT_IRQHandler ; 45
DCD EADC2_IRQHandler ; 46
DCD EADC3_IRQHandler ; 47
DCD UART2_IRQHandler ; 48
DCD UART3_IRQHandler ; 49
DCD DEFAULT_IRQHandler ; 50
DCD SPI1_IRQHandler ; 51
DCD SPI2_IRQHandler ; 52
DCD USBD_IRQHandler ; 53
DCD USBH_IRQHandler ; 54
DCD USBOTG_IRQHandler ; 55
DCD CAN0_IRQHandler ; 56
DCD DEFAULT_IRQHandler ; 57
DCD SC0_IRQHandler ; 58
DCD SC1_IRQHandler ; 59
DCD SC2_IRQHandler ; 60
DCD DEFAULT_IRQHandler ; 61
DCD SPI3_IRQHandler ; 62
DCD DEFAULT_IRQHandler ; 63
DCD SDH0_IRQHandler ; 64
DCD DEFAULT_IRQHandler ; 65
DCD DEFAULT_IRQHandler ; 66
DCD DEFAULT_IRQHandler ; 67
DCD I2S0_IRQHandler ; 68
DCD DEFAULT_IRQHandler ; 69
DCD OPA0_IRQHandler ; 70
DCD CRPT_IRQHandler ; 71
DCD GPG_IRQHandler ; 72
DCD EINT6_IRQHandler ; 73
DCD UART4_IRQHandler ; 74
DCD UART5_IRQHandler ; 75
DCD USCI0_IRQHandler ; 76
DCD USCI1_IRQHandler ; 77
DCD BPWM0_IRQHandler ; 78
DCD BPWM1_IRQHandler ; 79
DCD DEFAULT_IRQHandler ; 80
DCD DEFAULT_IRQHandler ; 81
DCD I2C2_IRQHandler ; 82
DCD DEFAULT_IRQHandler ; 83
DCD QEI0_IRQHandler ; 84
DCD QEI1_IRQHandler ; 85
DCD ECAP0_IRQHandler ; 86
DCD ECAP1_IRQHandler ; 87
DCD GPH_IRQHandler ; 88
DCD EINT7_IRQHandler ; 89
DCD DEFAULT_IRQHandler ; 90
DCD DEFAULT_IRQHandler ; 91
DCD DEFAULT_IRQHandler ; 92
DCD DEFAULT_IRQHandler ; 93
DCD DEFAULT_IRQHandler ; 94
DCD DEFAULT_IRQHandler ; 95
DCD DEFAULT_IRQHandler ; 96
DCD DEFAULT_IRQHandler ; 97
DCD PDMA1_IRQHandler ; 98
DCD SCU_IRQHandler ; 99
DCD DEFAULT_IRQHandler ; 100
DCD TRNG_IRQHandler ; 101
__Vectors_End
__Vectors_Size EQU __Vectors_End - __Vectors
AREA |.text|, CODE, READONLY
; Reset Handler
Reset_Handler PROC
EXPORT Reset_Handler [WEAK]
IMPORT SystemInit
IMPORT __main
LDR R0, =SystemInit
BLX R0
LDR R0, =__main
BX R0
ENDP
; Dummy Exception Handlers (infinite loops which can be modified)
NMI_Handler PROC
EXPORT NMI_Handler [WEAK]
B .
ENDP
HardFault_Handler\
PROC
IMPORT ProcessHardFault
EXPORT HardFault_Handler [WEAK]
MOV R0, LR
MRS R1, MSP
MRS R2, PSP
LDR R3, =ProcessHardFault
BLX R3
BX R0
ENDP
ProcessHardFaultx\
PROC
EXPORT ProcessHardFaultx [WEAK]
B .
ENDP
SVC_Handler PROC
EXPORT SVC_Handler [WEAK]
B .
ENDP
PendSV_Handler PROC
EXPORT PendSV_Handler [WEAK]
B .
ENDP
SysTick_Handler PROC
EXPORT SysTick_Handler [WEAK]
B .
ENDP
Default_Handler PROC
EXPORT BOD_IRQHandler [WEAK] ; 0
EXPORT IRC_IRQHandler [WEAK] ; 1
EXPORT PWRWU_IRQHandler [WEAK] ; 2
EXPORT SRAM_IRQHandler [WEAK] ; 3
EXPORT CLKFAIL_IRQHandler [WEAK] ; 4
;EXPORT 0 [WEAK] ; 5
EXPORT RTC_IRQHandler [WEAK] ; 6
EXPORT TAMPER_IRQHandler [WEAK] ; 7
EXPORT WDT_IRQHandler [WEAK] ; 8
EXPORT WWDT_IRQHandler [WEAK] ; 9
EXPORT EINT0_IRQHandler [WEAK] ; 10
EXPORT EINT1_IRQHandler [WEAK] ; 11
EXPORT EINT2_IRQHandler [WEAK] ; 12
EXPORT EINT3_IRQHandler [WEAK] ; 13
EXPORT EINT4_IRQHandler [WEAK] ; 14
EXPORT EINT5_IRQHandler [WEAK] ; 15
EXPORT GPA_IRQHandler [WEAK] ; 16
EXPORT GPB_IRQHandler [WEAK] ; 17
EXPORT GPC_IRQHandler [WEAK] ; 18
EXPORT GPD_IRQHandler [WEAK] ; 19
EXPORT GPE_IRQHandler [WEAK] ; 20
EXPORT GPF_IRQHandler [WEAK] ; 21
EXPORT QSPI0_IRQHandler [WEAK] ; 22
EXPORT SPI0_IRQHandler [WEAK] ; 23
EXPORT BRAKE0_IRQHandler [WEAK] ; 24
EXPORT EPWM0_P0_IRQHandler [WEAK] ; 25
EXPORT EPWM0_P1_IRQHandler [WEAK] ; 26
EXPORT EPWM0_P2_IRQHandler [WEAK] ; 27
EXPORT BRAKE1_IRQHandler [WEAK] ; 28
EXPORT EPWM1_P0_IRQHandler [WEAK] ; 29
EXPORT EPWM1_P1_IRQHandler [WEAK] ; 30
EXPORT EPWM1_P2_IRQHandler [WEAK] ; 31
EXPORT TMR0_IRQHandler [WEAK] ; 32
EXPORT TMR1_IRQHandler [WEAK] ; 33
EXPORT TMR2_IRQHandler [WEAK] ; 34
EXPORT TMR3_IRQHandler [WEAK] ; 35
EXPORT UART0_IRQHandler [WEAK] ; 36
EXPORT UART1_IRQHandler [WEAK] ; 37
EXPORT I2C0_IRQHandler [WEAK] ; 38
EXPORT I2C1_IRQHandler [WEAK] ; 39
EXPORT PDMA0_IRQHandler [WEAK] ; 40
EXPORT DAC_IRQHandler [WEAK] ; 41
EXPORT EADC0_IRQHandler [WEAK] ; 42
EXPORT EADC1_IRQHandler [WEAK] ; 43
EXPORT ACMP01_IRQHandler [WEAK] ; 44
;EXPORT 0 [WEAK] ; 45
EXPORT EADC2_IRQHandler [WEAK] ; 46
EXPORT EADC3_IRQHandler [WEAK] ; 47
EXPORT UART2_IRQHandler [WEAK] ; 48
EXPORT UART3_IRQHandler [WEAK] ; 49
;EXPORT 0 [WEAK] ; 50
EXPORT SPI1_IRQHandler [WEAK] ; 51
EXPORT SPI2_IRQHandler [WEAK] ; 52
EXPORT USBD_IRQHandler [WEAK] ; 53
EXPORT USBH_IRQHandler [WEAK] ; 54
EXPORT USBOTG_IRQHandler [WEAK] ; 55
EXPORT CAN0_IRQHandler [WEAK] ; 56
EXPORT CAN1_IRQHandler [WEAK] ; 57
EXPORT SC0_IRQHandler [WEAK] ; 58
EXPORT SC1_IRQHandler [WEAK] ; 59
EXPORT SC2_IRQHandler [WEAK] ; 60
EXPORT SC3_IRQHandler [WEAK] ; 61
EXPORT SPI3_IRQHandler [WEAK] ; 62
;EXPORT 0 [WEAK] ; 63
EXPORT SDH0_IRQHandler [WEAK] ; 64
;EXPORT 0 [WEAK] ; 65
;EXPORT 0 [WEAK] ; 66
;EXPORT 0 [WEAK] ; 67
EXPORT I2S0_IRQHandler [WEAK] ; 68
;EXPORT 0 [WEAK] ; 69
EXPORT OPA0_IRQHandler [WEAK] ; 70
EXPORT CRPT_IRQHandler [WEAK] ; 71
EXPORT GPG_IRQHandler [WEAK] ; 72
EXPORT EINT6_IRQHandler [WEAK] ; 73
EXPORT UART4_IRQHandler [WEAK] ; 74
EXPORT UART5_IRQHandler [WEAK] ; 75
EXPORT USCI0_IRQHandler [WEAK] ; 76
EXPORT USCI1_IRQHandler [WEAK] ; 77
EXPORT BPWM0_IRQHandler [WEAK] ; 78
EXPORT BPWM1_IRQHandler [WEAK] ; 79
;EXPORT 0 [WEAK] ; 80
;EXPORT 0 [WEAK] ; 81
EXPORT I2C2_IRQHandler [WEAK] ; 82
;EXPORT 0 [WEAK] ; 83
EXPORT QEI0_IRQHandler [WEAK] ; 84
EXPORT QEI1_IRQHandler [WEAK] ; 85
EXPORT ECAP0_IRQHandler [WEAK] ; 86
EXPORT ECAP1_IRQHandler [WEAK] ; 87
EXPORT GPH_IRQHandler [WEAK] ; 88
EXPORT EINT7_IRQHandler [WEAK] ; 89
EXPORT SDH1_IRQHandler [WEAK] ; 90
;EXPORT 0 [WEAK] ; 91
;EXPORT USBH_IRQHandler [WEAK] ; 92
;EXPORT 0 [WEAK] ; 93
;EXPORT 0 [WEAK] ; 94
;EXPORT 0 [WEAK] ; 95
;EXPORT 0 [WEAK] ; 96
;EXPORT 0 [WEAK] ; 97
EXPORT PDMA1_IRQHandler [WEAK] ; 98
EXPORT SCU_IRQHandler [WEAK] ; 99
;EXPORT 0 [WEAK] ; 100
EXPORT TRNG_IRQHandler [WEAK] ; 101
EXPORT DEFAULT_IRQHandler [WEAK]
BOD_IRQHandler ; 0
IRC_IRQHandler ; 1
PWRWU_IRQHandler ; 2
SRAM_IRQHandler ; 3
CLKFAIL_IRQHandler ; 4
;0 ; 5
RTC_IRQHandler ; 6
TAMPER_IRQHandler ; 7
WDT_IRQHandler ; 8
WWDT_IRQHandler ; 9
EINT0_IRQHandler ; 10
EINT1_IRQHandler ; 11
EINT2_IRQHandler ; 12
EINT3_IRQHandler ; 13
EINT4_IRQHandler ; 14
EINT5_IRQHandler ; 15
GPA_IRQHandler ; 16
GPB_IRQHandler ; 17
GPC_IRQHandler ; 18
GPD_IRQHandler ; 19
GPE_IRQHandler ; 20
GPF_IRQHandler ; 21
QSPI0_IRQHandler ; 22
SPI0_IRQHandler ; 23
BRAKE0_IRQHandler ; 24
EPWM0_P0_IRQHandler ; 25
EPWM0_P1_IRQHandler ; 26
EPWM0_P2_IRQHandler ; 27
BRAKE1_IRQHandler ; 28
EPWM1_P0_IRQHandler ; 29
EPWM1_P1_IRQHandler ; 30
EPWM1_P2_IRQHandler ; 31
TMR0_IRQHandler ; 32
TMR1_IRQHandler ; 33
TMR2_IRQHandler ; 34
TMR3_IRQHandler ; 35
UART0_IRQHandler ; 36
UART1_IRQHandler ; 37
I2C0_IRQHandler ; 38
I2C1_IRQHandler ; 39
PDMA0_IRQHandler ; 40
DAC_IRQHandler ; 41
EADC0_IRQHandler ; 42
EADC1_IRQHandler ; 43
ACMP01_IRQHandler ; 44
;0 ; 45
EADC2_IRQHandler ; 46
EADC3_IRQHandler ; 47
UART2_IRQHandler ; 48
UART3_IRQHandler ; 49
;0 ; 50
SPI1_IRQHandler ; 51
SPI2_IRQHandler ; 52
USBD_IRQHandler ; 53
USBH_IRQHandler ; 54
USBOTG_IRQHandler ; 55
CAN0_IRQHandler ; 56
CAN1_IRQHandler ; 57
SC0_IRQHandler ; 58
SC1_IRQHandler ; 59
SC2_IRQHandler ; 60
SC3_IRQHandler ; 61
SPI3_IRQHandler ; 62
;0 ; 63
SDH0_IRQHandler ; 64
;0 ; 65
;0 ; 66
;0 ; 67
I2S0_IRQHandler ; 68
;0 ; 69
OPA0_IRQHandler ; 70
CRPT_IRQHandler ; 71
GPG_IRQHandler ; 72
EINT6_IRQHandler ; 73
UART4_IRQHandler ; 74
UART5_IRQHandler ; 75
USCI0_IRQHandler ; 76
USCI1_IRQHandler ; 77
BPWM0_IRQHandler ; 78
BPWM1_IRQHandler ; 79
;0 ; 80
;0 ; 81
I2C2_IRQHandler ; 82
;0 ; 83
QEI0_IRQHandler ; 84
QEI1_IRQHandler ; 85
ECAP0_IRQHandler ; 86
ECAP1_IRQHandler ; 87
GPH_IRQHandler ; 88
EINT7_IRQHandler ; 89
SDH1_IRQHandler ; 90
;0 ; 91
;USBH_IRQHandler ; 92
;0 ; 93
;0 ; 94
;0 ; 95
;0 ; 96
;0 ; 97
PDMA1_IRQHandler ; 98
SCU_IRQHandler ; 99
;0 ; 100
TRNG_IRQHandler ; 101
DEFAULT_IRQHandler
B .
ENDP
ALIGN
; User Initial Stack & Heap
IF :DEF:__MICROLIB
EXPORT __initial_sp
EXPORT __heap_base
EXPORT __heap_limit
ELSE
IMPORT __use_two_region_memory
EXPORT __user_initial_stackheap
__user_initial_stackheap PROC
LDR R0, = Heap_Mem
LDR R1, = (Stack_Mem + Stack_Size)
LDR R2, = (Heap_Mem + Heap_Size)
LDR R3, = Stack_Mem
BX LR
ENDP
ALIGN
ENDIF
;int32_t SH_DoCommand(int32_t n32In_R0, int32_t n32In_R1, int32_t *pn32Out_R0)
SH_DoCommand PROC
EXPORT SH_DoCommand
IMPORT SH_Return
BKPT 0xAB ; Wait ICE or HardFault
LDR R3, =SH_Return
MOV R4, lr
BLX R3 ; Call SH_Return. The return value is in R0
BX R4 ; Return value = R0
ENDP
__PC PROC
EXPORT __PC
MOV r0, lr
BLX lr
ALIGN
ENDP
END