|
|
/*****************************************************************************/
|
|
|
/* startup_LPC17xx.s: Startup file for LPC17xx device series */
|
|
|
/*****************************************************************************/
|
|
|
/* Version: CodeSourcery Sourcery G++ Lite (with CS3) */
|
|
|
/*****************************************************************************/
|
|
|
|
|
|
|
|
|
/*
|
|
|
//*** <<< Use Configuration Wizard in Context Menu >>> ***
|
|
|
*/
|
|
|
|
|
|
|
|
|
/*
|
|
|
// <h> Stack Configuration
|
|
|
// <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
|
|
// </h>
|
|
|
*/
|
|
|
|
|
|
.equ Stack_Size, 0x00000100
|
|
|
.section ".stack", "w"
|
|
|
.align 3
|
|
|
.globl __cs3_stack_mem
|
|
|
.globl __cs3_stack_size
|
|
|
__cs3_stack_mem:
|
|
|
.if Stack_Size
|
|
|
.space Stack_Size
|
|
|
.endif
|
|
|
.size __cs3_stack_mem, . - __cs3_stack_mem
|
|
|
.set __cs3_stack_size, . - __cs3_stack_mem
|
|
|
|
|
|
|
|
|
/*
|
|
|
// <h> Heap Configuration
|
|
|
// <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
|
|
// </h>
|
|
|
*/
|
|
|
|
|
|
.equ Heap_Size, 0x00001000
|
|
|
|
|
|
.section ".heap", "w"
|
|
|
.align 3
|
|
|
.globl __cs3_heap_start
|
|
|
.globl __cs3_heap_end
|
|
|
__cs3_heap_start:
|
|
|
.if Heap_Size
|
|
|
.space Heap_Size
|
|
|
.endif
|
|
|
__cs3_heap_end:
|
|
|
|
|
|
|
|
|
/* Vector Table */
|
|
|
|
|
|
.section ".cs3.interrupt_vector"
|
|
|
.globl __cs3_interrupt_vector_cortex_m
|
|
|
.type __cs3_interrupt_vector_cortex_m, %object
|
|
|
|
|
|
__cs3_interrupt_vector_cortex_m:
|
|
|
.long __cs3_stack /* Top of Stack */
|
|
|
.long __cs3_reset /* Reset Handler */
|
|
|
.long NMI_Handler /* NMI Handler */
|
|
|
.long HardFault_Handler /* Hard Fault Handler */
|
|
|
.long MemManage_Handler /* MPU Fault Handler */
|
|
|
.long BusFault_Handler /* Bus Fault Handler */
|
|
|
.long UsageFault_Handler /* Usage Fault Handler */
|
|
|
.long 0 /* Reserved */
|
|
|
.long 0 /* Reserved */
|
|
|
.long 0 /* Reserved */
|
|
|
.long 0 /* Reserved */
|
|
|
.long SVC_Handler /* SVCall Handler */
|
|
|
.long DebugMon_Handler /* Debug Monitor Handler */
|
|
|
.long 0 /* Reserved */
|
|
|
.long PendSV_Handler /* PendSV Handler */
|
|
|
.long SysTick_Handler /* SysTick Handler */
|
|
|
|
|
|
/* External Interrupts */
|
|
|
.long WDT_IRQHandler /* 16: Watchdog Timer */
|
|
|
.long TIMER0_IRQHandler /* 17: Timer0 */
|
|
|
.long TIMER1_IRQHandler /* 18: Timer1 */
|
|
|
.long TIMER2_IRQHandler /* 19: Timer2 */
|
|
|
.long TIMER3_IRQHandler /* 20: Timer3 */
|
|
|
.long UART0_IRQHandler /* 21: UART0 */
|
|
|
.long UART1_IRQHandler /* 22: UART1 */
|
|
|
.long UART2_IRQHandler /* 23: UART2 */
|
|
|
.long UART3_IRQHandler /* 24: UART3 */
|
|
|
.long PWM1_IRQHandler /* 25: PWM1 */
|
|
|
.long I2C0_IRQHandler /* 26: I2C0 */
|
|
|
.long I2C1_IRQHandler /* 27: I2C1 */
|
|
|
.long I2C2_IRQHandler /* 28: I2C2 */
|
|
|
.long SPI_IRQHandler /* 29: SPI */
|
|
|
.long SSP0_IRQHandler /* 30: SSP0 */
|
|
|
.long SSP1_IRQHandler /* 31: SSP1 */
|
|
|
.long PLL0_IRQHandler /* 32: PLL0 Lock (Main PLL) */
|
|
|
.long RTC_IRQHandler /* 33: Real Time Clock */
|
|
|
.long EINT0_IRQHandler /* 34: External Interrupt 0 */
|
|
|
.long EINT1_IRQHandler /* 35: External Interrupt 1 */
|
|
|
.long EINT2_IRQHandler /* 36: External Interrupt 2 */
|
|
|
.long EINT3_IRQHandler /* 37: External Interrupt 3 */
|
|
|
.long ADC_IRQHandler /* 38: A/D Converter */
|
|
|
.long BOD_IRQHandler /* 39: Brown-Out Detect */
|
|
|
.long USB_IRQHandler /* 40: USB */
|
|
|
.long CAN_IRQHandler /* 41: CAN */
|
|
|
.long DMA_IRQHandler /* 42: General Purpose DMA */
|
|
|
.long I2S_IRQHandler /* 43: I2S */
|
|
|
.long ENET_IRQHandler /* 44: Ethernet */
|
|
|
.long RIT_IRQHandler /* 45: Repetitive Interrupt Timer */
|
|
|
.long MCPWM_IRQHandler /* 46: Motor Control PWM */
|
|
|
.long QEI_IRQHandler /* 47: Quadrature Encoder Interface */
|
|
|
.long PLL1_IRQHandler /* 48: PLL1 Lock (USB PLL) */
|
|
|
.long USBActivity_IRQHandler /* 49: USB Activity */
|
|
|
.long CANActivity_IRQHandler /* 50: CAN Activity */
|
|
|
|
|
|
.size __cs3_interrupt_vector_cortex_m, . - __cs3_interrupt_vector_cortex_m
|
|
|
|
|
|
|
|
|
.thumb
|
|
|
|
|
|
|
|
|
/* Reset Handler */
|
|
|
|
|
|
.section .cs3.reset,"x",%progbits
|
|
|
.thumb_func
|
|
|
.globl __cs3_reset_cortex_m
|
|
|
.type __cs3_reset_cortex_m, %function
|
|
|
__cs3_reset_cortex_m:
|
|
|
.fnstart
|
|
|
LDR R0, =SystemInit
|
|
|
BLX R0
|
|
|
.if (RAM_MODE)
|
|
|
LDR R0,=main
|
|
|
BX R0
|
|
|
.else
|
|
|
LDR R0,=_start
|
|
|
BX R0
|
|
|
.endif
|
|
|
.pool
|
|
|
.cantunwind
|
|
|
.fnend
|
|
|
.size __cs3_reset_cortex_m,.-__cs3_reset_cortex_m
|
|
|
|
|
|
.section ".text"
|
|
|
|
|
|
/* Exception Handlers */
|
|
|
|
|
|
.weak NMI_Handler
|
|
|
.type NMI_Handler, %function
|
|
|
NMI_Handler:
|
|
|
B .
|
|
|
.size NMI_Handler, . - NMI_Handler
|
|
|
|
|
|
.weak HardFault_Handler
|
|
|
.type HardFault_Handler, %function
|
|
|
HardFault_Handler:
|
|
|
B .
|
|
|
.size HardFault_Handler, . - HardFault_Handler
|
|
|
|
|
|
.weak MemManage_Handler
|
|
|
.type MemManage_Handler, %function
|
|
|
MemManage_Handler:
|
|
|
B .
|
|
|
.size MemManage_Handler, . - MemManage_Handler
|
|
|
|
|
|
.weak BusFault_Handler
|
|
|
.type BusFault_Handler, %function
|
|
|
BusFault_Handler:
|
|
|
B .
|
|
|
.size BusFault_Handler, . - BusFault_Handler
|
|
|
|
|
|
.weak UsageFault_Handler
|
|
|
.type UsageFault_Handler, %function
|
|
|
UsageFault_Handler:
|
|
|
B .
|
|
|
.size UsageFault_Handler, . - UsageFault_Handler
|
|
|
|
|
|
.weak SVC_Handler
|
|
|
.type SVC_Handler, %function
|
|
|
SVC_Handler:
|
|
|
B .
|
|
|
.size SVC_Handler, . - SVC_Handler
|
|
|
|
|
|
.weak DebugMon_Handler
|
|
|
.type DebugMon_Handler, %function
|
|
|
DebugMon_Handler:
|
|
|
B .
|
|
|
.size DebugMon_Handler, . - DebugMon_Handler
|
|
|
|
|
|
.weak PendSV_Handler
|
|
|
.type PendSV_Handler, %function
|
|
|
PendSV_Handler:
|
|
|
B .
|
|
|
.size PendSV_Handler, . - PendSV_Handler
|
|
|
|
|
|
.weak SysTick_Handler
|
|
|
.type SysTick_Handler, %function
|
|
|
SysTick_Handler:
|
|
|
B .
|
|
|
.size SysTick_Handler, . - SysTick_Handler
|
|
|
|
|
|
|
|
|
/* IRQ Handlers */
|
|
|
|
|
|
.globl Default_Handler
|
|
|
.type Default_Handler, %function
|
|
|
Default_Handler:
|
|
|
B .
|
|
|
.size Default_Handler, . - Default_Handler
|
|
|
|
|
|
.macro IRQ handler
|
|
|
.weak \handler
|
|
|
.set \handler, Default_Handler
|
|
|
.endm
|
|
|
|
|
|
IRQ WDT_IRQHandler
|
|
|
IRQ TIMER0_IRQHandler
|
|
|
IRQ TIMER1_IRQHandler
|
|
|
IRQ TIMER2_IRQHandler
|
|
|
IRQ TIMER3_IRQHandler
|
|
|
IRQ UART0_IRQHandler
|
|
|
IRQ UART1_IRQHandler
|
|
|
IRQ UART2_IRQHandler
|
|
|
IRQ UART3_IRQHandler
|
|
|
IRQ PWM1_IRQHandler
|
|
|
IRQ I2C0_IRQHandler
|
|
|
IRQ I2C1_IRQHandler
|
|
|
IRQ I2C2_IRQHandler
|
|
|
IRQ SPI_IRQHandler
|
|
|
IRQ SSP0_IRQHandler
|
|
|
IRQ SSP1_IRQHandler
|
|
|
IRQ PLL0_IRQHandler
|
|
|
IRQ RTC_IRQHandler
|
|
|
IRQ EINT0_IRQHandler
|
|
|
IRQ EINT1_IRQHandler
|
|
|
IRQ EINT2_IRQHandler
|
|
|
IRQ EINT3_IRQHandler
|
|
|
IRQ ADC_IRQHandler
|
|
|
IRQ BOD_IRQHandler
|
|
|
IRQ USB_IRQHandler
|
|
|
IRQ CAN_IRQHandler
|
|
|
IRQ DMA_IRQHandler
|
|
|
IRQ I2S_IRQHandler
|
|
|
IRQ ENET_IRQHandler
|
|
|
IRQ RIT_IRQHandler
|
|
|
IRQ MCPWM_IRQHandler
|
|
|
IRQ QEI_IRQHandler
|
|
|
IRQ PLL1_IRQHandler
|
|
|
IRQ USBActivity_IRQHandler
|
|
|
IRQ CANActivity_IRQHandler
|
|
|
|
|
|
.end
|
|
|
|