]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_M4F_Infineon_XMC4000_GCC_Dave/LinkerScripts/RTOSDemo_XMC4500.ld
Add Dave project for the XMC4500.
[freertos] / FreeRTOS / Demo / CORTEX_M4F_Infineon_XMC4000_GCC_Dave / LinkerScripts / RTOSDemo_XMC4500.ld
1 /* Generated Linker Script file */\r
2 /*\r
3  * Template Version 1.0 dated 11 Oct 2012\r
4  */\r
5 \r
6 OUTPUT_FORMAT("elf32-littlearm")\r
7 OUTPUT_ARCH(arm)\r
8 ENTRY(__Xmc4500_reset_cortex_m)\r
9 GROUP(-lxmclibcstubs)\r
10 \r
11 MEMORY\r
12 {\r
13         FLASH_1_cached(RX) : ORIGIN = 0x08000000, LENGTH = 0x100000\r
14         FLASH_1_uncached(RX) : ORIGIN = 0x0C000000, LENGTH = 0x100000\r
15         PSRAM_1(!RX) : ORIGIN = 0x10000000, LENGTH = 0x10000\r
16         DSRAM_1_system(!RX) : ORIGIN = 0x20000000, LENGTH = 0x10000\r
17         DSRAM_2_comm(!RX) : ORIGIN = 0x30000000, LENGTH = 0x8000\r
18 }\r
19 \r
20 stack_size = 2048;\r
21 \r
22 SECTIONS\r
23 {\r
24         /* TEXT section */\r
25 \r
26         .text : AT(ORIGIN(FLASH_1_uncached))\r
27         {\r
28                 sText = .;\r
29                 *(.Xmc4500.reset);\r
30                 *(.Xmc4500.postreset);\r
31                 *(.XmcStartup);\r
32                 *(.text .text.* .gnu.linkonce.t.*);\r
33 \r
34                 /* ARM <->THUMB interworking */\r
35                 *(.glue*)\r
36                 *(.v4*)\r
37                 *(.vfp11_veneer)\r
38 \r
39                 /* C++ Support */\r
40                 KEEP(*(.init))\r
41                 __preinit_array_start = .;\r
42                 KEEP (*(.preinit_array))\r
43                 __preinit_array_end = .;\r
44                 __init_array_start = .;\r
45                 KEEP (*(SORT(.init_array.*)))\r
46                 KEEP (*(.init_array))\r
47                 __init_array_end = .;\r
48                 KEEP (*crtbegin.o(.ctors))\r
49                 KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors))\r
50                 KEEP (*(SORT(.ctors.*)))\r
51                 KEEP (*crtend.o(.ctors))\r
52                 KEEP(*(.fini))\r
53                 __fini_array_start = .;\r
54                 KEEP (*(.fini_array))\r
55                 KEEP (*(SORT(.fini_array.*)))\r
56                 __fini_array_end = .;\r
57 \r
58                 KEEP (*crtbegin.o(.dtors))\r
59                 KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors))\r
60                 KEEP (*(SORT(.dtors.*)))\r
61                 KEEP (*crtend.o(.dtors))\r
62 \r
63                 /* Exception handling support */\r
64                 __extab_start = .;\r
65                 *(.ARM.extab* .gnu.linkonce.armextab.*)\r
66                 . = ALIGN(4);\r
67                 __extab_end = ABSOLUTE(.);\r
68         } > FLASH_1_cached\r
69 \r
70         /* Exception handling, exidx needs a dedicated section */\r
71         .ARM.exidx ABSOLUTE(__extab_end): AT(__extab_end | 0x04000000)\r
72         {\r
73                 __exidx_start = .;\r
74                 *(.ARM.exidx* .gnu.linkonce.armexidx.*)\r
75                 . = ALIGN(4);\r
76                 __exidx_end = ABSOLUTE(.);\r
77         } > FLASH_1_cached\r
78 \r
79         /* CONST data section */\r
80         .rodata ABSOLUTE(__exidx_end): AT(__exidx_end | 0x04000000)\r
81         {\r
82                 *(.rodata .rodata.*)\r
83                 *(.gnu.linkonce.r*)\r
84         } > FLASH_1_cached\r
85 \r
86         . = ALIGN(16);\r
87 \r
88         /* End of RO-DATA and start of LOAD region for DATA */\r
89         eROData = . | 0x04000000;\r
90 \r
91         /* DSRAM layout (Lowest to highest)*/\r
92         /* Fully Descending Stack <-> BSS <-> DATA <-> HEAP */\r
93         /* Dummy section for stack */\r
94         Stack (NOLOAD) : \r
95         {\r
96                 . = . + stack_size;\r
97                 __Xmc4500_stack = .;\r
98         } > DSRAM_1_system\r
99 \r
100         Communication_Buffers :\r
101         {\r
102                 *DMA_Descriptors.o (COMMON);\r
103         } > DSRAM_2_comm\r
104 \r
105         /* BSS section */\r
106         .bss : \r
107         {\r
108                 __Xmc4500_sBSS = .;\r
109                 * (.bss);\r
110                 * (.bss*);\r
111                 * (EXCLUDE_FILE(*DMA_Descriptors.o) COMMON);\r
112                 *(.gnu.linkonce.b*)\r
113                 __Xmc4500_eBSS = ALIGN(4);\r
114         } > DSRAM_1_system\r
115         /* Yes, the size must be kept outside */\r
116         __Xmc4500_BSS_Size = __Xmc4500_eBSS - __Xmc4500_sBSS;\r
117 \r
118         /* Standard DATA and user defined DATA/BSS/CONST sections */\r
119         .data ABSOLUTE(ALIGN(16)): AT(eROData)\r
120         {\r
121                 __Xmc4500_sData = .;\r
122                 * (.data);\r
123                 * (.data*);\r
124                 *(*.data);\r
125                 *(.gnu.linkonce.d*)\r
126                 __Xmc4500_eData = ALIGN(4);\r
127         } > DSRAM_1_system\r
128         /* Yes, the size must be kept outside */\r
129         __Xmc4500_Data_Size = __Xmc4500_eData - __Xmc4500_sData;\r
130 \r
131         /* Heap - Bank1*/\r
132         __Xmc4500_heap_start = ALIGN(8);\r
133         __Xmc4500_heap_end = ORIGIN(DSRAM_1_system) + LENGTH (DSRAM_1_system);\r
134         Heap_Bank1_Start = __Xmc4500_heap_start;\r
135         Heap_Bank1_Size  = __Xmc4500_heap_end - __Xmc4500_heap_start;\r
136         Heap_Bank1_End   = ABSOLUTE(__Xmc4500_heap_end);\r
137 \r
138         /* Heap - Bank2 */\r
139         DSRAM2_Heap :\r
140         {\r
141                 /* To host DATA in DSRAM2 above heap, please be sure to augment\r
142                  * program loader code in the startup file */\r
143                 Heap_Bank2_Start = .;\r
144         } > DSRAM_2_comm\r
145         Heap_Bank2_Size = LENGTH(DSRAM_2_comm) - (Heap_Bank2_Start - ORIGIN(DSRAM_2_comm));\r
146 \r
147         /* Heap - Bank3 */\r
148         PSRAM_Heap :\r
149         {\r
150                 /* To host DATA in PSRAM above heap, please be sure to augment\r
151                  * program loader code in the startup file */\r
152                 Heap_Bank3_Start = .;\r
153         } > PSRAM_1\r
154         Heap_Bank3_Size  =  LENGTH(PSRAM_1) - (Heap_Bank3_Start - ORIGIN(PSRAM_1));\r
155 \r
156         /DISCARD/ :\r
157         {\r
158                 *(.comment)\r
159         }\r
160 \r
161         .stab           0 (NOLOAD) : { *(.stab) }\r
162         .stabstr        0 (NOLOAD) : { *(.stabstr) }\r
163 \r
164         /* DWARF 1 */\r
165         .debug                          0 : { *(.debug) }\r
166         .line                           0 : { *(.line) }\r
167 \r
168         /* GNU DWARF 1 extensions */\r
169         .debug_srcinfo          0 : { *(.debug_srcinfo) }\r
170         .debug_sfnames          0 : { *(.debug_sfnames) }\r
171 \r
172         /* DWARF 1.1 and DWARF 2 */\r
173         .debug_aranges          0 : { *(.debug_aranges) }\r
174         .debug_pubnames         0 : { *(.debug_pubnames) }\r
175         .debug_pubtypes         0 : { *(.debug_pubtypes) }\r
176 \r
177         /* DWARF 2 */\r
178         .debug_info                     0 : { *(.debug_info .gnu.linkonce.wi.*) }\r
179         .debug_abbrev           0 : { *(.debug_abbrev) }\r
180         .debug_line                     0 : { *(.debug_line) }\r
181         .debug_frame            0 : { *(.debug_frame) }\r
182         .debug_str                      0 : { *(.debug_str) }\r
183         .debug_loc                      0 : { *(.debug_loc) }\r
184         .debug_macinfo          0 : { *(.debug_macinfo) }\r
185 \r
186         /* DWARF 2.1 */\r
187         .debug_ranges           0 : { *(.debug_ranges) }\r
188 \r
189         /* SGI/MIPS DWARF 2 extensions */\r
190         .debug_weaknames        0 : { *(.debug_weaknames) }\r
191         .debug_funcnames        0 : { *(.debug_funcnames) }\r
192         .debug_typenames        0 : { *(.debug_typenames) }\r
193         .debug_varnames         0 : { *(.debug_varnames) }\r
194 \r
195         /* Build attributes */\r
196         .build_attributes       0 : { *(.ARM.attributes) }\r
197 }\r