1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
/* ----------------------------------------------------------------------------
* ATMEL Microcontroller Software Support
* ----------------------------------------------------------------------------
* Copyright (c) 2008, Atmel Corporation
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the disclaimer below.
*
* Atmel's name may not be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
* DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* ----------------------------------------------------------------------------
*/
//------------------------------------------------------------------------------
// Headers
//------------------------------------------------------------------------------
#include "board.h"
#include "exceptions.h"
#include "board_lowlevel.h"
//------------------------------------------------------------------------------
// Definitions
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
// Types
//------------------------------------------------------------------------------
typedef union { IntFunc __fun; void * __ptr; } IrqVector;
//------------------------------------------------------------------------------
// ProtoTypes
//------------------------------------------------------------------------------
extern int Image$$ARM_LIB_STACK$$ZI$$Limit;
extern int Image$$Vector_region$$Base;
extern int Image$$Vector_region$$Limit;
extern void __main(void);
void resetHandler( void );
//------------------------------------------------------------------------------
// Variables
//------------------------------------------------------------------------------
#pragma arm section rodata="vectors"
const IrqVector __vector_table[] =
{
(IntFunc)&Image$$ARM_LIB_STACK$$ZI$$Limit,
resetHandler,
NMI_Handler,
HardFault_Handler,
MemManage_Handler,
BusFault_Handler,
UsageFault_Handler,
0, 0, 0, 0, // Reserved
SVC_Handler,
DebugMon_Handler,
0, // Reserved
PendSV_Handler,
SysTick_Handler,
// Configurable interrupts
SUPC_IrqHandler, // 0 SUPPLY CONTROLLER
RSTC_IrqHandler, // 1 RESET CONTROLLER
RTC_IrqHandler, // 2 REAL TIME CLOCK
RTT_IrqHandler, // 3 REAL TIME TIMER
WDT_IrqHandler, // 4 WATCHDOG TIMER
PMC_IrqHandler, // 5 PMC
EFC0_IrqHandler, // 6 EFC0
EFC1_IrqHandler, // 7 EFC1
DBGU_IrqHandler, // 8 DBGU
HSMC4_IrqHandler, // 9 HSMC4
PIOA_IrqHandler, // 10 Parallel IO Controller A
PIOB_IrqHandler, // 11 Parallel IO Controller B
PIOC_IrqHandler, // 12 Parallel IO Controller C
USART0_IrqHandler, // 13 USART 0
USART1_IrqHandler, // 14 USART 1
USART2_IrqHandler, // 15 USART 2
USART3_IrqHandler, // 16 USART 3
MCI0_IrqHandler, // 17 Multimedia Card Interface
TWI0_IrqHandler, // 18 TWI 0
TWI1_IrqHandler, // 19 TWI 1
SPI0_IrqHandler, // 20 Serial Peripheral Interface
SSC0_IrqHandler, // 21 Serial Synchronous Controller 0
TC0_IrqHandler, // 22 Timer Counter 0
TC1_IrqHandler, // 23 Timer Counter 1
TC2_IrqHandler, // 24 Timer Counter 2
PWM_IrqHandler, // 25 Pulse Width Modulation Controller
ADCC0_IrqHandler, // 26 ADC controller0
ADCC1_IrqHandler, // 27 ADC controller1
HDMA_IrqHandler, // 28 HDMA
USB_IrqHandler, // 29 USB Device OTG High Speed
IrqHandlerNotUsed // 30 not used
};
#pragma arm section
//------------------------------------------------------------------------------
/// This is the code that gets called on processor reset. To initialize the
/// device.
//------------------------------------------------------------------------------
void resetHandler( void )
{
unsigned int *pSrc = (unsigned int *)&Image$$Vector_region$$Base;
// Low level Initialize
LowLevelInit();
AT91C_BASE_NVIC->NVIC_VTOFFR = ((unsigned int)(pSrc)) | (0x0 << 7);
// Enter C library entry point
__main();
}
|