/***************************************************************************** | |
* 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 */ |