|
@@ -0,0 +1,266 @@
|
|
|
+; /*
|
|
|
+; * File : start_rvds.s
|
|
|
+; * This file is part of RT-Thread RTOS
|
|
|
+; * COPYRIGHT (C) 2009, RT-Thread Development Team
|
|
|
+; *
|
|
|
+; * The license and distribution terms for this file may be
|
|
|
+; * found in the file LICENSE in this distribution or at
|
|
|
+; * http://www.rt-thread.org/license/LICENSE
|
|
|
+; *
|
|
|
+; * Change Logs:
|
|
|
+; * Date Author Notes
|
|
|
+; * 2009-09-23 Bernard first implementation
|
|
|
+; * 2010-02-04 Magicoe Edit for LPC17xx Series
|
|
|
+; */
|
|
|
+
|
|
|
+;* <<< Use Configuration Wizard in Context Menu >>>
|
|
|
+
|
|
|
+; Amount of memory (in bytes) allocated for Stack
|
|
|
+; Tailor this value to your application needs
|
|
|
+; <h> Stack Configuration
|
|
|
+; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
|
|
+; </h>
|
|
|
+
|
|
|
+Stack_Size EQU 0x00000200
|
|
|
+
|
|
|
+ AREA STACK, NOINIT, READWRITE, ALIGN=3
|
|
|
+Stack_Mem SPACE Stack_Size
|
|
|
+__initial_sp
|
|
|
+; not use external SRAM as data memory
|
|
|
+
|
|
|
+; <h> Heap Configuration
|
|
|
+; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
|
|
+; </h>
|
|
|
+
|
|
|
+Heap_Size EQU 0x00000000
|
|
|
+
|
|
|
+ AREA HEAP, NOINIT, READWRITE, ALIGN=3
|
|
|
+__heap_base
|
|
|
+Heap_Mem SPACE Heap_Size
|
|
|
+__heap_limit
|
|
|
+
|
|
|
+ PRESERVE8
|
|
|
+ THUMB
|
|
|
+
|
|
|
+ IMPORT rt_hw_hard_fault
|
|
|
+ IMPORT rt_hw_pend_sv
|
|
|
+ IMPORT rt_hw_timer_handler
|
|
|
+
|
|
|
+; Vector Table Mapped to Address 0 at Reset
|
|
|
+ AREA RESET, DATA, READONLY
|
|
|
+ EXPORT __Vectors
|
|
|
+ EXPORT __Vectors_End
|
|
|
+ EXPORT __Vectors_Size
|
|
|
+
|
|
|
+__Vectors DCD __initial_sp ; Top of Stack
|
|
|
+ DCD Reset_Handler ; Reset Handler
|
|
|
+ DCD NMI_Handler ; NMI Handler
|
|
|
+ DCD rt_hw_hard_fault ; Hard Fault Handler
|
|
|
+ DCD MemManage_Handler ; MPU Fault Handler
|
|
|
+ DCD BusFault_Handler ; Bus Fault Handler
|
|
|
+ DCD UsageFault_Handler ; Usage Fault Handler
|
|
|
+ DCD 0 ; Reserved
|
|
|
+ DCD 0 ; Reserved
|
|
|
+ DCD 0 ; Reserved
|
|
|
+ DCD 0 ; Reserved
|
|
|
+ DCD SVC_Handler ; SVCall Handler
|
|
|
+ DCD DebugMon_Handler ; Debug Monitor Handler
|
|
|
+ DCD 0 ; Reserved
|
|
|
+ DCD rt_hw_pend_sv ; PendSV Handler in RT-Thread
|
|
|
+ DCD rt_hw_timer_handler ; SysTick Handler in RT-Thread
|
|
|
+
|
|
|
+ ; External Interrupts
|
|
|
+ DCD WDT_IRQHandler ; 16: Watchdog Timer
|
|
|
+ DCD TIMER0_IRQHandler ; 17: Timer0
|
|
|
+ DCD TIMER1_IRQHandler ; 18: Timer1
|
|
|
+ DCD TIMER2_IRQHandler ; 19: Timer2
|
|
|
+ DCD TIMER3_IRQHandler ; 20: Timer3
|
|
|
+ DCD UART0_IRQHandler ; 21: UART0
|
|
|
+ DCD UART1_IRQHandler ; 22: UART1
|
|
|
+ DCD UART2_IRQHandler ; 23: UART2
|
|
|
+ DCD UART3_IRQHandler ; 24: UART3
|
|
|
+ DCD PWM1_IRQHandler ; 25: PWM1
|
|
|
+ DCD I2C0_IRQHandler ; 26: I2C0
|
|
|
+ DCD I2C1_IRQHandler ; 27: I2C1
|
|
|
+ DCD I2C2_IRQHandler ; 28: I2C2
|
|
|
+ DCD SPI_IRQHandler ; 29: SPI
|
|
|
+ DCD SSP0_IRQHandler ; 30: SSP0
|
|
|
+ DCD SSP1_IRQHandler ; 31: SSP1
|
|
|
+ DCD PLL0_IRQHandler ; 32: PLL0 Lock (Main PLL)
|
|
|
+ DCD RTC_IRQHandler ; 33: Real Time Clock
|
|
|
+ DCD EINT0_IRQHandler ; 34: External Interrupt 0
|
|
|
+ DCD EINT1_IRQHandler ; 35: External Interrupt 1
|
|
|
+ DCD EINT2_IRQHandler ; 36: External Interrupt 2
|
|
|
+ DCD EINT3_IRQHandler ; 37: External Interrupt 3
|
|
|
+ DCD ADC_IRQHandler ; 38: A/D Converter
|
|
|
+ DCD BOD_IRQHandler ; 39: Brown-Out Detect
|
|
|
+ DCD USB_IRQHandler ; 40: USB
|
|
|
+ DCD CAN_IRQHandler ; 41: CAN
|
|
|
+ DCD DMA_IRQHandler ; 42: General Purpose DMA
|
|
|
+ DCD I2S_IRQHandler ; 43: I2S
|
|
|
+ DCD ENET_IRQHandler ; 44: Ethernet
|
|
|
+ DCD RIT_IRQHandler ; 45: Repetitive Interrupt Timer
|
|
|
+ DCD MCPWM_IRQHandler ; 46: Motor Control PWM
|
|
|
+ DCD QEI_IRQHandler ; 47: Quadrature Encoder Interface
|
|
|
+ DCD PLL1_IRQHandler ; 48: PLL1 Lock (USB PLL)
|
|
|
+
|
|
|
+__Vectors_End
|
|
|
+
|
|
|
+__Vectors_Size EQU __Vectors_End - __Vectors
|
|
|
+
|
|
|
+ AREA |.text|, CODE, READONLY
|
|
|
+
|
|
|
+; Reset handler routine
|
|
|
+Reset_Handler PROC
|
|
|
+ EXPORT Reset_Handler [WEAK]
|
|
|
+ IMPORT __main
|
|
|
+
|
|
|
+ LDR R1, = __initial_sp ; restore original stack pointer
|
|
|
+ MSR MSP, R1
|
|
|
+
|
|
|
+ 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
|
|
|
+ EXPORT HardFault_Handler [WEAK]
|
|
|
+ B .
|
|
|
+ ENDP
|
|
|
+MemManage_Handler\
|
|
|
+ PROC
|
|
|
+ EXPORT MemManage_Handler [WEAK]
|
|
|
+ B .
|
|
|
+ ENDP
|
|
|
+BusFault_Handler\
|
|
|
+ PROC
|
|
|
+ EXPORT BusFault_Handler [WEAK]
|
|
|
+ B .
|
|
|
+ ENDP
|
|
|
+UsageFault_Handler\
|
|
|
+ PROC
|
|
|
+ EXPORT UsageFault_Handler [WEAK]
|
|
|
+ B .
|
|
|
+ ENDP
|
|
|
+SVC_Handler PROC
|
|
|
+ EXPORT SVC_Handler [WEAK]
|
|
|
+ B .
|
|
|
+ ENDP
|
|
|
+DebugMon_Handler\
|
|
|
+ PROC
|
|
|
+ EXPORT DebugMon_Handler [WEAK]
|
|
|
+ B .
|
|
|
+ ENDP
|
|
|
+
|
|
|
+Default_Handler PROC
|
|
|
+
|
|
|
+ EXPORT WDT_IRQHandler [WEAK]
|
|
|
+ EXPORT TIMER0_IRQHandler [WEAK]
|
|
|
+ EXPORT TIMER1_IRQHandler [WEAK]
|
|
|
+ EXPORT TIMER2_IRQHandler [WEAK]
|
|
|
+ EXPORT TIMER3_IRQHandler [WEAK]
|
|
|
+ EXPORT UART0_IRQHandler [WEAK]
|
|
|
+ EXPORT UART1_IRQHandler [WEAK]
|
|
|
+ EXPORT UART2_IRQHandler [WEAK]
|
|
|
+ EXPORT UART3_IRQHandler [WEAK]
|
|
|
+ EXPORT PWM1_IRQHandler [WEAK]
|
|
|
+ EXPORT I2C0_IRQHandler [WEAK]
|
|
|
+ EXPORT I2C1_IRQHandler [WEAK]
|
|
|
+ EXPORT I2C2_IRQHandler [WEAK]
|
|
|
+ EXPORT SPI_IRQHandler [WEAK]
|
|
|
+ EXPORT SSP0_IRQHandler [WEAK]
|
|
|
+ EXPORT SSP1_IRQHandler [WEAK]
|
|
|
+ EXPORT PLL0_IRQHandler [WEAK]
|
|
|
+ EXPORT RTC_IRQHandler [WEAK]
|
|
|
+ EXPORT EINT0_IRQHandler [WEAK]
|
|
|
+ EXPORT EINT1_IRQHandler [WEAK]
|
|
|
+ EXPORT EINT2_IRQHandler [WEAK]
|
|
|
+ EXPORT EINT3_IRQHandler [WEAK]
|
|
|
+ EXPORT ADC_IRQHandler [WEAK]
|
|
|
+ EXPORT BOD_IRQHandler [WEAK]
|
|
|
+ EXPORT USB_IRQHandler [WEAK]
|
|
|
+ EXPORT CAN_IRQHandler [WEAK]
|
|
|
+ EXPORT DMA_IRQHandler [WEAK]
|
|
|
+ EXPORT I2S_IRQHandler [WEAK]
|
|
|
+ EXPORT ENET_IRQHandler [WEAK]
|
|
|
+ EXPORT RIT_IRQHandler [WEAK]
|
|
|
+ EXPORT MCPWM_IRQHandler [WEAK]
|
|
|
+ EXPORT QEI_IRQHandler [WEAK]
|
|
|
+ EXPORT PLL1_IRQHandler [WEAK]
|
|
|
+
|
|
|
+WDT_IRQHandler
|
|
|
+TIMER0_IRQHandler
|
|
|
+TIMER1_IRQHandler
|
|
|
+TIMER2_IRQHandler
|
|
|
+TIMER3_IRQHandler
|
|
|
+UART0_IRQHandler
|
|
|
+UART1_IRQHandler
|
|
|
+UART2_IRQHandler
|
|
|
+UART3_IRQHandler
|
|
|
+PWM1_IRQHandler
|
|
|
+I2C0_IRQHandler
|
|
|
+I2C1_IRQHandler
|
|
|
+I2C2_IRQHandler
|
|
|
+SPI_IRQHandler
|
|
|
+SSP0_IRQHandler
|
|
|
+SSP1_IRQHandler
|
|
|
+PLL0_IRQHandler
|
|
|
+RTC_IRQHandler
|
|
|
+EINT0_IRQHandler
|
|
|
+EINT1_IRQHandler
|
|
|
+EINT2_IRQHandler
|
|
|
+EINT3_IRQHandler
|
|
|
+ADC_IRQHandler
|
|
|
+BOD_IRQHandler
|
|
|
+USB_IRQHandler
|
|
|
+CAN_IRQHandler
|
|
|
+DMA_IRQHandler
|
|
|
+I2S_IRQHandler
|
|
|
+ENET_IRQHandler
|
|
|
+RIT_IRQHandler
|
|
|
+MCPWM_IRQHandler
|
|
|
+QEI_IRQHandler
|
|
|
+PLL1_IRQHandler
|
|
|
+
|
|
|
+ B .
|
|
|
+
|
|
|
+ ENDP
|
|
|
+
|
|
|
+ ALIGN
|
|
|
+
|
|
|
+;*******************************************************************************
|
|
|
+; User Stack and Heap initialization
|
|
|
+;*******************************************************************************
|
|
|
+ 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
|
|
|
+
|
|
|
+ LDR R0, = Heap_Mem
|
|
|
+ LDR R1, =(Stack_Mem + Stack_Size)
|
|
|
+ LDR R2, = (Heap_Mem + Heap_Size)
|
|
|
+ LDR R3, = Stack_Mem
|
|
|
+ BX LR
|
|
|
+
|
|
|
+ ALIGN
|
|
|
+
|
|
|
+ ENDIF
|
|
|
+
|
|
|
+ END
|
|
|
+
|
|
|
+;******************* COPYLEFT 2010 Magicoe *****END OF FILE*****
|
|
|
+
|