root/webserver/example/Crossworks_taskinglib/ARM Flash Release/CrossWorks_TaskingLib_Test.ld

Revision 13, 10.0 kB (checked in by phil, 15 years ago)

Crossworks Lib Example (multiple tasks)

Line 
1 MEMORY
2 {
3   UNPLACED_SECTIONS (wx) : ORIGIN = 0x100000000, LENGTH = 0
4   AHB_Peripherals (wx) : ORIGIN = 0xffe00000, LENGTH = 0x00200000
5   Battery_RAM (wx) : ORIGIN = 0xe0084000, LENGTH = 0x00000800
6   APB_Peripherals (wx) : ORIGIN = 0xe0000000, LENGTH = 0x00200000
7   USB_RAM (wx) : ORIGIN = 0x7fd00000, LENGTH = 0x00002000
8   Ethernet_RAM (wx) : ORIGIN = 0x7fe00000, LENGTH = 0x00004000
9   SRAM (wx) : ORIGIN = 0x40000000, LENGTH = 0x00008000
10   FLASH (rx) : ORIGIN = 0x00000000, LENGTH = 0x00080000
11 }
12
13
14 SECTIONS
15 {
16   __AHB_Peripherals_segment_start__ = 0xffe00000;
17   __AHB_Peripherals_segment_end__ = 0x00000000;
18   __Battery_RAM_segment_start__ = 0xe0084000;
19   __Battery_RAM_segment_end__ = 0xe0084800;
20   __APB_Peripherals_segment_start__ = 0xe0000000;
21   __APB_Peripherals_segment_end__ = 0xe0200000;
22   __USB_RAM_segment_start__ = 0x7fd00000;
23   __USB_RAM_segment_end__ = 0x7fd02000;
24   __Ethernet_RAM_segment_start__ = 0x7fe00000;
25   __Ethernet_RAM_segment_end__ = 0x7fe04000;
26   __SRAM_segment_start__ = 0x40000000;
27   __SRAM_segment_end__ = 0x40008000;
28   __FLASH_segment_start__ = 0x00000000;
29   __FLASH_segment_end__ = 0x00080000;
30
31   __STACKSIZE__ = 1024;
32   __STACKSIZE_IRQ__ = 256;
33   __STACKSIZE_FIQ__ = 256;
34   __STACKSIZE_SVC__ = 0;
35   __STACKSIZE_ABT__ = 0;
36   __STACKSIZE_UND__ = 0;
37   __HEAPSIZE__ = 1024;
38
39   __vectors_ram_load_start__ = __SRAM_segment_start__;
40   .vectors_ram __SRAM_segment_start__ (NOLOAD) :
41   {
42     __vectors_ram_start__ = .;
43     *(.vectors_ram)
44     . = MAX(__vectors_ram_start__ + 0x3C , .);
45   }
46   __vectors_ram_end__ = __vectors_ram_start__ + SIZEOF(.vectors_ram);
47
48   . = ASSERT(__vectors_ram_end__ >= __SRAM_segment_start__ && __vectors_ram_end__ <= (__SRAM_segment_start__ + 0x00008000) , "error: .vectors_ram is too large to fit in SRAM memory segment");
49
50   __vectors_load_start__ = __FLASH_segment_start__;
51   .vectors __FLASH_segment_start__ :
52   {
53     __vectors_start__ = .;
54     *(.vectors .vectors.*)
55   }
56   __vectors_end__ = __vectors_start__ + SIZEOF(.vectors);
57
58   . = ASSERT(__vectors_end__ >= __FLASH_segment_start__ && __vectors_end__ <= (__FLASH_segment_start__ + 0x00080000) , "error: .vectors is too large to fit in FLASH memory segment");
59
60   __init_load_start__ = ALIGN(__vectors_end__ , 4);
61   .init ALIGN(__vectors_end__ , 4) :
62   {
63     __init_start__ = .;
64     *(.init .init.*)
65   }
66   __init_end__ = __init_start__ + SIZEOF(.init);
67
68   . = ASSERT(__init_end__ >= __FLASH_segment_start__ && __init_end__ <= (__FLASH_segment_start__ + 0x00080000) , "error: .init is too large to fit in FLASH memory segment");
69
70   __text_load_start__ = ALIGN(__init_end__ , 4);
71   .text ALIGN(__init_end__ , 4) :
72   {
73     __text_start__ = .;
74     *(.text .text.* .glue_7t .glue_7 .gnu.linkonce.t.* .gcc_except_table)
75   }
76   __text_end__ = __text_start__ + SIZEOF(.text);
77
78   . = ASSERT(__text_end__ >= __FLASH_segment_start__ && __text_end__ <= (__FLASH_segment_start__ + 0x00080000) , "error: .text is too large to fit in FLASH memory segment");
79
80   __dtors_load_start__ = ALIGN(__text_end__ , 4);
81   .dtors ALIGN(__text_end__ , 4) :
82   {
83     __dtors_start__ = .;
84     KEEP (*(SORT(.dtors.*))) KEEP (*(.dtors))
85   }
86   __dtors_end__ = __dtors_start__ + SIZEOF(.dtors);
87
88   . = ASSERT(__dtors_end__ >= __FLASH_segment_start__ && __dtors_end__ <= (__FLASH_segment_start__ + 0x00080000) , "error: .dtors is too large to fit in FLASH memory segment");
89
90   __ctors_load_start__ = ALIGN(__dtors_end__ , 4);
91   .ctors ALIGN(__dtors_end__ , 4) :
92   {
93     __ctors_start__ = .;
94     KEEP (*(SORT(.ctors.*))) KEEP (*(.ctors))
95   }
96   __ctors_end__ = __ctors_start__ + SIZEOF(.ctors);
97
98   . = ASSERT(__ctors_end__ >= __FLASH_segment_start__ && __ctors_end__ <= (__FLASH_segment_start__ + 0x00080000) , "error: .ctors is too large to fit in FLASH memory segment");
99
100   __rodata_load_start__ = ALIGN(__ctors_end__ , 4);
101   .rodata ALIGN(__ctors_end__ , 4) :
102   {
103     __rodata_start__ = .;
104     *(.rodata .rodata.* .gnu.linkonce.r.*)
105   }
106   __rodata_end__ = __rodata_start__ + SIZEOF(.rodata);
107
108   . = ASSERT(__rodata_end__ >= __FLASH_segment_start__ && __rodata_end__ <= (__FLASH_segment_start__ + 0x00080000) , "error: .rodata is too large to fit in FLASH memory segment");
109
110   __fast_load_start__ = ALIGN(__rodata_end__ , 4);
111   .fast ALIGN(__vectors_ram_end__ , 4) : AT(ALIGN(__rodata_end__ , 4))
112   {
113     __fast_start__ = .;
114     *(.fast .fast.*)
115   }
116   __fast_end__ = __fast_start__ + SIZEOF(.fast);
117
118   __fast_load_end__ = __fast_load_start__ + SIZEOF(.fast);
119
120   . = ASSERT((__fast_load_start__ + SIZEOF(.fast)) >= __FLASH_segment_start__ && (__fast_load_start__ + SIZEOF(.fast)) <= (__FLASH_segment_start__ + 0x00080000) , "error: .fast is too large to fit in FLASH memory segment");
121
122   .fast_run ALIGN(__vectors_ram_end__ , 4) (NOLOAD) :
123   {
124     __fast_run_start__ = .;
125     . = MAX(__fast_run_start__ + SIZEOF(.fast), .);
126   }
127   __fast_run_end__ = __fast_run_start__ + SIZEOF(.fast_run);
128
129   . = ASSERT(__fast_run_end__ >= __SRAM_segment_start__ && __fast_run_end__ <= (__SRAM_segment_start__ + 0x00008000) , "error: .fast_run is too large to fit in SRAM memory segment");
130
131   __data_load_start__ = ALIGN(__fast_load_start__ + SIZEOF(.fast) , 4);
132   .data ALIGN(__fast_run_end__ , 4) : AT(ALIGN(__fast_load_start__ + SIZEOF(.fast) , 4))
133   {
134     __data_start__ = .;
135     *(.data .data.* .gnu.linkonce.d.*)
136   }
137   __data_end__ = __data_start__ + SIZEOF(.data);
138
139   __data_load_end__ = __data_load_start__ + SIZEOF(.data);
140
141   __FLASH_segment_used_end__ = ALIGN(__fast_load_start__ + SIZEOF(.fast) , 4) + SIZEOF(.data);
142
143   . = ASSERT((__data_load_start__ + SIZEOF(.data)) >= __FLASH_segment_start__ && (__data_load_start__ + SIZEOF(.data)) <= (__FLASH_segment_start__ + 0x00080000) , "error: .data is too large to fit in FLASH memory segment");
144
145   .data_run ALIGN(__fast_run_end__ , 4) (NOLOAD) :
146   {
147     __data_run_start__ = .;
148     . = MAX(__data_run_start__ + SIZEOF(.data), .);
149   }
150   __data_run_end__ = __data_run_start__ + SIZEOF(.data_run);
151
152   . = ASSERT(__data_run_end__ >= __SRAM_segment_start__ && __data_run_end__ <= (__SRAM_segment_start__ + 0x00008000) , "error: .data_run is too large to fit in SRAM memory segment");
153
154   __bss_load_start__ = ALIGN(__data_run_end__ , 4);
155   .bss ALIGN(__data_run_end__ , 4) (NOLOAD) :
156   {
157     __bss_start__ = .;
158     *(.bss .bss.* .gnu.linkonce.b.*) *(COMMON)
159   }
160   __bss_end__ = __bss_start__ + SIZEOF(.bss);
161
162   . = ASSERT(__bss_end__ >= __SRAM_segment_start__ && __bss_end__ <= (__SRAM_segment_start__ + 0x00008000) , "error: .bss is too large to fit in SRAM memory segment");
163
164   __non_init_load_start__ = ALIGN(__bss_end__ , 4);
165   .non_init ALIGN(__bss_end__ , 4) (NOLOAD) :
166   {
167     __non_init_start__ = .;
168     *(.non_init .non_init.*)
169   }
170   __non_init_end__ = __non_init_start__ + SIZEOF(.non_init);
171
172   . = ASSERT(__non_init_end__ >= __SRAM_segment_start__ && __non_init_end__ <= (__SRAM_segment_start__ + 0x00008000) , "error: .non_init is too large to fit in SRAM memory segment");
173
174   __heap_load_start__ = ALIGN(__non_init_end__ , 4);
175   .heap ALIGN(__non_init_end__ , 4) (NOLOAD) :
176   {
177     __heap_start__ = .;
178     *(.heap)
179     . = ALIGN(MAX(__heap_start__ + __HEAPSIZE__ , .), 4);
180   }
181   __heap_end__ = __heap_start__ + SIZEOF(.heap);
182
183   . = ASSERT(__heap_end__ >= __SRAM_segment_start__ && __heap_end__ <= (__SRAM_segment_start__ + 0x00008000) , "error: .heap is too large to fit in SRAM memory segment");
184
185   __stack_load_start__ = ALIGN(__heap_end__ , 4);
186   .stack ALIGN(__heap_end__ , 4) (NOLOAD) :
187   {
188     __stack_start__ = .;
189     *(.stack)
190     . = ALIGN(MAX(__stack_start__ + __STACKSIZE__ , .), 4);
191   }
192   __stack_end__ = __stack_start__ + SIZEOF(.stack);
193
194   . = ASSERT(__stack_end__ >= __SRAM_segment_start__ && __stack_end__ <= (__SRAM_segment_start__ + 0x00008000) , "error: .stack is too large to fit in SRAM memory segment");
195
196   __stack_irq_load_start__ = ALIGN(__stack_end__ , 4);
197   .stack_irq ALIGN(__stack_end__ , 4) (NOLOAD) :
198   {
199     __stack_irq_start__ = .;
200     *(.stack_irq)
201     . = ALIGN(MAX(__stack_irq_start__ + __STACKSIZE_IRQ__ , .), 4);
202   }
203   __stack_irq_end__ = __stack_irq_start__ + SIZEOF(.stack_irq);
204
205   . = ASSERT(__stack_irq_end__ >= __SRAM_segment_start__ && __stack_irq_end__ <= (__SRAM_segment_start__ + 0x00008000) , "error: .stack_irq is too large to fit in SRAM memory segment");
206
207   __stack_fiq_load_start__ = ALIGN(__stack_irq_end__ , 4);
208   .stack_fiq ALIGN(__stack_irq_end__ , 4) (NOLOAD) :
209   {
210     __stack_fiq_start__ = .;
211     *(.stack_fiq)
212     . = ALIGN(MAX(__stack_fiq_start__ + __STACKSIZE_FIQ__ , .), 4);
213   }
214   __stack_fiq_end__ = __stack_fiq_start__ + SIZEOF(.stack_fiq);
215
216   . = ASSERT(__stack_fiq_end__ >= __SRAM_segment_start__ && __stack_fiq_end__ <= (__SRAM_segment_start__ + 0x00008000) , "error: .stack_fiq is too large to fit in SRAM memory segment");
217
218   __stack_svc_load_start__ = ALIGN(__stack_fiq_end__ , 4);
219   .stack_svc ALIGN(__stack_fiq_end__ , 4) (NOLOAD) :
220   {
221     __stack_svc_start__ = .;
222     *(.stack_svc)
223     . = ALIGN(MAX(__stack_svc_start__ + __STACKSIZE_SVC__ , .), 4);
224   }
225   __stack_svc_end__ = __stack_svc_start__ + SIZEOF(.stack_svc);
226
227   . = ASSERT(__stack_svc_end__ >= __SRAM_segment_start__ && __stack_svc_end__ <= (__SRAM_segment_start__ + 0x00008000) , "error: .stack_svc is too large to fit in SRAM memory segment");
228
229   __stack_abt_load_start__ = ALIGN(__stack_svc_end__ , 4);
230   .stack_abt ALIGN(__stack_svc_end__ , 4) (NOLOAD) :
231   {
232     __stack_abt_start__ = .;
233     *(.stack_abt)
234     . = ALIGN(MAX(__stack_abt_start__ + __STACKSIZE_ABT__ , .), 4);
235   }
236   __stack_abt_end__ = __stack_abt_start__ + SIZEOF(.stack_abt);
237
238   . = ASSERT(__stack_abt_end__ >= __SRAM_segment_start__ && __stack_abt_end__ <= (__SRAM_segment_start__ + 0x00008000) , "error: .stack_abt is too large to fit in SRAM memory segment");
239
240   __stack_und_load_start__ = ALIGN(__stack_abt_end__ , 4);
241   .stack_und ALIGN(__stack_abt_end__ , 4) (NOLOAD) :
242   {
243     __stack_und_start__ = .;
244     *(.stack_und)
245     . = ALIGN(MAX(__stack_und_start__ + __STACKSIZE_UND__ , .), 4);
246   }
247   __stack_und_end__ = __stack_und_start__ + SIZEOF(.stack_und);
248
249   __SRAM_segment_used_end__ = ALIGN(__stack_abt_end__ , 4) + SIZEOF(.stack_und);
250
251   . = ASSERT(__stack_und_end__ >= __SRAM_segment_start__ && __stack_und_end__ <= (__SRAM_segment_start__ + 0x00008000) , "error: .stack_und is too large to fit in SRAM memory segment");
252
253 }
254
Note: See TracBrowser for help on using the browser.