You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
200 lines
6.3 KiB
ArmAsm
200 lines
6.3 KiB
ArmAsm
/*****************************************************************************
|
|
* Copyright (c) 2006 Rowley Associates Limited. *
|
|
* *
|
|
* This file may be distributed under the terms of the License Agreement *
|
|
* provided with this software. *
|
|
* *
|
|
* THIS FILE IS PROVIDED AS IS WITH NO WARRANTY OF ANY KIND, INCLUDING THE *
|
|
* WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. *
|
|
*****************************************************************************/
|
|
|
|
/*****************************************************************************
|
|
* Preprocessor Definitions
|
|
* ------------------------
|
|
*
|
|
* STARTUP_FROM_RESET
|
|
*
|
|
* If defined, the program will startup from power-on/reset. If not defined
|
|
* the program will just loop endlessly from power-on/reset.
|
|
*
|
|
* This definition is not defined by default on this target because the
|
|
* debugger is unable to reset this target and maintain control of it over the
|
|
* JTAG interface. The advantage of doing this is that it allows the debugger
|
|
* to reset the CPU and run programs from a known reset CPU state on each run.
|
|
* It also acts as a safety net if you accidently download a program in FLASH
|
|
* that crashes and prevents the debugger from taking control over JTAG
|
|
* rendering the target unusable over JTAG. The obvious disadvantage of doing
|
|
* this is that your application will not startup without the debugger.
|
|
*
|
|
* We advise that on this target you keep STARTUP_FROM_RESET undefined whilst
|
|
* you are developing and only define STARTUP_FROM_RESET when development is
|
|
* complete.
|
|
*
|
|
*****************************************************************************/
|
|
|
|
.extern xPortPendSVHandler
|
|
.extern xPortSysTickHandler
|
|
.extern vPortSVCHandler
|
|
.extern Timer0IntHandler
|
|
.extern vT2InterruptHandler
|
|
.extern vT3InterruptHandler
|
|
.extern vEMAC_ISR
|
|
|
|
|
|
.global reset_handler
|
|
|
|
.macro DEFAULT_ISR_HANDLER name=
|
|
.thumb_func
|
|
.weak \name
|
|
\name:
|
|
1: b 1b /* endless loop */
|
|
.endm
|
|
|
|
.section .vectors, "ax"
|
|
.code 16
|
|
.align 0
|
|
.global _vectors
|
|
|
|
_vectors:
|
|
.word __stack_end__
|
|
#ifdef STARTUP_FROM_RESET
|
|
.word reset_handler
|
|
#else
|
|
.word reset_wait
|
|
#endif /* STARTUP_FROM_RESET */
|
|
.word Nmi_ISR
|
|
.word Fault_ISR
|
|
.word MPU_Fault_ISR
|
|
.word 0 /* Populate if using Bus fault */
|
|
.word 0 /* Populate if using Usage fault */
|
|
.word 0 /* Reserved */
|
|
.word 0 /* Reserved */
|
|
.word 0 /* Reserved */
|
|
.word 0 /* Reserved */
|
|
.word vPortSVCHandler
|
|
.word 0 /* Populate if using a debug monitor */
|
|
.word 0 /* Reserved */
|
|
.word xPortPendSVHandler
|
|
.word xPortSysTickHandler
|
|
.word GPIO_Port_A_ISR
|
|
.word GPIO_Port_B_ISR
|
|
.word GPIO_Port_C_ISR
|
|
.word GPIO_Port_D_ISR
|
|
.word GPIO_Port_E_ISR
|
|
.word UART0_ISR
|
|
.word UART1_ISR
|
|
.word SSI_ISR
|
|
.word I2C_ISR
|
|
.word PWM_Fault_ISR
|
|
.word PWM_Generator_0_ISR
|
|
.word PWM_Generator_1_ISR
|
|
.word PWM_Generator_2_ISR
|
|
.word QEI_ISR
|
|
.word ADC_Sequence_0_ISR
|
|
.word ADC_Sequence_1_ISR
|
|
.word ADC_Sequence_2_ISR
|
|
.word ADC_Sequence_3_ISR
|
|
.word Watchdog_Timer_ISR
|
|
.word Timer0IntHandler
|
|
.word Timer0B_ISR
|
|
.word Timer1A_ISR
|
|
.word Timer1B_ISR
|
|
.word vT2InterruptHandler
|
|
.word Timer2B_ISR
|
|
.word Analog_Comparator_0_ISR
|
|
.word Analog_Comparator_1_ISR
|
|
.word Analog_Comparator_2_ISR
|
|
.word System_Control_ISR
|
|
.word FLASH_Control_ISR
|
|
.word GPIO_Port_F_ISR
|
|
.word GPIO_Port_G_ISR
|
|
.word GPIO_Port_H_ISR
|
|
.word UART2_ISR
|
|
.word SSI1_ISR
|
|
.word vT3InterruptHandler
|
|
.word Timer3B_ISR
|
|
.word I2C1_ISR
|
|
.word QEI1_ISR
|
|
.word CAN0_ISR
|
|
.word CAN1_ISR
|
|
.word CAN2_ISR
|
|
.word vEMAC_ISR
|
|
.word HIBERNATE_ISR
|
|
.word USB0_ISR
|
|
.word PWM_Generator_3_ISR
|
|
.word uDMA_Software_Transfer_ISR
|
|
.word uDMA_Error_ISR
|
|
_vectors_end:
|
|
|
|
.section .init, "ax"
|
|
.thumb_func
|
|
|
|
reset_handler:
|
|
#ifdef __RAM_BUILD
|
|
/* If this is a RAM build, configure vector table offset register to point
|
|
to the RAM vector table. */
|
|
ldr r0, =0xE000ED08
|
|
ldr r1, =_vectors
|
|
str r1, [r0]
|
|
#endif
|
|
b _start
|
|
|
|
DEFAULT_ISR_HANDLER Nmi_ISR
|
|
DEFAULT_ISR_HANDLER Fault_ISR
|
|
DEFAULT_ISR_HANDLER MPU_Fault_ISR
|
|
DEFAULT_ISR_HANDLER SVCall_ISR
|
|
DEFAULT_ISR_HANDLER SysTick_ISR
|
|
DEFAULT_ISR_HANDLER PendSV_ISR
|
|
DEFAULT_ISR_HANDLER GPIO_Port_A_ISR
|
|
DEFAULT_ISR_HANDLER GPIO_Port_B_ISR
|
|
DEFAULT_ISR_HANDLER GPIO_Port_C_ISR
|
|
DEFAULT_ISR_HANDLER GPIO_Port_D_ISR
|
|
DEFAULT_ISR_HANDLER GPIO_Port_E_ISR
|
|
DEFAULT_ISR_HANDLER UART0_ISR
|
|
DEFAULT_ISR_HANDLER UART1_ISR
|
|
DEFAULT_ISR_HANDLER SSI_ISR
|
|
DEFAULT_ISR_HANDLER I2C_ISR
|
|
DEFAULT_ISR_HANDLER PWM_Fault_ISR
|
|
DEFAULT_ISR_HANDLER PWM_Generator_0_ISR
|
|
DEFAULT_ISR_HANDLER PWM_Generator_1_ISR
|
|
DEFAULT_ISR_HANDLER PWM_Generator_2_ISR
|
|
DEFAULT_ISR_HANDLER QEI_ISR
|
|
DEFAULT_ISR_HANDLER ADC_Sequence_0_ISR
|
|
DEFAULT_ISR_HANDLER ADC_Sequence_1_ISR
|
|
DEFAULT_ISR_HANDLER ADC_Sequence_2_ISR
|
|
DEFAULT_ISR_HANDLER ADC_Sequence_3_ISR
|
|
DEFAULT_ISR_HANDLER Watchdog_Timer_ISR
|
|
DEFAULT_ISR_HANDLER Timer0A_ISR
|
|
DEFAULT_ISR_HANDLER Timer0B_ISR
|
|
DEFAULT_ISR_HANDLER Timer1A_ISR
|
|
DEFAULT_ISR_HANDLER Timer1B_ISR
|
|
DEFAULT_ISR_HANDLER Timer2A_ISR
|
|
DEFAULT_ISR_HANDLER Timer2B_ISR
|
|
DEFAULT_ISR_HANDLER Analog_Comparator_0_ISR
|
|
DEFAULT_ISR_HANDLER Analog_Comparator_1_ISR
|
|
DEFAULT_ISR_HANDLER Analog_Comparator_2_ISR
|
|
DEFAULT_ISR_HANDLER System_Control_ISR
|
|
DEFAULT_ISR_HANDLER FLASH_Control_ISR
|
|
DEFAULT_ISR_HANDLER GPIO_Port_F_ISR
|
|
DEFAULT_ISR_HANDLER GPIO_Port_G_ISR
|
|
DEFAULT_ISR_HANDLER GPIO_Port_H_ISR
|
|
DEFAULT_ISR_HANDLER UART2_ISR
|
|
DEFAULT_ISR_HANDLER SSI1_ISR
|
|
DEFAULT_ISR_HANDLER Timer3A_ISR
|
|
DEFAULT_ISR_HANDLER Timer3B_ISR
|
|
DEFAULT_ISR_HANDLER I2C1_ISR
|
|
DEFAULT_ISR_HANDLER QEI1_ISR
|
|
DEFAULT_ISR_HANDLER CAN0_ISR
|
|
DEFAULT_ISR_HANDLER CAN1_ISR
|
|
DEFAULT_ISR_HANDLER CAN2_ISR
|
|
DEFAULT_ISR_HANDLER ETHERNET_ISR
|
|
DEFAULT_ISR_HANDLER HIBERNATE_ISR
|
|
DEFAULT_ISR_HANDLER USB0_ISR
|
|
DEFAULT_ISR_HANDLER PWM_Generator_3_ISR
|
|
DEFAULT_ISR_HANDLER uDMA_Software_Transfer_ISR
|
|
DEFAULT_ISR_HANDLER uDMA_Error_ISR
|
|
|
|
#ifndef STARTUP_FROM_RESET
|
|
DEFAULT_ISR_HANDLER reset_wait
|
|
#endif /* STARTUP_FROM_RESET */
|