]> begriffs open source - freertos/blob - Demo/ARM7_STR75x_GCC/SystemFiles/STR75x_COMMON_FreeRTOS.ld
First phase of changing the directory that starts Cortex, with one that starts CORTEX.
[freertos] / Demo / ARM7_STR75x_GCC / SystemFiles / STR75x_COMMON_FreeRTOS.ld
1 /*\r
2 Common part of the linker scripts for STR75x devices\r
3 Copyright RAISONANCE 2006\r
4 You can use, modify and distribute this file freely, but without any waranty.\r
5 */\r
6 \r
7 \r
8 /* Registers mapping */\r
9 FLASHR_BASE     = 0x20100000 ;\r
10 FLASHPR_BASE    = 0x2010DFB0 ;\r
11 CFG_BASE        = 0x60000000 ;\r
12 MRCC_BASE       = 0x60000020 ;\r
13 EXTMEM_BASE     = 0x80000000 ;\r
14 SMI_BASE        = 0x90000000 ;\r
15 DMA_BASE        = 0xFFFFEC00 ;\r
16 EIC_BASE        = 0xFFFFF800 ;\r
17 APB_BASE        = 0xFFFF8000 ;\r
18 \r
19 PROVIDE( _MRCC  =  MRCC_BASE );\r
20 PROVIDE( _CFG   =  CFG_BASE  );\r
21 PROVIDE( _SMI   =  SMI_BASE  );\r
22 PROVIDE( _DMA   =  DMA_BASE  );\r
23 PROVIDE( _EIC   =  EIC_BASE  );\r
24 \r
25 PROVIDE( _ADC   = (APB_BASE + 0x0400) );\r
26 PROVIDE( _TB    = (APB_BASE + 0x0800) );\r
27 PROVIDE( _TIM0  = (APB_BASE + 0x0C00) );\r
28 PROVIDE( _TIM1  = (APB_BASE + 0x1000) );\r
29 PROVIDE( _TIM2  = (APB_BASE + 0x1400) );\r
30 PROVIDE( _PWM   = (APB_BASE + 0x1800) );\r
31 PROVIDE( _USB   = (APB_BASE + 0x2800) ); /* USB registers */\r
32 PROVIDE( _WDG   = (APB_BASE + 0x3000) );\r
33 PROVIDE( _SSP0  = (APB_BASE + 0x3800) );\r
34 PROVIDE( _SSP1  = (APB_BASE + 0x3C00) );\r
35 PROVIDE( _CAN   = (APB_BASE + 0x4400) );\r
36 PROVIDE( _I2C   = (APB_BASE + 0x4C00) );\r
37 PROVIDE( _UART0 = (APB_BASE + 0x5400) );\r
38 PROVIDE( _UART1 = (APB_BASE + 0x5800) );\r
39 PROVIDE( _UART2 = (APB_BASE + 0x5C00) );\r
40 PROVIDE( _GPIO0 = (APB_BASE + 0x6400) );\r
41 PROVIDE( _GPIO1 = (APB_BASE + 0x6440) );\r
42 PROVIDE( _GPIO2 = (APB_BASE + 0x6480) );\r
43 PROVIDE( _RTC   = (APB_BASE + 0x7000) );\r
44 PROVIDE( _EXTIT = (APB_BASE + 0x7400) );\r
45 \r
46 /* default stack sizes. \r
47 \r
48 These are used by the startup in order to allocate stacks for the different modes.\r
49 */\r
50 \r
51 __SVC_Stack_Size = 400 ;\r
52 __IRQ_Stack_Size = 400 ;\r
53 __USR_Stack_Size = 4 ;\r
54 __FIQ_Stack_Size = 4 ;\r
55 __ABT_Stack_Size = 0 ;\r
56 __UND_Stack_Size = 0 ;\r
57 \r
58 __SVC_Stack_Init = _estack ;\r
59 __IRQ_Stack_Init = __SVC_Stack_Init - __SVC_Stack_Size ;\r
60 __USR_Stack_Init = __IRQ_Stack_Init - __IRQ_Stack_Size ;\r
61 __FIQ_Stack_Init = __USR_Stack_Init - __USR_Stack_Size ;\r
62 __ABT_Stack_Init = __FIQ_Stack_Init - __FIQ_Stack_Size ;\r
63 __UND_Stack_Init = __ABT_Stack_Init - __ABT_Stack_Size ;\r
64 \r
65 /*"PROVIDE" allows to easily override these values from an object file or the commmand line.*/\r
66 PROVIDE ( _SVC_Stack_Init = __SVC_Stack_Init ) ;\r
67 PROVIDE ( _IRQ_Stack_Init = __IRQ_Stack_Init ) ;\r
68 PROVIDE ( _USR_Stack_Init = __USR_Stack_Init ) ;\r
69 PROVIDE ( _FIQ_Stack_Init = __FIQ_Stack_Init ) ;\r
70 PROVIDE ( _ABT_Stack_Init = __ABT_Stack_Init ) ;\r
71 PROVIDE ( _UND_Stack_Init = __UND_Stack_Init ) ;\r
72 \r
73 /*\r
74 the user mode stack is an exception because we want it at the end of the RAM.\r
75 therefore, we just check against a minimum.\r
76 The value below is the minimum memory required for ALL THE STACKS.\r
77 There will be a link error if there is not this amount of RAM free at the end.\r
78 */\r
79 _Minimum_Stack_Size = 0xC00 ;\r
80 \r
81 \r
82 \r
83 /* default ISR addresses. \r
84 \r
85 The startup needs these addresses defined from another object file.\r
86 In case they are not, these PROVIDEs redirect them to the Reset.\r
87 \r
88 _start must be defined, usually in the startup.\r
89 */\r
90 \r
91 PROVIDE( SWI_Handler = _start );\r
92 PROVIDE( Undefined_Handler = _start );\r
93 PROVIDE( Prefetch_Handler = _start );\r
94 PROVIDE( Abort_Handler = _start );\r
95 PROVIDE( IRQ_Handler = _start ); /* <-- needed ? */\r
96 PROVIDE( FIQ_Handler = _start );\r
97 PROVIDE( WAKUP_IRQHandler = _start );\r
98 PROVIDE( TIM2_OC2_IRQHandler = _start );\r
99 PROVIDE( TIM2_OC1_IRQHandler = _start );\r
100 PROVIDE( TIM2_IC12_IRQHandler = _start );\r
101 PROVIDE( TIM2_UP_IRQHandler = _start );\r
102 PROVIDE( TIM1_OC2_IRQHandler = _start );\r
103 PROVIDE( TIM1_OC1_IRQHandler = _start );\r
104 PROVIDE( TIM1_IC12_IRQHandler = _start );\r
105 PROVIDE( TIM1_UP_IRQHandler = _start );\r
106 PROVIDE( TIM0_OC2_IRQHandler = _start );\r
107 PROVIDE( TIM0_OC1_IRQHandler = _start );\r
108 PROVIDE( TIM0_IC12_IRQHandler = _start );\r
109 PROVIDE( TIM0_UP_IRQHandler = _start );\r
110 PROVIDE( PWM_OC123_IRQHandler = _start );\r
111 PROVIDE( PWM_EM_IRQHandler = _start );\r
112 PROVIDE( PWM_UP_IRQHandler = _start );\r
113 PROVIDE( I2C_IRQHandler = _start );\r
114 PROVIDE( SSP1_IRQHandler = _start );\r
115 PROVIDE( SSP0_IRQHandler = _start );\r
116 PROVIDE( UART2_IRQHandler = _start );\r
117 PROVIDE( UART1_IRQHandler = _start );\r
118 PROVIDE( UART0_IRQHandler = _start );\r
119 PROVIDE( CAN_IRQHandler = _start );\r
120 PROVIDE( USB_LPI_RQHandler = _start );\r
121 PROVIDE( USB_HP_IRQHandler = _start );\r
122 PROVIDE( ADC_IRQHandler = _start );\r
123 PROVIDE( DMA_IRQHandler = _start );\r
124 PROVIDE( EXTIT_IRQHandler = _start );\r
125 PROVIDE( MRCC_IRQHandler = _start );\r
126 PROVIDE( FLASHSMI_IRQHandler = _start );\r
127 PROVIDE( RTC_IRQHandler = _start );\r
128 PROVIDE( TB_IRQHandler = _start );\r
129 PROVIDE( USB_LP_IRQHandler = _start );\r
130 PROVIDE( USB_HP_IRQHandler = _start );\r